Skip to main content
  • Created:
  • Updated:
  • Author:
    Takeshi Takatsudo

STUSB4500 NVM Programming Setup

The STUSB4500 requires NVM (non-volatile memory) programming to configure its USB-PD negotiation behavior. Factory defaults will negotiate 20V (not 15V), which would damage downstream circuits. This page documents the hardware setup, required NVM values, and schematic changes needed.

Why NVM Programming Is Required

The STUSB4500QTR ships from the factory with these default PDO profiles:

PDOVoltageCurrentPriority
PDO15V1.5ALowest (3rd)
PDO215V1.5AMiddle (2nd)
PDO320V1.0AHighest (1st)

Problems with Factory Defaults

  1. Wrong voltage: PDO3 (20V) has highest priority. With multi-voltage chargers (5V/9V/15V/20V), the IC negotiates 20V instead of 15V. This feeds 20V into DC-DC converters designed for 15V input.
  2. Insufficient current: Even when 15V is negotiated (charger lacks 20V), only 1.5A is requested. The design needs 3A.
  3. No power sequencing: POWER_ONLY_ABOVE_5V defaults to disabled, so VBUS_EN_SNK enables at 5V before PD negotiation completes. This exposes downstream circuits to voltage transitions.

Target NVM Configuration

PDOVoltageCurrentPriority
PDO15V1.5ALowest (3rd)
PDO215V3AHighest (1st)
PDO320V1.5ALowest (2nd)

Additional settings:

  • POWER_ONLY_ABOVE_5V = enabled (VBUS_EN_SNK only activates after 15V negotiation succeeds)
  • SNK_PDO_NUMB = 3 (advertise all 3 PDOs)
  • PDO2 priority set to highest

Hardware Required

Programming Tool: Pogo Pin Clip (4P, 2.54mm)

A spring-loaded pogo pin clip clamps onto the PCB edge and contacts bare copper pads for temporary I2C connection. No soldered header needed.

ItemDescriptionSourceApprox. Price
Pogo pin clip4P single-row, 2.54mm pitch, with dupont wiresAliExpress~410 JPY

Clip mechanical specs:

  • AliExpress item: 1005006108783889 (equivalent to Adafruit 5433 / The Pi Hut variant)
  • Max landing depth: 25 mm from board edge — the clip body cannot reach further inward
  • Recommended landing: 2–3 mm inward from the board edge — gives the clip body a lip to grip and centers the pogo tips on the pad
  • Minimum pad-to-edge clearance: 0.3 mm for JLCPCB manufacturing (0.5 mm is safer to avoid routing issues)

Only one board is needed. The STEVAL-ISC005V1 eval board is not required since we program the STUSB4500 on our own PCB.

ItemPartSourceApprox. Price
NUCLEO-F072RBSTM32 Nucleo boardDigiKey Japan~2,200 JPY
STSW-STUSB002Windows GUI softwareST WebsiteFree

The Nucleo board acts as a USB-to-I2C bridge when flashed with the included .bin firmware.

Connection:

Windows PC ─── USB ───→ NUCLEO-F072RB ─── pogo clip ───→ zudo-pd board edge pads
D15 (PB8) = SCL ────────────────→ J2 pad 1 (SCL)
D14 (PB9) = SDA ────────────────→ J2 pad 2 (SDA)
GND ────────────────────────────→ J2 pad 3 (GND)
(unused) ───────────────────────→ J2 pad 4 (NC)

The pogo clip's dupont wires connect to the Nucleo's D14, D15, and GND pins. The clip clamps onto the zudo-pd board edge where J2 pads are located.

The Nucleo I2C operates at 3.3V, compatible with STUSB4500's VREG_2V7 (2.7V) via open-drain I2C bus. No level shifter needed.

Why not STEVAL-ISC005V1?

The STEVAL-ISC005V1 (~7,000 JPY on DigiKey Japan) has its own STUSB4500 and USB-C connector. It's designed for evaluating the IC standalone. Since we have our own PCB with the STUSB4500 already soldered, we only need the Nucleo as an I2C bridge. The GUI documentation confirms it works with "evaluation board, or custom board containing STUSB device."

Option B: Arduino / MCU via I2C (Alternative)

If you already have a 3.3V Arduino or similar MCU board, the SparkFun STUSB4500 Arduino Library supports full NVM programming via write(). No Windows GUI needed.

Requirements:

  • Arduino or MCU board with 3.3V I2C (not 5V - would need level shifter)
  • SparkFun library installed
  • Connect SCL, SDA, GND to zudo-pd J2 pads via pogo clip

Schematic Changes for I2C Programming Pads

The v1 schematic has SCL (pin 7) and SDA (pin 8) as NC (not connected). These must be connected to edge pads with pull-up resistors for NVM programming.

New Components

RefPartLCSC / SourceValuePackagePurpose
J2Pogo pad 1x4No component (bare PCB pads)-Custom SMD padsI2C programming pads (board edge)
R15ResistorC231624.7kohm0603I2C SCL pull-up
R16ResistorC231624.7kohm0603I2C SDA pull-up
J2 Pogo Pads - No Assembly Cost

J2 is not a physical component - it is bare copper SMD pads on the PCB edge. No JLCPCB component or assembly fee is needed. The pogo pin clip (external tool) clamps onto these pads during programming. This saves ~$7 compared to a THT pin header (Extended part fee + hand-soldering fee).

KiCad Symbol and Footprint

ItemRecommendation
SymbolConnector_Generic:Conn_01x04 (built-in KiCad library)
FootprintCustom zudo-pd:PogoPad_1x04_P2.54mm (create in project footprint library)

Pad placement on PCB:

The 4 SMD pads sit in a single row. J2 must be placed at the PCB edge so the pogo clip can grip the board — see the PogoPad footprint design subsection below for the concrete pad/layer/silkscreen spec.

                    PCB edge
───────────────────────┐

○ SCL (pad 1) │ ← 2.54mm pitch
○ SDA (pad 2) │ bare copper pads
○ GND (pad 3) │ within ~10mm of edge
○ NC (pad 4) │

───────────────────────┘

PogoPad footprint design

The footprint PogoPad_1x04_P2.54mm records the concrete numbers used in the actual KiCad file:

PropertyValue
Pad shapeRectangular
Pad size1.5 mm × 2.5 mm
Pitch2.54 mm (0.1 inch)
LayersF.Cu + F.Mask only
F.PasteNot included

Why no solder paste (F.Paste)? Pogo pins contact bare copper directly — no solder joint is formed. Including F.Paste would deposit solder paste on these pads during SMT manufacturing, which would harden into a rough surface that prevents reliable pogo tip contact. JLCPCB also rejects paste on edge pads. Omitting F.Paste keeps the copper surface clean and exposed.

Silkscreen markings:

  • Pin labels: SCL, SDA, GND, NC (one per pad)
  • An edge-side line running parallel to the pad row, indicating the board edge
  • A <-- EDGE text marker placed outside the board outline (for placement orientation only — this gets cut off during PCB fabrication, which is intentional)

File locations in this repo:

  • footprints/kicad/PogoPad_1x04_P2.54mm.kicad_mod (master copy)
  • footprints/kicad/zudo-power.pretty/PogoPad_1x04_P2.54mm.kicad_mod (KiCad library path)

Both locations must exist and stay in sync. See footprints/CLAUDE.md for the dual-location rule and the workflow for keeping them in sync.

Circuit

                    VREG_2V7 (pin 23, 2.7V)

┌────┴────┐
│ │
R15 (4.7kΩ) R16 (4.7kΩ)
│ │
SCL (pin 7) ────────┤ │
│ │
SDA (pin 8) ────────┼─────────┤
│ │
J2 pad 1 J2 pad 2 J2 pad 3 J2 pad 4
(SCL) (SDA) (GND) (NC)
│ │ │ │
┌─────┴─────────┴────────────┴────────────┴──┐
│ J2 (Pogo Pads, 1x4, 2.54mm) │
│ Bare copper pads at board edge │
└────────────────────────────────────────────┘

Pull-ups connect to VREG_2V7 (2.7V) since this is the I2C bus voltage for the STUSB4500. The Nucleo's 3.3V I2C is compatible with 2.7V open-drain signaling.

Connection List

  • STUSB4500 SCL (pin 7)R15 (4.7kohm)VREG_2V7
  • STUSB4500 SCL (pin 7)J2 pad 1
  • STUSB4500 SDA (pin 8)R16 (4.7kohm)VREG_2V7
  • STUSB4500 SDA (pin 8)J2 pad 2
  • J2 pad 3GND
  • J2 pad 4NC (not connected)

Programming Procedure

Step 1: Flash the Nucleo Firmware

  1. Download STSW-STUSB002 from ST website
  2. Connect NUCLEO-F072RB to Windows PC via USB
  3. The Nucleo appears as a USB mass storage device
  4. Copy the included .bin file to the Nucleo drive
  5. The Nucleo LED blinks to confirm firmware is loaded

Step 2: Connect to zudo-pd Board

  1. Plug a USB-C PD charger into the zudo-pd USB-C connector (to power the STUSB4500 via VDD)
  2. Connect the pogo clip's dupont wires to the Nucleo:
  • Nucleo D15 (SCL) → pogo clip wire for pad 1
  • Nucleo D14 (SDA) → pogo clip wire for pad 2
  • Nucleo GND → pogo clip wire for pad 3
  1. Clamp the pogo clip onto the zudo-pd board edge, aligning the pogo pins with J2 pads
  2. The STUSB4500 should be detected at I2C address 0x28

Step 3: Program NVM

  1. Open STSW-STUSB002 GUI on Windows
  2. The GUI should show "STUSB 45 is Detected"
  3. Click "Read device NVM" to verify communication
  4. Configure PDO settings:
  • SNK_PDO_NUMB: 3
  • PDO1: 5V, 1.5A (mandatory)
  • PDO2: 15V, 3A (target - set highest priority)
  • PDO3: 20V, 1.5A (fallback)
  1. Enable POWER_ONLY_ABOVE_5V checkbox
  2. Click "Write device NVM"
  3. Check "Verify after write" to confirm

Step 4: Verify

  1. Remove the pogo clip from the board
  2. Reconnect the USB-C PD charger
  3. Measure VBUS_OUT with a multimeter - should read 15V
  4. Verify VBUS_EN_SNK behavior (should stay LOW at 5V, go HIGH only after 15V negotiation)

NVM Write Cycle Limit

The STUSB4500 NVM is rated for approximately 1,000 write cycles. Configure once during production. Do not write NVM repeatedly in normal operation.

Schematic Fix Checklist

  • Remove no-connect markers from SCL (pin 7) and SDA (pin 8)
  • Add R15 (4.7kohm, 0603) from SCL to VREG_2V7
  • Add R16 (4.7kohm, 0603) from SDA to VREG_2V7
  • Add J2 symbol (Connector_Generic:Conn_01x04) connected to SCL, SDA, GND, NC
  • Create custom footprint PogoPad_1x04_P2.54mm in zudo-pd library
  • Assign footprint to J2
  • Place J2 pads at board edge in PCB layout
  • Run DRC

References