Power stage 3: LM61460-Q1 15V->+3V3_RF 4A buck; EN from CM5 PCIE_PWR_EN
- Second LM61460-Q1 (U_BUCK33R), FB 23.2k/10.0k -> 3.32V (SPICE: vfb 0.994V, inrush settles 3.32V); shared BOM with stage 2 (L 4.7uH/7A, RT 31.6k ~420kHz) - BIAS -> +3V3_RF (datasheet-valid >=3.1V, falls back to VIN below) - EN <- PCIE_PWR_EN: Module1 pin 106 NC swapped for a global label on CM5_HighSpeed + 100k pull-down (mirrors reference R14) so the Wi-Fi rail stays off until CM5 asserts it; netlist-verified 3-node net - Removed the E-key temp PWR_FLAG (#FLG33RF); buck PWR_FLAG on L33.2 is now the sole +3V3_RF driver - Verify: ERC 133->133 zero new; analyzer +49/-0 zero regressions; SPICE 17 pass / 2 benign warn / 0 fail Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -211,19 +211,13 @@ place_rc("Device:R", "R_E1", "10k", "Resistor_SMD:R_0402_1005Metric", g(215.0),
|
||||
place_rc("Device:R", "R_E2", "10k", "Resistor_SMD:R_0402_1005Metric", g(225.0), g(80.0), loc_label, "WIFI_DISABLE2#", "+3V3_RF")
|
||||
|
||||
# decoupling caps: pin1 -> +3V3_RF ; pin2 -> GND
|
||||
c_e1_pin1 = None
|
||||
for i, (ref, val) in enumerate([("C_E1", "10u"), ("C_E2", "100n"), ("C_E3", "100n")]):
|
||||
cx = g(215.0 + i * 7.62); cy = g(110.0)
|
||||
body.append(passive("Device:C", ref, val, "Capacitor_SMD:C_0402_1005Metric", cx, cy, ref))
|
||||
p1 = (cx, round(cy - 3.81, 2))
|
||||
body.append(glob_label("+3V3_RF", p1[0], p1[1], 90)) # pin1
|
||||
body.append(glob_label("+3V3_RF", cx, round(cy - 3.81, 2), 90)) # pin1
|
||||
body.append(gnd_sym(cx, round(cy + 3.81, 2), ref + "g")) # pin2 -> GND symbol
|
||||
if ref == "C_E1": c_e1_pin1 = p1
|
||||
|
||||
# one PWR_FLAG to drive +3V3_RF until the power-sheet buck exists.
|
||||
# Co-locate its pin directly on an existing +3V3_RF node (C_E1 pin1) so it binds.
|
||||
# REMOVE this flag once the power sheet's buck drives +3V3_RF (else dual-driver ERC).
|
||||
body.append(pwr_flag(c_e1_pin1[0], c_e1_pin1[1], "33RF"))
|
||||
# +3V3_RF is driven by the Power sheet's U_BUCK33R (PWR_FLAG lives there).
|
||||
|
||||
# ---- file scaffold -----------------------------------------------------------------
|
||||
libsyms = "\n".join([DEV_R, DEV_C, PWR_GND, pflag, sock])
|
||||
|
||||
@@ -101,7 +101,7 @@ register_lm61460()
|
||||
# +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.
|
||||
GLOBAL_NETS = {"+3V3_RF", "+3V3_AUX"}
|
||||
GLOBAL_NETS = {"+3V3_RF", "+3V3_AUX", "PCIE_PWR_EN"}
|
||||
HIER_NETS = {"+5v"}
|
||||
# from KiCad libs (renamed to full lib_id)
|
||||
add_from("power:PWR_FLAG", open(f"{KSS}/power.kicad_sym").read(), "PWR_FLAG")
|
||||
@@ -207,6 +207,32 @@ place("Device:C", "C_OUT5b", "47u/16V", "Capacitor_SMD:C_1210_3225Metric", 180,
|
||||
# +5v is now sourced by this buck -> PWR_FLAG co-located on L5 pin2 (+5v)
|
||||
p5x, p5y = pin_abs(l5, "Device:L", "2"); emit_flag(p5x, p5y, "P5V")
|
||||
|
||||
# ---- STAGE 3: U_BUCK33R 15V -> +3V3_RF 4A (LM61460-Q1, sync) --------------------
|
||||
# FB divider: VREF=1.0V -> Rfbt/Rfbb=2.32 -> 23.2k/10.0k = 3.32V.
|
||||
# Same support set as stage 2 (RT 31.6k ~420kHz, L 4.7uH/7A: ripple ~1.3A = 33% of 4A).
|
||||
# BIAS -> +3V3_RF (datasheet: BIAS>=3.1V uses output LDO path; falls back to VIN below).
|
||||
# EN <- PCIE_PWR_EN (CM5 Module1 pin 106, global net) + 100k pull-down (= reference R14)
|
||||
# so the Wi-Fi rail stays OFF until the CM5 asserts it.
|
||||
place("CM5IO:LM61460-Q1", "U_BUCK33R", "LM61460-Q1", "Package_SO:Texas_HTSSOP-14-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask3.155x3.255mm_ThermalVias",
|
||||
230, 150, {'8': 'VIN_PROT', '12': 'VIN_PROT', '7': 'PCIE_PWR_EN', '1': '+3V3_RF', '2': 'VCC33',
|
||||
'6': 'RT33', '5': 'PG33', '4': 'FB33', '10': 'SW33', '14': 'BOOT33', '13': 'RBOOT33',
|
||||
'9': GND, '11': GND, '3': GND, '15': GND})
|
||||
l33 = place("Device:L", "L33", "4.7uH/7A", "Inductor_SMD:L_Bourns_SRP1245A", 270, 138, {'1': 'SW33', '2': '+3V3_RF'})
|
||||
place("Device:C", "C_BOOT33", "100n", "Capacitor_SMD:C_0402_1005Metric", 260, 132, {'1': 'SW33', '2': 'BOOT33'})
|
||||
place("Device:R", "R_BOOT33", "4.7", "Resistor_SMD:R_0402_1005Metric", 265, 128, {'1': 'RBOOT33', '2': 'BOOT33'})
|
||||
place("Device:R", "R_RT33", "31.6k", "Resistor_SMD:R_0402_1005Metric", 210, 158, {'1': 'RT33', '2': GND})
|
||||
place("Device:R", "R_PG33", "100k", "Resistor_SMD:R_0402_1005Metric", 255, 143, {'1': 'PG33', '2': '+3V3_RF'})
|
||||
place("Device:R", "R_FBT33", "23.2k", "Resistor_SMD:R_0402_1005Metric", 285, 150, {'1': '+3V3_RF', '2': 'FB33'})
|
||||
place("Device:R", "R_FBB33", "10.0k", "Resistor_SMD:R_0402_1005Metric", 285, 158, {'1': 'FB33', '2': GND})
|
||||
place("Device:R", "R_EN33", "100k", "Resistor_SMD:R_0402_1005Metric", 200, 165, {'1': 'PCIE_PWR_EN', '2': GND})
|
||||
place("Device:C", "C_VCC33", "1u", "Capacitor_SMD:C_0402_1005Metric", 220, 158, {'1': 'VCC33', '2': GND})
|
||||
place("Device:C", "C_IN33a", "10u/50V", "Capacitor_SMD:C_1210_3225Metric", 215, 145, {'1': 'VIN_PROT', '2': GND})
|
||||
place("Device:C", "C_IN33b", "10u/50V", "Capacitor_SMD:C_1210_3225Metric", 220, 145, {'1': 'VIN_PROT', '2': GND})
|
||||
place("Device:C", "C_OUT33a", "47u/16V", "Capacitor_SMD:C_1210_3225Metric", 240, 165, {'1': '+3V3_RF', '2': GND})
|
||||
place("Device:C", "C_OUT33b", "47u/16V", "Capacitor_SMD:C_1210_3225Metric", 245, 165, {'1': '+3V3_RF', '2': GND})
|
||||
# +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")
|
||||
|
||||
# ---- 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