PF1550 Driver
API reference
Loading...
Searching...
No Matches
Classes | Namespaces | Enumerations | Variables
pf1550_registers.hpp File Reference

NXP PF1550 family I2C register map, bit-field constants, and OTP keys. More...

#include <cstdint>
Include dependency graph for pf1550_registers.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pf1550::IntCategoryBits
 Bit positions within INT_CATEGORY (Reg 0x06). More...
 
struct  pf1550::SwIntStat0Bits
 Bit positions within SW_INT_STAT0 (Reg 0x08) — low-side current-limit faults. More...
 
struct  pf1550::SwIntStat1Bits
 Bit positions within SW_INT_STAT1 (Reg 0x0B, Table 93) — high-side current-limit faults. SW_INT_SENSE1 (0x0D) uses the same layout. More...
 
struct  pf1550::LdoIntStat0Bits
 Bit positions within LDO_INT_STAT0 (Reg 0x18) — LDO current-limit faults. More...
 
struct  pf1550::TempIntStat0Bits
 Bit positions within TEMP_INT_STAT0 (Reg 0x20, Table 102). Bit 1 is unused. More...
 
struct  pf1550::MiscIntStat0Bits
 Bit positions within MISC_INT_STAT0 (Reg 0x28, Table 108). Bits 7:5 are unused. More...
 
struct  pf1550::SwCtrlBits
 Bit positions within SWn_CTRL (e.g. 0x35 / 0x3B / 0x41). More...
 
struct  pf1550::LdoCtrlBits
 Bit positions within LDOn_CTRL (0x4D / 0x50 / 0x53). More...
 
struct  pf1550::OtpUnlockKeys
 OTP indirect-read unlock sequence (Section 12.x KEY1 / KEY2 / KEY3). More...
 
struct  pf1550::OtpRegion
 OTP memory indirect address range (via FMRADDR/FMRDATA). More...
 

Namespaces

namespace  pf1550
 

Enumerations

enum class  pf1550::Register : uint8_t {
  pf1550::DeviceId = 0x00 , pf1550::OtpFlavor = 0x01 , pf1550::SiliconRev = 0x02 , pf1550::IntCategory = 0x06 ,
  pf1550::SwIntStat0 = 0x08 , pf1550::SwIntMask0 = 0x09 , pf1550::SwIntSense0 = 0x0A , pf1550::SwIntStat1 = 0x0B ,
  pf1550::SwIntMask1 = 0x0C , pf1550::SwIntSense1 = 0x0D , pf1550::SwIntStat2 = 0x0E , pf1550::SwIntMask2 = 0x0F ,
  pf1550::SwIntSense2 = 0x10 , pf1550::LdoIntStat0 = 0x18 , pf1550::LdoIntMask0 = 0x19 , pf1550::LdoIntSense0 = 0x1A ,
  pf1550::TempIntStat0 = 0x20 , pf1550::TempIntMask0 = 0x21 , pf1550::TempIntSense0 = 0x22 , pf1550::OnKeyIntStat0 = 0x24 ,
  pf1550::OnKeyIntMask0 = 0x25 , pf1550::OnKeyIntSense0 = 0x26 , pf1550::MiscIntStat0 = 0x28 , pf1550::MiscIntMask0 = 0x29 ,
  pf1550::MiscIntSense0 = 0x2A , pf1550::CoinCellCtrl = 0x30 , pf1550::Sw1Volt = 0x32 , pf1550::Sw1StbyVolt = 0x33 ,
  pf1550::Sw1SlpVolt = 0x34 , pf1550::Sw1Ctrl = 0x35 , pf1550::Sw1Ctrl1 = 0x36 , pf1550::Sw2Volt = 0x38 ,
  pf1550::Sw2StbyVolt = 0x39 , pf1550::Sw2SlpVolt = 0x3A , pf1550::Sw2Ctrl = 0x3B , pf1550::Sw2Ctrl1 = 0x3C ,
  pf1550::Sw3Volt = 0x3E , pf1550::Sw3StbyVolt = 0x3F , pf1550::Sw3SlpVolt = 0x40 , pf1550::Sw3Ctrl = 0x41 ,
  pf1550::Sw3Ctrl1 = 0x42 , pf1550::VsnvsCtrl = 0x48 , pf1550::VrefDdrCtrl = 0x4A , pf1550::Ldo1Volt = 0x4C ,
  pf1550::Ldo1Ctrl = 0x4D , pf1550::Ldo2Volt = 0x4F , pf1550::Ldo2Ctrl = 0x50 , pf1550::Ldo3Volt = 0x52 ,
  pf1550::Ldo3Ctrl = 0x53 , pf1550::PwrCtrl0 = 0x58 , pf1550::PwrCtrl1 = 0x59 , pf1550::PwrCtrl2 = 0x5A ,
  pf1550::PwrCtrl3 = 0x5B , pf1550::Sw1PwrDnSeq = 0x5F , pf1550::Sw2PwrDnSeq = 0x60 , pf1550::Sw3PwrDnSeq = 0x61 ,
  pf1550::Ldo1PwrDnSeq = 0x62 , pf1550::Ldo2PwrDnSeq = 0x63 , pf1550::Ldo3PwrDnSeq = 0x64 , pf1550::VrefDdrPwrDnSeq = 0x65 ,
  pf1550::StateInfo = 0x67 , pf1550::I2cAddrReg = 0x68 , pf1550::Rc16Mhz = 0x6B , pf1550::OtpKey1 = 0x6F ,
  pf1550::ChargerLedDuty = 0x9C , pf1550::OtpKey2 = 0x9F , pf1550::ChargerLedCtrl = 0x9E , pf1550::VbusInCurrentLimit = 0x94 ,
  pf1550::FmrAddr = 0xC4 , pf1550::FmrData = 0xC5 , pf1550::TestRegKey3 = 0xDF , pf1550::ChgInt = 0x80 ,
  pf1550::ChgIntMask = 0x82 , pf1550::ChgIntOk = 0x84 , pf1550::VbusSns = 0x86 , pf1550::ChgSense = 0x87
}
 Symbolic register addresses used by the PF1550 driver. More...
 
enum class  pf1550::PmicState : uint8_t {
  pf1550::Wait = 0b000000 , pf1550::Run = 0b001100 , pf1550::Standby = 0b001101 , pf1550::Sleep = 0b001110 ,
  pf1550::RegsDisable = 0b101011 , pf1550::Unknown = 0xFF
}
 STATE_INFO[5:0] values (Reg 0x67) describing the PMIC state machine. More...
 
enum class  pf1550::ChargerState : uint8_t {
  pf1550::PreCharge = 0 , pf1550::FastCC = 1 , pf1550::FastCV = 2 , pf1550::EndOfCharge = 3 ,
  pf1550::Done = 4 , pf1550::TimerFault = 6 , pf1550::ThermSuspend = 7 , pf1550::Off = 8 ,
  pf1550::BatteryOv = 9 , pf1550::TempShutdown = 10 , pf1550::LinearOnly = 12 , pf1550::Unknown = 0xFF
}
 CHG_SNS[3:0] values (Reg 0x87) describing the charger sub-state. More...
 
enum class  pf1550::SwVoltageCode : uint8_t {
  pf1550::V1_1 = 0x00 , pf1550::V2_5 = 0x05 , pf1550::V3_0 = 0x06 , pf1550::V3_3 = 0x07 ,
  pf1550::V3_1 = 0x0D
}
 Common SW buck output voltage codes (RUN mode). More...
 
enum class  pf1550::LdoVoltageCode : uint8_t { pf1550::V1_0 = 0x05 , pf1550::V1_2 = 0x09 , pf1550::V1_8 = 0x00 }
 Common LDO output voltage codes used on Portenta H7 (Table 41). More...
 

Variables

constexpr uint8_t pf1550::kDefaultI2cAddress = 0x08
 Default 7-bit I²C slave address (settable via OTP — see Table 147).
 
constexpr uint8_t pf1550::kExpectedDeviceId = 0x7C
 Expected DEVICE_ID[2:0] family identifier (PF1550 family = 100b).
 
constexpr uint16_t pf1550::kVsnvsMillivolts = 3000
 VSNVS output voltage: fixed 3.0 V (VSNVS_CTRL has no voltage field, Table 127).
 
constexpr uint8_t pf1550::kChargerPageBase = 0x80
 Base offset for Section 12.2 charger sub-page (see datasheet §12.2).
 

Detailed Description

NXP PF1550 family I2C register map, bit-field constants, and OTP keys.

Covers MC34PF1550*, MC32PF1550*, and the unprogrammed-OTP variant MC34PF1550A0EP used on Arduino Portenta H7 eval modules.

Register addresses follow the NXP PF1550 datasheet (Rev. 7, September 2021) Section 12 Register map:

Per-bit details are intentionally kept compact here; consult docs/datasheet/PF1550-i2c-register-reference.md (auto-generated extract of Section 12) for the authoritative bit semantics.

Versioning
Driver version exposed via HF_PF1550_VERSION (see pf1550_version.h).