165 static constexpr uint8_t
kChg = 1u << 0;
166 static constexpr uint8_t
kSw1 = 1u << 1;
167 static constexpr uint8_t
kSw2 = 1u << 2;
168 static constexpr uint8_t
kSw3 = 1u << 3;
169 static constexpr uint8_t
kLdo = 1u << 4;
170 static constexpr uint8_t
kOnKey = 1u << 5;
171 static constexpr uint8_t
kTemp = 1u << 6;
172 static constexpr uint8_t
kMisc = 1u << 7;
182 static constexpr uint8_t
kSw1Ls = 1u << 0;
183 static constexpr uint8_t
kSw2Ls = 1u << 1;
184 static constexpr uint8_t
kSw3Ls = 1u << 2;
190 static constexpr uint8_t
kSw1Hs = 1u << 0;
191 static constexpr uint8_t
kSw2Hs = 1u << 1;
192 static constexpr uint8_t
kSw3Hs = 1u << 2;
212 static constexpr uint8_t
kPwrUp = 1u << 0;
213 static constexpr uint8_t
kPwrDn = 1u << 1;
214 static constexpr uint8_t
kPwrOn = 1u << 2;
220 [[deprecated(
"MISC_INT_STAT0 has no WDI bit (Table 108)")]]
static constexpr uint8_t
kWdiAssert = 0;
222 [[deprecated(
"MISC_INT_STAT0 has no RESETBMCU bit (Table 108)")]]
static constexpr uint8_t
kResetBmcu = 0;
293 static constexpr uint8_t
kEn = 1u << 0;
295 static constexpr uint8_t
kOMode = 1u << 2;
296 static constexpr uint8_t
kLpwr = 1u << 3;
299 static constexpr uint8_t
kFpwm = 1u << 6;
307 static constexpr uint8_t
kEn = 1u << 0;
309 static constexpr uint8_t
kOMode = 1u << 2;
310 static constexpr uint8_t
kLpwr = 1u << 3;
311 static constexpr uint8_t
kLsEn = 1u << 4;
Register
Symbolic register addresses used by the PF1550 driver.
Definition pf1550_registers.hpp:51
@ Sw1PwrDnSeq
SW1_PWRDN_SEQ.
@ MiscIntSense0
MISC_INT_SENSE0.
@ ChgSense
CHG_SNS — Table 154. Charger mode (precharge, fast-cc, fast-cv, eoc …).
@ SwIntStat1
SW_INT_STAT1 — high-side current limits.
@ Ldo1PwrDnSeq
LDO1_PWRDN_SEQ.
@ OnKeyIntMask0
ONKEY_INT_MASK0.
@ VrefDdrPwrDnSeq
VREFDDR_PWRDN_SEQ.
@ LdoIntStat0
LDO_INT_STAT0 — Table 99. LDO1/2/3 current-limit faults.
@ Sw3Ctrl1
SW3_CTRL1 — Table 126. SW3_ILIM[1:0] + SW3_TMODE_SEL (Portenta writes 0x02 = 1.5 A typical).
@ MiscIntStat0
MISC_INT_STAT0 — Table 108. PWRON / VSYS / RESETBMCU events.
@ PwrCtrl1
PWRCTRL1 — PWRONDBNC, ONKEYDBNC, PWRONRSTEN, RESTARTEN, REGSCPEN.
@ Sw2SlpVolt
SW2_SLP_VOLT.
@ Sw1SlpVolt
SW1_SLP_VOLT — SLEEP-mode voltage.
@ PwrCtrl3
PWRCTRL3 — sequence delay etc.
@ PwrCtrl2
PWRCTRL2 — WDI_EN, WDI_POL etc.
@ SwIntStat2
SW_INT_STAT2 — DVS done.
@ Sw2Ctrl1
SW2_CTRL1 — SW2_ILIM[1:0].
@ Sw2StbyVolt
SW2_STBY_VOLT.
@ SwIntSense0
SW_INT_SENSE0.
@ FmrData
FRMDATA — OTP indirect data.
@ Ldo2PwrDnSeq
LDO2_PWRDN_SEQ.
@ Sw2PwrDnSeq
SW2_PWRDN_SEQ.
@ Sw3SlpVolt
SW3_SLP_VOLT.
@ LdoIntMask0
LDO_INT_MASK0.
@ Sw2Volt
SW2_VOLT — Table 117.
@ PwrCtrl0
PWRCTRL0 — STANDBYDLY, STANDBYINV, POR_DLY, TGRESET.
@ FmrAddr
FMRADDR — OTP indirect address.
@ SwIntStat0
SW_INT_STAT0 — low-side current limits (SW1/2/3).
@ TempIntMask0
TEMP_INT_MASK0.
@ StateInfo
STATE_INFO — Table 146. STATE[5:0] = Wait/RUN/STANDBY/SLEEP/REGS_DISABLE.
@ LdoIntSense0
LDO_INT_SENSE0.
@ Sw2Ctrl
SW2_CTRL — Table 120.
@ Sw3Volt
SW3_VOLT — Table 122.
@ Sw1StbyVolt
SW1_STBY_VOLT — STANDBY-mode voltage.
@ ChgIntMask
CHG_INT_MASK.
@ CoinCellCtrl
COINCELL_CONTROL — Table 111. LICELL charging configuration.
@ SwIntMask2
SW_INT_MASK2.
@ I2cAddrReg
I2C_ADDR — Table 147 (read-only, OTP-driven).
@ OnKeyIntSense0
ONKEY_INT_SENSE0.
@ Ldo3PwrDnSeq
LDO3_PWRDN_SEQ.
@ OtpFlavor
OTP_FLAVOR — Table 87. 0x00 = OTP not burned (A0EP).
@ ChgInt
CHG_INT — Table 150. SUP_I/BAT2SOC_I/CHGREV_I/CHG_I.
@ Sw1Ctrl
SW1_CTRL — EN/STBY_EN/OMODE/LPWR/DVSSPEED/FPWM/RDIS_ENB.
@ SwIntMask0
SW_INT_MASK0.
@ TestRegKey3
TEST_REG_KEY3 — third OTP unlock key (write 0xAB).
@ ChgIntOk
CHG_INT_OK — Table 152. CHG_OK, BATT_OK, VBUS_OK.
@ Sw3StbyVolt
SW3_STBY_VOLT.
@ Sw3PwrDnSeq
SW3_PWRDN_SEQ.
@ TempIntSense0
TEMP_INT_SENSE0.
@ VrefDdrCtrl
VREFDDR_CTRL — Table 128. DDR reference (unused on Portenta).
@ SwIntSense1
SW_INT_SENSE1.
@ IntCategory
INT_CATEGORY — Table 89. CHG/SW1/SW2/SW3/LDO/ONKEY/TEMP/MISC summary.
@ Sw1Volt
SW1_VOLT — RUN-mode voltage code (Table 31).
@ ChargerLedCtrl
LED_CNFG — Table 172. LEDOVRD, LED_CFG, current, frequency (Portenta writes 0x20).
@ ChargerLedDuty
LED_PWM — Table 170. LED_EN, LED_RAMP, LED_PWM[5:0] duty (Portenta writes 0x80).
@ SiliconRev
SILICON_REV — Table 88. Metal/full-layer/fab-fin identifiers.
@ DeviceId
DEVICE_ID — Table 86. Bits[2:0] = family, [7:3] = 01111 for PF1550.
@ Ldo2Ctrl
LDO2_CTRL — must be written last in Portenta profile.
@ OtpKey2
KEY2 unlock (write 0x50).
@ OnKeyIntStat0
ONKEY_INT_STAT0 — Table 105. Push / 1s/2s/3s/4s/8s long-press.
@ VbusSns
VBUS_SNS — Table 153. VBUS_VALID, DPM_SNS, OVLO, UVLO.
@ SwIntSense2
SW_INT_SENSE2.
@ OtpKey1
KEY1 unlock (write 0x15).
@ VsnvsCtrl
VSNVS_CTRL — Table 127. RTC/SNVS backup LDO control.
@ TempIntStat0
TEMP_INT_STAT0 — Table 102. Junction-temperature events.
@ VbusInCurrentLimit
VBUS input current limit ((mA/50) << 3 — Portenta uses 1500 mA → 0xA0).
@ MiscIntMask0
MISC_INT_MASK0.
@ Rc16Mhz
RC_16MHZ — 16 MHz clock force, analog core overrides.
@ SwIntMask1
SW_INT_MASK1.
@ Sw1Ctrl1
SW1_CTRL1 — SW1_ILIM[1:0] current limit + TMODE_SEL.
LdoVoltageCode
Common LDO output voltage codes used on Portenta H7 (Table 41).
Definition pf1550_registers.hpp:274
@ V1_8
1.800 V (LDO2 — code 0)
constexpr uint8_t kExpectedDeviceId
Expected DEVICE_ID[2:0] family identifier (PF1550 family = 100b).
Definition pf1550_registers.hpp:35
constexpr uint8_t kDefaultI2cAddress
Default 7-bit I²C slave address (settable via OTP — see Table 147).
Definition pf1550_registers.hpp:32
PmicState
STATE_INFO[5:0] values (Reg 0x67) describing the PMIC state machine.
Definition pf1550_registers.hpp:226
@ Wait
Wait / start-up before regulators are sequenced.
@ RegsDisable
REGS_DISABLE — all regulators off (post PWRON long-press).
@ Sleep
SLEEP / LPSR — minimal regulators.
constexpr uint16_t kVsnvsMillivolts
VSNVS output voltage: fixed 3.0 V (VSNVS_CTRL has no voltage field, Table 127).
Definition pf1550_registers.hpp:38
ChargerState
CHG_SNS[3:0] values (Reg 0x87) describing the charger sub-state.
Definition pf1550_registers.hpp:236
@ LinearOnly
Linear-only mode, no charge.
@ TempShutdown
Off because TJ > TSHDN.
@ FastCC
Fast-charge constant-current.
@ ThermSuspend
Thermistor suspend.
@ PreCharge
Precharge mode (V_BATT < V_PRECHG.LB).
@ EndOfCharge
End-of-charge (I_BAT = I_EOC).
@ Off
Input invalid or charger disabled.
@ BatteryOv
Battery overvoltage.
@ Done
Done — battery full.
@ FastCV
Fast-charge constant-voltage.
SwVoltageCode
Common SW buck output voltage codes (RUN mode).
Definition pf1550_registers.hpp:265
@ V1_1
1.100 V (datasheet base)
@ V3_1
SW3 Table 37 code for 3.100 V (SW3 is OTP-loaded, read-only; SW1/SW2 decode 0x0D as 3....
@ V3_0
3.000 V (SW1 RUN on Portenta carrier profile)
@ V2_5
2.500 V (Portenta STBY/SLP setting)
@ V3_3
3.300 V (SW2 RUN on Portenta — carrier +3V3)
constexpr uint8_t kChargerPageBase
Base offset for Section 12.2 charger sub-page (see datasheet §12.2).
Definition pf1550_registers.hpp:41
Bit positions within INT_CATEGORY (Reg 0x06).
Definition pf1550_registers.hpp:164
static constexpr uint8_t kSw2
SW2_INT — SW2 fault interrupt.
Definition pf1550_registers.hpp:167
static constexpr uint8_t kSw1
SW1_INT — SW1 fault interrupt.
Definition pf1550_registers.hpp:166
static constexpr uint8_t kChg
CHG_INT — any charger interrupt pending.
Definition pf1550_registers.hpp:165
static constexpr uint8_t kLdo
LDO_INT — any LDO fault.
Definition pf1550_registers.hpp:169
static constexpr uint8_t kMisc
MISC_INT — PWRON / RESETBMCU / VSYS / WDI.
Definition pf1550_registers.hpp:172
static constexpr uint8_t kTemp
TEMP_INT — die temperature events.
Definition pf1550_registers.hpp:171
static constexpr uint8_t kOnKey
ONKEY_INT — push-button events.
Definition pf1550_registers.hpp:170
static constexpr uint8_t kSw3
SW3_INT — SW3 fault interrupt.
Definition pf1550_registers.hpp:168
Bit positions within LDOn_CTRL (0x4D / 0x50 / 0x53).
Definition pf1550_registers.hpp:306
static constexpr uint8_t kEn
VLDO_EN — enable in RUN.
Definition pf1550_registers.hpp:307
static constexpr uint8_t kLpwr
VLDO_LPWR — low-power in STBY/SLP.
Definition pf1550_registers.hpp:310
static constexpr uint8_t kLsEn
LDOn_LS_EN — load-switch mode (irreversible 0→1).
Definition pf1550_registers.hpp:311
static constexpr uint8_t kStbyEn
VLDO_STBY_EN — enable in STANDBY.
Definition pf1550_registers.hpp:308
static constexpr uint8_t kOMode
VLDO_OMODE — enable in SLEEP.
Definition pf1550_registers.hpp:309
Bit positions within LDO_INT_STAT0 (Reg 0x18) — LDO current-limit faults.
Definition pf1550_registers.hpp:196
static constexpr uint8_t kLdo3Fault
LDO3 fault.
Definition pf1550_registers.hpp:199
static constexpr uint8_t kLdo2Fault
LDO2 fault.
Definition pf1550_registers.hpp:198
static constexpr uint8_t kLdo1Fault
LDO1 fault.
Definition pf1550_registers.hpp:197
Bit positions within MISC_INT_STAT0 (Reg 0x28, Table 108). Bits 7:5 are unused.
Definition pf1550_registers.hpp:211
static constexpr uint8_t kLowSysWarn
LOW_SYS_WARN_I — VSYS crossed the LOW_SYS_WARN threshold.
Definition pf1550_registers.hpp:215
static constexpr uint8_t kSysOvlo
SYS_OVLO_I — VSYS crossed the SYS_OVLO threshold.
Definition pf1550_registers.hpp:216
static constexpr uint8_t kResetBmcu
The PF1550 has no RESETBMCU interrupt bit; kept (as 0, never matches) for source compatibility.
Definition pf1550_registers.hpp:222
static constexpr uint8_t kPwrUp
PWRUP_I — STANDBY/SLEEP to RUN transition finished.
Definition pf1550_registers.hpp:212
static constexpr uint8_t kVsysOv
Definition pf1550_registers.hpp:218
static constexpr uint8_t kWdiAssert
The PF1550 has no WDI interrupt bit; kept (as 0, never matches) for source compatibility.
Definition pf1550_registers.hpp:220
static constexpr uint8_t kVsysLow
Alias of kLowSysWarn.
Definition pf1550_registers.hpp:217
static constexpr uint8_t kPwrDn
PWRDN_I — RUN to STANDBY/SLEEP transition finished.
Definition pf1550_registers.hpp:213
static constexpr uint8_t kPwrOn
PWRON_I — power-on button event.
Definition pf1550_registers.hpp:214
OTP memory indirect address range (via FMRADDR/FMRDATA).
Definition pf1550_registers.hpp:325
static constexpr uint8_t kEndExclusive
One past the last OTP byte address.
Definition pf1550_registers.hpp:327
static constexpr uint8_t kStart
First OTP byte address.
Definition pf1550_registers.hpp:326
OTP indirect-read unlock sequence (Section 12.x KEY1 / KEY2 / KEY3).
Definition pf1550_registers.hpp:315
static constexpr uint8_t kKey3Val
Definition pf1550_registers.hpp:321
static constexpr uint8_t kKey2Reg
Definition pf1550_registers.hpp:318
static constexpr uint8_t kKey1Val
Definition pf1550_registers.hpp:317
static constexpr uint8_t kKey1Reg
Definition pf1550_registers.hpp:316
static constexpr uint8_t kKey3Reg
Definition pf1550_registers.hpp:320
static constexpr uint8_t kKey2Val
Definition pf1550_registers.hpp:319
Bit positions within SWn_CTRL (e.g. 0x35 / 0x3B / 0x41).
Definition pf1550_registers.hpp:292
static constexpr uint8_t kStbyEn
SW_STBY_EN — enable in STANDBY.
Definition pf1550_registers.hpp:294
static constexpr uint8_t kFpwmInDvs
SW_FPWM_IN_DVS — CCM during DVS-down.
Definition pf1550_registers.hpp:298
static constexpr uint8_t kLpwr
SW_LPWR — low-power during STBY/SLP.
Definition pf1550_registers.hpp:296
static constexpr uint8_t kOMode
SW_OMODE — enable in SLEEP.
Definition pf1550_registers.hpp:295
static constexpr uint8_t kEn
SW_EN — enable in RUN.
Definition pf1550_registers.hpp:293
static constexpr uint8_t kFpwm
SW_FPWM — force CCM.
Definition pf1550_registers.hpp:299
static constexpr uint8_t kDvsSpeed
SW_DVSSPEED — slow DVS slew.
Definition pf1550_registers.hpp:297
static constexpr uint8_t kRdisEnb
SW_RDIS_ENB — disable discharge resistor.
Definition pf1550_registers.hpp:300
Bit positions within SW_INT_STAT0 (Reg 0x08) — low-side current-limit faults.
Definition pf1550_registers.hpp:181
static constexpr uint8_t kSw3Ls
SW3_LS_I — SW3 low-side current limit.
Definition pf1550_registers.hpp:184
static constexpr uint8_t kSw2Ls
SW2_LS_I — SW2 low-side current limit.
Definition pf1550_registers.hpp:183
static constexpr uint8_t kSw1Ls
SW1_LS_I — SW1 low-side current limit (Table 90).
Definition pf1550_registers.hpp:182
Bit positions within SW_INT_STAT1 (Reg 0x0B, Table 93) — high-side current-limit faults....
Definition pf1550_registers.hpp:189
static constexpr uint8_t kSw2Hs
SW2_HS_I — SW2 high-side current limit.
Definition pf1550_registers.hpp:191
static constexpr uint8_t kSw1Hs
SW1_HS_I — SW1 high-side current limit.
Definition pf1550_registers.hpp:190
static constexpr uint8_t kSw3Hs
SW3_HS_I — SW3 high-side current limit.
Definition pf1550_registers.hpp:192
Bit positions within TEMP_INT_STAT0 (Reg 0x20, Table 102). Bit 1 is unused.
Definition pf1550_registers.hpp:203
static constexpr uint8_t kTherm110
THERM110I — die temperature crossed 110 °C (either way).
Definition pf1550_registers.hpp:204
static constexpr uint8_t kTempShdn
Alias of kTherm125 (the chip has no separate shutdown bit).
Definition pf1550_registers.hpp:207
static constexpr uint8_t kTherm125
THERM125I — die temperature crossed 125 °C (either way).
Definition pf1550_registers.hpp:205
static constexpr uint8_t kTempWarn
Alias of kTherm110.
Definition pf1550_registers.hpp:206