Power stage 4: TPS54202 15V->+3V3_AUX 1A quiet-rail buck (power sheet complete)
- TPS54202 SOT-23-6 sync, fixed 500kHz; custom symbol CM5IO:TPS54202 (KiCad lib symbol extends TPS54302 with no own pins, cannot embed standalone) - Abs-max gate: VIN 30V vs SMBJ18A clamp <=29.2V at rated surge (0.8V margin, transient-only) - documented, passed - FB 100k/22.1k + 56pF Cff per TI 3.3V table -> 3.29V (SPICE: vfb 0.597V, inrush settles 3.315V); L 10uH, Cout 2x22uF/16V - EN abs-max 7V -> UVLO divider 866k/110k from VIN_PROT (start 10.13V / stop 8.61V, EN ~1.9V at 15V); no direct VIN tie - Renamed input cap C_IN33A -> C_IN33Aa: SPICE names are case-insensitive and collided with stage-3 C_IN33a, silently skipping the VIN_PROT decoupling sim - Verify: ERC 133->133 zero new; analyzer +65/-0 zero regressions; SPICE 23 pass / 2 benign warn / 0 fail / 0 skip Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -98,6 +98,32 @@ def register_lm61460():
|
||||
f'\t\t(symbol "LM61460-Q1_1_1"\n{pt}\t\t)\n\t)')
|
||||
LIBS["CM5IO:LM61460-Q1"] = (blk, lib_pins(blk))
|
||||
register_lm61460()
|
||||
|
||||
def register_tps54202():
|
||||
"""Hand-authored lib_symbol for TPS54202 (SOT-23-6), from the datasheet pin table
|
||||
(SLVSD26C): GND=1, SW=2, VIN=3, FB=4, EN=5, BOOT=6. VFB=0.596V, VIN abs-max 30V,
|
||||
fixed 500kHz. The KiCad lib symbol extends TPS54302 (no own pins) so it can't be
|
||||
embedded standalone. FB/EN typed passive: both are high-Z sense pins on
|
||||
resistor-divider-only nets (else ERC/analyzer flag no_driver)."""
|
||||
P = [('3','VIN','power_in',-13.97,5.08,0), ('5','EN','passive',-13.97,0,0),
|
||||
('6','BOOT','passive',13.97,5.08,180), ('2','SW','output',13.97,2.54,180),
|
||||
('4','FB','passive',13.97,-2.54,180), ('1','GND','power_in',0,-13.97,90)]
|
||||
pt = ""
|
||||
for num, name, ty, lx, ly, ang in P:
|
||||
pt += (f'\t\t\t(pin {ty} line (at {lx} {ly} {ang}) (length 3.81)\n'
|
||||
f'\t\t\t\t(name "{name}" (effects (font (size 1.27 1.27))))\n'
|
||||
f'\t\t\t\t(number "{num}" (effects (font (size 1.27 1.27))))\n\t\t\t)\n')
|
||||
blk = ('\t(symbol "CM5IO:TPS54202"\n\t\t(pin_names (offset 1.016))\n'
|
||||
'\t\t(exclude_from_sim no)\n\t\t(in_bom yes)\n\t\t(on_board yes)\n'
|
||||
'\t\t(property "Reference" "U" (at 0 12.7 0) (effects (font (size 1.27 1.27))))\n'
|
||||
'\t\t(property "Value" "TPS54202" (at 0 -16.51 0) (effects (font (size 1.27 1.27))))\n'
|
||||
'\t\t(property "Footprint" "Package_TO_SOT_SMD:SOT-23-6" (at 0 0 0) (effects (font (size 1.27 1.27)) (hide yes)))\n'
|
||||
'\t\t(property "Datasheet" "https://www.ti.com/lit/ds/symlink/tps54202.pdf" (at 0 0 0) (effects (font (size 1.27 1.27)) (hide yes)))\n'
|
||||
'\t\t(symbol "TPS54202_0_1"\n'
|
||||
'\t\t\t(rectangle (start -10.16 10.16) (end 10.16 -10.16) (stroke (width 0.254) (type default)) (fill (type background)))\n\t\t)\n'
|
||||
f'\t\t(symbol "TPS54202_1_1"\n{pt}\t\t)\n\t)')
|
||||
LIBS["CM5IO:TPS54202"] = (blk, lib_pins(blk))
|
||||
register_tps54202()
|
||||
# +5v pre-exists in the carrier as a HIERARCHICAL net (local + hierarchical labels on the CM5
|
||||
# sheets) -> expose it hierarchically here (a global label collides: same_local_global_label).
|
||||
# +3V3_RF/+3V3_AUX are new nets introduced by this port -> global is fine.
|
||||
@@ -233,6 +259,33 @@ place("Device:C", "C_OUT33b", "47u/16V", "Capacitor_SMD:C_1210_3225Metric", 245,
|
||||
# +3V3_RF is now sourced by this buck -> PWR_FLAG on L33 pin2 (replaces the E-key temp flag)
|
||||
p33x, p33y = pin_abs(l33, "Device:L", "2"); emit_flag(p33x, p33y, "P33R")
|
||||
|
||||
# ---- STAGE 4: U_BUCK33A 15V -> +3V3_AUX ~1A (TPS54202, sync, 500kHz fixed) ------
|
||||
# Quiet rail: GPS + PPS Schmitt buffer + IO pull-ups + RTC domain (design doc ~1A).
|
||||
# Abs-max gate PASSED (thin): VIN abs-max 30V vs SMBJ18A clamp <=29.2V at full rated
|
||||
# 600W surge (0.8V margin, transient-only; 28V operating max is not the surge number).
|
||||
# FB per TI's 3.3V table row: R2=100k/R3=22.1k + Cff 56pF -> 0.596*(1+100/22.1)=3.29V.
|
||||
# L=10uH (dI~0.52A, Ipk~1.26A), Cout 2x22uF. EN abs-max is 7V -> NO direct VIN tie;
|
||||
# UVLO divider 866k/110k (Ip=0.7uA/Ih=1.55uA, Ven 1.21/1.19V) -> start 10.1V/stop 8.6V,
|
||||
# EN sits ~1.9V at 15V in (~3.5V at 29V surge clamp, still < 7V abs-max).
|
||||
place("CM5IO:TPS54202", "U_BUCK33A", "TPS54202", "Package_TO_SOT_SMD:SOT-23-6",
|
||||
230, 95, {'3': 'VIN_PROT', '5': 'EN33A', '6': 'BOOT33A', '2': 'SW33A',
|
||||
'4': 'FB33A', '1': GND})
|
||||
l33a = place("Device:L", "L33A", "10uH/2.5A", "Inductor_SMD:L_1210_3225Metric", 260, 85, {'1': 'SW33A', '2': '+3V3_AUX'})
|
||||
place("Device:C", "C_BOOT33A", "100n", "Capacitor_SMD:C_0402_1005Metric", 250, 78, {'1': 'SW33A', '2': 'BOOT33A'})
|
||||
place("Device:R", "R_UVT33A", "866k", "Resistor_SMD:R_0402_1005Metric", 205, 85, {'1': 'VIN_PROT', '2': 'EN33A'})
|
||||
place("Device:R", "R_UVB33A", "110k", "Resistor_SMD:R_0402_1005Metric", 205, 95, {'1': 'EN33A', '2': GND})
|
||||
place("Device:R", "R_FBT33A", "100k", "Resistor_SMD:R_0402_1005Metric", 280, 95, {'1': '+3V3_AUX', '2': 'FB33A'})
|
||||
place("Device:C", "C_FF33A", "56p", "Capacitor_SMD:C_0402_1005Metric", 288, 95, {'1': '+3V3_AUX', '2': 'FB33A'})
|
||||
place("Device:R", "R_FBB33A", "22.1k", "Resistor_SMD:R_0402_1005Metric", 280, 105, {'1': 'FB33A', '2': GND})
|
||||
# NB refdes must not differ from stage-3's C_IN33a by case alone — SPICE names are
|
||||
# case-insensitive and the simulate_subcircuits testbench collides ("device already exists").
|
||||
place("Device:C", "C_IN33Aa", "10u/50V", "Capacitor_SMD:C_1210_3225Metric", 215, 105, {'1': 'VIN_PROT', '2': GND})
|
||||
place("Device:C", "C_INHF33A", "100n", "Capacitor_SMD:C_0402_1005Metric", 220, 105, {'1': 'VIN_PROT', '2': GND})
|
||||
place("Device:C", "C_OUT33Aa", "22u/16V", "Capacitor_SMD:C_1210_3225Metric", 265, 105, {'1': '+3V3_AUX', '2': GND})
|
||||
place("Device:C", "C_OUT33Ab", "22u/16V", "Capacitor_SMD:C_1210_3225Metric", 270, 105, {'1': '+3V3_AUX', '2': GND})
|
||||
# +3V3_AUX sourced here -> PWR_FLAG on L33A pin2
|
||||
p33ax, p33ay = pin_abs(l33a, "Device:L", "2"); emit_flag(p33ax, p33ay, "P33A")
|
||||
|
||||
# ---- file scaffold ----------------------------------------------------------------
|
||||
libsyms = "\n".join(blk for blk, _ in LIBS.values())
|
||||
sheet = ('(kicad_sch\n\t(version 20231120)\n\t(generator "eeschema")\n\t(generator_version "8.0")\n'
|
||||
|
||||
Reference in New Issue
Block a user