zudo-led-lamp
GitHub repository

Type to search...

to open search from anywhere

Board P — Locked Spec and Net Table

The USB-PD front end as locked for the prototype build — adopted unchanged from the power-section audit, with the downstream connector pin assignment fixed and the ratings decision re-confirmed against Board L's actual load.

Board P is adopted unchanged from Board P — USB-PD Front End. This page locks it as a buildable spec: it restates the net table in the form KiCad capture will consume, fixes the JOUT1 pin assignment that Board L must mirror, and re-checks the audit's ratings conclusions against Board L's real (much smaller than worst-case) load.

Role

Negotiate a 15 V / 3 A USB-PD contract, gate it behind a load switch until the contract is live, and hand a switched 15 V rail plus two open-drain status flags to Board L. No lamp-specific behaviour lives here — it is a generic reusable sink module.

What this architecture pass changed

Nothing electrical. Three things were re-checked and confirmed, and one BOM optimisation was recommended here and has since been applied at KiCad capture:

  1. Load re-check. Board P was margined against the 3.0 A contract cap. Board L actually draws ~410 mA (see Power budget). Every current-dependent number on Board P — Q1 conduction loss and JOUT1 contact loading — improves by roughly 7x against the original analysis. No electrical limit needs changing.

  2. The conditioned clamp point propagates downstream. The exact D5/D10 SMAJ20A primary row gives VC max 32.4 V only at IPP 12.3 A for a 10/1000 µs waveform at 25 °C. Board L's input-facing parts were screened against that point, but both rail waveforms still require simulation and bench confirmation — see the driver input-rating decision.

  3. The 5 V-only first-power-up rule is a hard bring-up gate, not advice. It is restated in Next Steps.

BOM optimisation — applied at KiCad capture

Board P's C2 / C35 were originally 100 nF 50 V 0805(C1711), which is Extended tier at JLCPCB (¥470 one-time fee). The electrically identical 0603 partC14663 is Basic tier (12.6 M stock) and is what Board L uses. The swap removed one Extended line from Board P's order and shares a reel with Board L.

This is done. scripts/schgen/board_p_spec.py generates C2 and C35 asCC0603KRX7R9BB104 / C14663 on the zudo-led-lamp:C0603 footprint, andthe BOM records the swap as applied. Do not order C1711 for these pads.

Net-connectivity table

Adopted verbatim from the power-section audit. Reproduced here so the architecture section is self-contained for schematic capture. Reference designators are Board P's own.

NetConnected pins (Ref.Pin)Value / note
VBUS_INJ1.A9 J1.B9 U1.VDD C1.2 C2.2 R14.1 R11.2 Q1.S J3.4 D5.cathode C35.2Receptacle VBUS — 5 V pre-contract, 15 V post-contract. C1 10 µF, C2 100 nF. D5 cathode. C35's top plate — see the gate-network note below
CC1J1.A5 U1.CC1 R17.1(DNP) R19.2 D6.1(DNP)Plain copper connector-to-chip. R19 (0 Ω, fitted) bridges CC1DB
CC2J1.B5 U1.CC2 R18.1(DNP) R20.2 D7.1(DNP)Mirror of CC1
CC1DBU1.CC1DB R19.1 J3.1Dead-battery pin, bridged to CC1 per ST DS12499 §3.5
CC2DBU1.CC2DB R20.1 J3.2Mirror
VBUS_VS_DISCHU1.pin18 R14.2Pin-18 sense/discharge. R14 470 Ω series — must not be a divider
VBENU1.pin16 R12.1 J3.8Active-low open drain. R12 150 kΩ to the gate node
Q1_GQ1.G R11.1 R12.2 C35.1R11 100 kΩ pull-up to VBUS_IN (default OFF); C35 100 nF gate–source soft-start (other plate on VBUS_IN, not GND), τ = (R11∥R12)·C35 = 6.0 ms
VBUS_OUTQ1.D R13.1 JOUT1.1 JOUT1.2Switched 15 V, paired contacts
DISCHU1.DISCH R13.2R13 470 Ω system-side discharge
VREG_2V7U1.VREG_2V7 C30.2 R15.2 R16.2 J3.32.7 V internal regulator / I2C pull-up rail
VREG_1V2U1.VREG_1V2 C34.11.2 V digital-core regulator decoupling
SCLU1.SCL R15.1 J2.1NVM programming clock, 4.7 kΩ pull-up
SDAU1.SDA R16.1 J2.2NVM programming data, 4.7 kΩ pull-up
RESETU1.RESET R21.1 J2.4R21 10 kΩ pull-down keeps run state; J2.4 lets the programming jig assert a hardware reset if an NVM write leaves the I2C state wedged
ATTU1.ATTACH J3.6 JOUT1.3Cable-attached flag, open drain active-low, no on-board pull-up
PDOKU1.POWER_OK2 J3.7 JOUT1.4Live 15 V contract flag, open drain active-low, no on-board pull-up
GNDU1.GND U1.ADDR0 U1.ADDR1 U1.VSYS U1.EP J1.GND J1.SHELL C1.1 C2.1 C30.1 C34.2 R17.2(DNP) R18.2(DNP) R21.2 J2.3 J3.5 D5.anode D6.2(DNP) D7.2(DNP) JOUT1.5 JOUT1.6Common ground. U1.RESET is held low through R21 (run state). ADDR0/1 grounded → I2C 0x28. J1.SHELL is the receptacle's four shell pads (symbol pin 0), DC-bonded straight to GND — a deliberate choice, not an omission; there is no shell RC isolation network on this board
No-connectU1.NC U1.POWER_OK3 U1.GPIO U1.A_B_SIDE U1.ALERTLeft floating

JOUT1 pin assignment (locked)

Board L's J2 must mirror this exactly. Board P uses the XFCN PZ254V-11-06P male header (C492405), and Board L uses its XFCN PM254V-11-06-H85 female mate (C2832269). The pair mates directly; it is unkeyed, so both pin-1 marks and the installed board orientation must be verified before power.

PinNetDirection (from Board P)Board L destination
1VBUS_OUToutF1.1 (PPTC input)
2VBUS_OUToutF1.1 — paired contact, same net
3ATTout, open drainU3.PA7 via 10 kΩ pull-up to 3V3
4PDOKout, open drainU3.PA5 via 10 kΩ pull-up to 3V3
5GNDBoard L GND
6GNDBoard L GND — paired contact

PDOK is informational, not an interlock

Board L's 3.3 V rail only exists once Q1 has switched on, which only happens after PDOK asserts. So by the time the MCU can read PDOK, it is always already asserted. It is useful as a continuity and harness check (a PDOK line that reads de-asserted while the MCU is running means a broken wire, not a failed contract) and as a hook if a future revision powers Board L's logic ahead of the switch. The real gate on LED power is Q1 itself, in hardware. Do not present PDOK in firmware as if it were protecting anything.

ATT is wired to a GPIO purely because it is free — Board P already routes it to the connector, and an input pin costs nothing. Firmware does not act on it in v1.

Ratings, re-confirmed at Board L's real load

PartLimitAt 410 mA / 15 VVerdict
Q1 UMW AO3401A (exact C347476)30 V VDS abs max, ±12 V VGS abs max, 4.2 A, 65 mΩ max @ VGS −4.5 V / ID −4 AConservative 25 °C conduction estimate 0.41² × 0.065 = 10.9 mW; ideal steady VGS = −6.0 V (100k/150k divider)Nominal conduction is low, but temperature, PCB thermal path and the dynamic clamp waveform remain open. A 20 V mis-contract gives ideal steady VGS = −8.0 V; do not treat the 32.4 V clamp event as accepted without waveform/duration analysis
JOUT1/J2 XFCN header pair3 A/contact, 250 V205 mA per paired contact at the 410 mA Board L loadPass electrically, 14x nameplate margin; direct-board alignment and polarity remain a layout/bench gate
U1 STUSB4500 VDDRev 8 mirror states 28 V abs max, 22 V operating15 VNominal conditioned check passes; primary trust and transient waveform remain an EVIDENCE BLOCKER (UNSOURCED)
J1 receptacle C283540Primary Rev A drawing: 20 V, 5 A15 V, 0.41 ARating check has margin; numeric pin/shell mapping and incoming continuity remain an evidence gate

The U1/Q1 transient envelope remains open in the ratings matrix. This architecture pass does not silently close them: the exact UMW Q1 limits are manufacturer-primary, but the retained STUSB Rev 8 limits are manufacturer-authored mirror evidence under the project's strict trust policy. The 32.4 V TVS value is also conditioned on 12.3 A, 10/1000 µs, and 25 °C. Nothing about a lower steady-state load proves the real clamp waveform; issue #34 keeps PD energization and a protected-chain PASS blocked pending mapping, simulation, programmed-state, as-built, and bench evidence.

What the design review changed (2026-08-01)

An independent electrical review of the captured schematics confirmed the netlist matches this page pin-for-pin, and made three changes to the gate network and programming interface, now reflected in the tables above:

  1. C35 moved from gate–GND to gate–source (VBUS_IN). Referenced to ground, the soft-start cap held the gate down while VBUS moved — so Q1 conducted for ~16 ms at every plug-in (before any contract) and turned on hard, un-soft-started, at the 5 → 15 V transition. Referenced to the source, V_GS stays at 0 through both events and the τ = 6 ms soft-start happens only when VBEN asserts. Standard high-side P-FET practice; the ground-referenced version was a real bug.

  2. R12 changed 56 kΩ → 150 kΩ. The old 100k/56k divider put V_GS at −12.8 V in a 20 V mis-contract — the exact scenario the NVM trap creates — over the AO3401A's ±12 V absolute maximum. The 100k/150k ratio gives −6.0 V at 15 V (R_DS(on) is specified at 65 mΩ maximum by −4.5 V, so the conservative conduction estimate remains low) and −8.0 V at 20 V.

  3. U1.RESET is no longer hard-grounded. It reaches GND through R21 (10 kΩ, the same C17414 reel Board L uses) and is brought out on the previously unused J2.4, so the programming jig can hardware-reset the chip if an NVM write wedges the I2C state — a failure mode the zudo-pd NVM history makes worth one resistor.

The review also resolved this board's open question favourably — see the next section.

One number this pass could not resolve

Lessons Carried From zudo-pd states that R14 (470 Ω from VBUS_IN to pin 18) passes "15 V/470 Ω ≈ 32 mA", inside the pin's 50 mA IDISUSB rating. Read as a continuous current that would be 0.48 W — more than 7% of the whole lamp's power budget, dissipated in a 0603 resistor rated 100 mW, which cannot be right. Read as the discharge-event current (pin 18 is high-impedance in its sense role and only sinks during discharge) it is ~0 W steady state, and the 50 mA figure is exactly what an event-current rating looks like.

This pass believes the second reading is correct — IDISUSB is named for discharge, and a 100 mW resistor in ST's own reference topology would not be specified to run at 4.8x its rating. But it could not confirm it from the datasheet text available here. The power budget therefore carries it as a flagged worst case (+0.48 W), and Next Steps makes measuring R14's steady-state drop an explicit bring-up item. Either way the design fits inside 45 W with large margin, so this does not block the build — but do not size R14's package from the optimistic reading without measuring it.

Resolved (2026-08-01): the design review pulled ST DS12499 §2.2.12, which states the pin "is used to sense VBUS presence, monitor VBUS voltage, and discharge VBUS… A serial resistor connected to the pin must be used to limit the discharge current through the pin. Maximum discharge current is 50 mA." IDISUSB is a discharge-event current, the sense role is high-impedance, and ST's own reference schematic uses the same 470 Ω. The steady-state reading is ≈0 W, the 0603 package is fine, and the +0.48 W flagged worst case can come out of the power budget. The Gate-2 measurement stays as confirmation.

References

Revision History

CreatedUpdated