Skip to content

Hardware

What to connect between your MCU and a PF1550, with which bus settings, and the electrical limits that matter to the host.

All values here come from the PF1550 data sheet (Rev. 7, 29 September 2021). The PF1550 is the power supply of the board it sits on: when a value here disagrees with your board's schematic, the schematic wins for pin connections and rail assignments.

Host interface pins

Pin Signal Direction and notes
2 SDA In / out, open drain; pull up to VDDIO
3 SCL In; pull up to VDDIO
4 VDDIO I/O supply, 1.7 V to 3.3 V: the logic level of every pin here
7 STANDBY In; asserted means STANDBY, polarity from STANDBYINV
9 INTB Out, open drain; low while an unmasked interrupt is pending
10 RESETBMCU Out, open drain; reset for the application processor
6 PWRON In; enable, level or edge sensitive (OTP)
8 ONKEY In; push button, press and long-press interrupts
1 WDI In; watchdog input from the processor

Every logic pin's absolute maximum is 3.6 V, ONKEY's 4.8 V. Connect VDDOTP (pin 5) to ground in the application.

Strap pins the driver drives

The driver addresses these by name (pf1550::CtrlPin) and by state (GpioSignal::Active / Inactive) through your port's GpioSet(). Only STANDBY is a PF1550 pin; the USB enables are board signals that the Portenta H7 routes next to it.

CtrlPin Signal Driver use
Standby PF1550 STANDBY; active = standby requested SetPowerMode(): Run drives it inactive, Standby active
UsbVbusEn Board VBUS switch enable; active = on SetUsbRails(vbus_en, otg_en)
UsbOtgEn Board OTG enable; active = on SetUsbRails(vbus_en, otg_en)
PmicInt PF1550 INTB (input) Declared for ports; the driver does not read it

With STANDBYINV = 0 (the reset value) a high STANDBY pin means standby, so a port maps Active to high. Both Portenta profiles write PWRCTRL0 = 0x03, which keeps STANDBYINV = 0.

Bus settings

Setting Value
Bus I2C, fast mode: up to 400 kHz
Address 7-bit 0x08 (kDefaultI2cAddress); OTP can select 0x08 to 0x0F (I2C_ADDR, register 0x68)
Addressing 7-bit only; no general call
Transfers One register per transfer: write [reg] [value], read [reg] then repeated START and one byte
Register pages PMIC registers 0x00 to 0x7F; charger registers at 0x80 + offset (for example CHG_SNS, offset 0x07, at 0x87)
Edges SCL and SDA rise and fall times must be over 20 ns; lower the master's drive strength if they are faster

The driver reads OTP through an indirect window: three unlock writes, a write of the OTP address to FMRADDR (0xC4), a 2 ms wait in the driver, then a read of FMRDATA (0xC5).

sequenceDiagram
    participant H as Host (driver)
    participant P as PF1550
    H->>P: write 0x6F = 0x15 (KEY1)
    H->>P: write 0x9F = 0x50 (KEY2)
    H->>P: write 0xDF = 0xAB (KEY3)
    H->>P: write 0xC4 = OTP address
    Note over H: DelayUs(2000)
    H->>P: read 0xC5
    P-->>H: OTP byte

Power

Supply Range Notes
VBUSIN 4.1 V to 6.0 V USB or adapter; lockout at 6.5 V typ.; withstands 22 V
VSYS 4.8 V max Regulator input, charger output
VBATT One Li-ion cell Charge 3.5 V to 4.44 V, 100 mA to 1000 mA
VDDIO 1.7 V to 3.3 V Your MCU's I/O voltage
Ambient −40 °C to 105 °C MC34 parts; MC32 parts to 85 °C

Rails

Rail Rating Range
SW1, SW2 1.0 A 0.6 V to 1.3875 V in 12.5 mV steps (DVS enabled), or eight set points from 1.1 V to 3.3 V (DVS disabled)
SW3 1.0 A 1.8 V to 3.3 V in 100 mV steps
LDO1, LDO3 300 mA 0.75 V to 1.5 V in 50 mV steps, 1.8 V to 3.3 V in 100 mV steps; load-switch mode
LDO2 400 mA 1.8 V to 3.3 V in 100 mV steps
VSNVS 2 mA 3.0 V, RTC / backup supply
VREFDDR 10 mA 0.5 V to 0.9 V, DDR reference

The buck current-limit setting (SWx_ILIM) is a typical limit of 1.0 A, 1.2 A, 1.5 A or 2.0 A. Rails and OTP has the code tables and the rules for writing them.

Parts

Part Temperature OTP
MC34PF1550A0EP −40 °C to 105 °C Not programmed: the host configures every rail (Arduino Portenta H7)
MC34PF1550A1EP to A9EP −40 °C to 105 °C Programmed for an i.MX processor and memory
MC32PF1550A0EP to A9EP −40 °C to 85 °C As above, consumer temperature range

All parts report DEVICE_ID 0x7C (family 01111, device 100). OTP_FLAVOR (register 0x01) reads 0x00 on an unprogrammed part.

Reference documents

Document What it is for
PF1550 data sheet Pins, electrical limits, state machine, OTP, register map (section 12)
Register map The registers the driver uses, with addresses and data-sheet tables
PF1550-i2c-register-reference.md Plain-text extract of section 12, regenerated by scripts/extract_register_reference.sh