289 lines
42 KiB
Markdown
289 lines
42 KiB
Markdown
---
|
||
title: "EinarBoard v6 — Puertos y sin nueva versión (pasada 2, inglés)"
|
||
tags: [project-drogheda, hardware, hbox, v6, esquematico, ports]
|
||
project: Project Drogheda
|
||
author: Helgen Technologies
|
||
date: 2026-09-28
|
||
version: 1.0
|
||
status: FINAL — pass 2 of 3 (ports / no new version)
|
||
audience: Michelle (layout), Leo, ingenieros
|
||
---
|
||
|
||
# EinarBoard v6: ports end to end and the no-v6.1 close-out (v1.0)
|
||
|
||
!!! warning "EinarBoard v6 (`hbox-watchdog-v6`): en diseño, no se pide"
|
||
Diseño nuevo con ZED-F9P y módem A7670SA soldados a bordo. **No es la V5.6** que se manda a fabricar esta semana (`hbox-watchdog-v5`, zócalos para simpleRTK2B y 4G NTRIP Master). Los hallazgos marcados «Impacto en V5.6» ya se aplicaron a la V5.6 y están en su informe de cambios.
|
||
|
||
!!! info "Pass 2 of 3 — ports and no new version"
|
||
Spanish summary, final state per block and the combined layout delta:
|
||
**[EinarBoard v6 — Cambios de esquemático: resumen de las 3 pasadas](v6-cambios-resumen.md)**.
|
||
The final independent check ([pass 3](v6-revision-final.md)) passed this pass 26 / 27. The one FAIL was the
|
||
`IND-SMD_MWSA0804S` land in §4.3 and in L-53: the correct land is pads **2.75 × 5.5 mm at ±3.375 mm**
|
||
(gap 4.0 mm), courtyard **10.0 × 9.0 mm** (L-63). The schematic hash `f73f41a8…27ee` below was superseded by
|
||
`2b394ef9…5f33` (C176 added).
|
||
|
||
|
||
**Date:** 2026-09-28 · **Board:** `kicad/hbox-watchdog-v6.*` (HBOX RTK, Helgen Technologies) · **Input state:** the schematic after the apply pass (sha256 `d54e330d…`, netlist `apply/netlists/05-final.xml`; a fresh export was identical) · **Author:** Claude (ports and no-respin pass) · **Rules:** edited in place, span-scoped S-expression splices with a UUID guard, `.kicad_pcb` not touched, no git, backups in `kicad/_to_delete/v6-ports-20260928/`.
|
||
|
||
## Resumen (ES)
|
||
|
||
Se revisó cada puerto de la v6 corregida, de extremo a extremo (conector → protección → pasivos → transceptor/PHY → pin de MCU o módem → periférico de firmware), contra hojas de datos. **Todos los puertos funcionan como están dibujados después de este pase.** Se encontraron y corrigieron en el esquemático seis defectos que habrían dejado un puerto débil o fallando:
|
||
|
||
1. **RS-485:** el SP3485 sólo tiene ±2 kV HBM y fail-safe con entradas abiertas; además, con DE/RE̅ atados a RTS̅ del SC16IS752 (que queda en ALTO tras el reset), el transceptor **transmitía y bloqueaba el bus** durante el reset, en DFU o sin firmware. Se cambió U14 por **THVD1410DR** (mismo pinout, ±18 kV IEC, fail-safe con bus abierto, en corto o inactivo). Se añadió **U32 (inversor 74LVC1G04)**, así que el transceptor arranca en recepción. También se añadió **D39 SM712** en P11 y la opción de polarización R145/R146 (DNP).
|
||
2. **RS-232:** el MAX3232 (sin especificación ESD) pasa a **TRS3232EIDR** (mismo pinout, ±8 kV IEC contacto).
|
||
3. **Header TTL H4:** estaba en paralelo directo con la salida R1OUT del transceptor. Se añadió **R147 1 k**, así que un dispositivo TTL puede manejar RXB sin contienda.
|
||
4. **Ethernet J10:** el LED amarillo (ACT) estaba **invertido** (pines 11/12), así que nunca encendía. El pin 8 (retorno del capacitor Bob-Smith de 1000 pF) estaba sin conectar; ahora va a GND.
|
||
5. **SC16IS752:** las entradas CTSA̅/CTSB̅ estaban flotando; ahora van a GND.
|
||
6. **Módem USB (J9):** se añadió **TP12 (1V8)** junto a TP8, para forzar el modo de descarga USB.
|
||
|
||
USB-C (J9 y J11) ya estaba correcto: CC1/CC2 tenían 5.1 kΩ a GND, D+/D− iban en ambas filas y VBUS no retro-alimenta. No hubo cambios.
|
||
|
||
Mapa I²C: **sin colisiones**. En el bus: SC7A20 0x18, PCF8574 0x20, SHT40 0x44, TMP102 0x48 y 0x49, SC16IS752 0x4D. Las direcciones posibles de los TMP102 (0x48–0x4B) no incluyen 0x4D.
|
||
|
||
Cierre de «no v6.1»: **H-03 hecho** (nueva huella `IND-SMD_MWSA0804S` con la tierra recomendada por Sunlord, usada en L2/L6/L8/L20) y **B-13 hecho** (K1 DNP; enlace directo PC6 → DIN_4G con R148 0 Ω). TP1–TP8 salen del BOM y del CPL. Se añaden 14 puntos a la lista de Michelle (L-49…L-62) y se aceptan 20 ítems permanentemente, cada uno con su razón. El único riesgo aceptado a conciencia en la ruta de potencia es **A-10**: no hay protección de sobretensión en VEH5V. La opción OVP del LTC4040 mueve el divisor PFI y cambia la recuperación del modo respaldo, y no puede validarse sin banco. Cada grupo se probó con diff de netlist: **lo esperado coincide exactamente con lo obtenido**. ERC: **0 errores** (134 warnings, igual que antes). SHA-256 final del esquemático: `f73f41a8…27ee`.
|
||
|
||
## 0. Summary
|
||
|
||
| Item | Result |
|
||
|---|---|
|
||
| Ports traced | 24 (every J/P/H/SW/TP ref plus the internal modem, GNSS and I²C interfaces) |
|
||
| Port verdicts | 17 ✅ as drawn · 7 🔧 fixed now (RS-485, RS-232, H4, SC16IS752 CTS, Ethernet LEDs + Bob-Smith, modem USB boot pad, modem UART B-13) · 📐 layout items on 11 ports · ⚙ firmware items on 14 ports |
|
||
| USB-C CC | **J9 and J11 both correct:** Rcc1/Rcc2 and R100/R101 = 5.1 kΩ 1 % (C23186) CC→GND; D+ A6/B6 and D− A7/B7 tied; no VBUS back-feed |
|
||
| I²C collisions | **None** (map in §3) |
|
||
| Schematic groups | P1 ports · N1 no-respin · C1 cleanup: **8 parts added, 0 removed, 41 field changes, 8 pin-net changes, 0 net-class changes**. Each group: expected == actual; composed = total, 0 differences |
|
||
| ERC (kicad-cli 10 via KiCad MCP) | 0 errors after every group; warnings 134 → 134 |
|
||
| Overlaps / wire crossings | 30 → 30 / 9 → 9 (all pre-existing; none involve a new part) |
|
||
| BOM | all 298 fitted real parts have an LCSC number (TP1–TP12 and JP1–JP6 are now out of the BOM/CPL; the PF* power flags are virtual) |
|
||
| New library file | `Drogheda-v6.pretty/IND-SMD_MWSA0804S.kicad_mod` (sha256 `dbf53557…`) |
|
||
| Untouched | `.kicad_pcb` `6ddec80d…`, `.kicad_pro` `d577aa43…`, `.kicad_dru` `31ce0f4f…` |
|
||
| Michelle's list | +14: L-49 … L-62 (§5) |
|
||
| Accepted permanently | 20 items (§7); done now: 17 (§8) |
|
||
|
||
## 1. Port-by-port verification
|
||
|
||
Legend: ✅ works as drawn · 🔧 fixed now (schematic) · 📐 layout item added (L-nn) · ⚙ firmware item (§6).
|
||
Datasheets used: TI THVD1410, TI SN65HVD72, MaxLinear SP3485, ADI/Maxim MAX3222-MAX3241, TI TRS3232E, NXP SC16IS752/762, WIZnet W5500 v1.1.0, the KiCad `Connector:RJ45_Hanrun_HR911105A_Horizontal` symbol (drawn from the Hanrun HR911105A sheet; see §1.6), Semtech/Littelfuse SM712, ADI LTC4040 Rev B, Sunlord MWSA-S series spec, and AOS AO4264E. Pin and net evidence comes from `ports/netlists/final.xml` (= `03-cleanup.xml`).
|
||
|
||
| # | Port | Chain (final) | Checks | Verdict | Evidence |
|
||
|---|---|---|---|---|---|
|
||
| 1 | **RS-485 (P11)** | P11.1 `/RS485_A`, P11.2 `/RS485_B`, P11.3 GND → **D39 SM712** (A/B → GND) · R82 120 Ω + JP5 (open) termination · R145/R146 390 Ω bias (DNP) → **U14 THVD1410DR** (6 A, 7 B, 8 VCC `/3V3` + C84, 5 GND) → 1 RO `/SER_RXA` → U10.4 RXA · 4 DI ← `/SER_TXA` U10.3 TXA · 2 RE̅ + 3 DE ← `/RS485_DE` ← **U32 74LVC1G04** ← `/SER_DEA` ← U10.1 RTSA̅ | A/B polarity: P11.1 = A = U14.6 ✅ · Pinout of THVD1410 D pkg = SP3485 (R, RE̅, DE, D, GND, A, B, VCC) ✅ · RTSA̅ is **HIGH after reset** (NXP DS). With the old direct tie, DE = 1 during reset, DFU and unflashed boards, so the node drove the bus (**bus hog**). U32 inverts it: receive at reset; auto-RS-485 with EFCR RTSCON=1, RTSINVER=0 ✅ · Fail-safe: SP3485 = open inputs only; THVD1410 = open, short and idle bus ✅ · ESD: SP3485 ±2 kV HBM only → THVD1410 ±18 kV IEC contact, ±30 kV HBM, EFT ±4 kV; surge by SM712 (−7/+12 V, 400 W 8/20 µs); THVD1410 bus abs max ±18 V ✅ · Termination by solder jumper (bus ends only) ✅ · 3.3 V supply, logic 3.3 V ✅ · Speed: THVD1410 500 kbps > SC16IS752 max 230.4 kBd at 3.6864 MHz ✅ | 🔧 📐 L-49/L-50/L-59 · ⚙ | `01-ports.xml`: `/RS485_DE` = {U14.2, U14.3, U32.4}; `/SER_DEA` = {U10.1, U32.2}; `/RS485_A` = {P11.1, U14.6, R82.1, D39.1, R145.2} |
|
||
| 2 | **RS-232 (P12)** | P12.1 `/RS232_TX` ← U15.14 T1OUT · P12.2 `/RS232_RX` → U15.13 R1IN · P12.3 GND · **U15 TRS3232EIDR**: C85 C1± (1/3), C86 C2± (4/5), C87 V+ (2)→GND, C88 V− (6)→GND, all 100 nF; C89 100 nF VCC (16) `/3V3`; T1IN (11) ← `/SER_TXB` U10.23 TXB; R1OUT (12) → `/RS232_R1OUT` → **R147 1 k** → `/SER_RXB` U10.24 RXB; T2IN/R2IN → GND, T2OUT/R2OUT NC | Pinout identical to MAX3232 (1 C1+ … 16 VCC) ✅ · Pump caps 0.1 µF at 3.0–3.6 V per both datasheets ✅ · V+ cap to GND allowed ✅ · Unused TX input tied, RX input tied (5 kΩ internal) ✅ · Channel B of U10 ✅ · Direction: board TX on pin 1 (DTE-style, cross to the far end's RX) ✅ · ESD: MAX3232 (non-E) has **no ESD rating** → TRS3232E ±15 kV HBM, **±8 kV IEC contact**, ±15 kV air ✅ | 🔧 📐 L-51/L-59 · ⚙ | `/RS232_R1OUT` = {U15.12, R147.1} |
|
||
| 3 | **TTL UART B (H4)** | H4.1 3V3, H4.2 `/SER_TXB` (U10.23 + U15.11), H4.3 `/SER_RXB` (U10.24 + R147.2), H4.4 GND | Before: H4.3 was hard-wired to U15 R1OUT, so an external TTL TX fought a CMOS output (R1OUT idles HIGH when R1IN is open). With R147: an external driver wins (≤ 3.3 mA, VIL ≈ 0.16 V with a 50 Ω driver); normal RS-232 RX delay 1 k × ~10 pF ≈ 10 ns ✅ · Use H4 **or** P12, not both at once | 🔧 · ⚙ | `/SER_RXB` = {U10.24, H4.3, R147.2} |
|
||
| 4 | **SC16IS752 bridge (U10)** | I2C/SPI̅ (9) = `/3V3` → **I²C mode** · A0 (10), A1 (11) = GND → **0x9A = 7-bit 0x4D** · Y2 3.6864 MHz (C2238) + C82/C83 22 pF on XTAL1/2 (6/7) · IRQ̅ (15) open-drain → R81 10 k → `/3V3`, → U16.61 **PB8** · RESET̅ (5) → R80 10 k → `/3V3` (POR inside; no MCU control) · VDD (8) `/3V3` + C81 · ch A = RS-485, ch B = RS-232/H4 · CTSA̅ (2), CTSB̅ (16) → **GND** (were floating) · GPIO0–7 NC | Address table verified (A1=VSS, A0=VSS → 0x9A) ✅ · Crystal: divisors exact for 9600…230400 ✅ · IRQ̅ is open-drain and needs the pull-up; NXP quotes 1 k for fast edges, but 10 k only slows the de-assert edge (≈ 0.2 µs), which is fine for a level-read EXTI ✅ · POR exists, so R80 is enough; firmware issues IOControl.SRESET after every MCU reset ✅ · I²C max 400 kHz (the bus runs at 100 kHz, see #5) ✅ · Floating CTS inputs removed; GPIOs set to outputs in firmware | ✅ 🔧 (CTS) · 📐 L-57 · ⚙ | `03-cleanup.xml`: U10.2, U10.16 → GND |
|
||
| 5 | **I²C1 bus** | PB6 SCL (U16.58) / PB7 SDA (U16.59), AF4; R30/R31 4.7 k to `/3V3`; U3, U10, U13, U26, U29, U31 | Map in §3: no collision ✅ · PCF8574T (C7605) is a **100 kHz** device, so the whole bus runs at 100 kHz · tr ≈ 0.85 × 4.7 k × ~80 pF ≈ 0.32 µs < 1 µs ✅ · sink 0.7 mA < 3 mA ✅ · ZED-F9P DDC (0x42) **not wired** (U18.44/45 NC), A7670 CI2C NC ✅ | ✅ · ⚙ | nets `/I2C_SCL`, `/I2C_SDA` |
|
||
| 6 | **Ethernet (J10 + U11)** | U11 TXP/TXN (2/1) → J10.1 TD+ / J10.2 TD−, each 49.9 Ω (R92/R93) to `/3V3_ETH`, J10.4 TCT = `/3V3_ETH` · RXP/RXN (6/5) → J10.3 RD+ / J10.6 RD−, R94/R95 49.9 Ω to `/ETH_RCT` = J10.5 RCT + C97 6.8 nF → GND · J10.9 green A ← R96 330 Ω ← `/3V3_ETH`, J10.10 green K → U11.25 LINKLED · **J10.12 yellow A ← R97 330 Ω, J10.11 yellow K → U11.27 ACTLED** · **J10.8 → GND** · J10.7 NC · SH → GND · Y1 25 MHz HC-49 + C95/C96 33 pF · EXRES1 12.4 k 1 % · TOCAP 4.7 µF · 1V2O 10 nF · AVDD 100 nF ×6 + 10 µF/22 µF/100 µF · PMODE[2:0] = 111 via R84 (auto-neg) · RSVD23 → GND, RSVD38–42 NC · SPI2: CS̅ PB12, SCK PB13, MISO PB14, MOSI PB15 (AF5) · INT̅ PC0 · RST̅ PA15 + R140 4.7 k PD · 3V3_ETH from U12 MP1584EN, EN = `/ETH_PWR_EN` PD2 + R139 100 k PD | Terminations and centre taps = W5500 reference topology ✅ · LED polarity: the HR911105A symbol draws the yellow LED anode on pin 12 and cathode on pin 11; v6 had 11 = anode supply and 12 = W5500 ACTLED, so **ACT never lit** → swapped 🔧 · Pin 8 is the Bob-Smith 1000 pF return (symbol pin type power_in); it was NC with a flag, so the unused-pair termination floated (EMI/ESD) → GND 🔧 · Y1 load ≈ 19–20 pF for the CL 20 pF part ✅ · W5500 pin table: TOCAP 4.7 µF, 1V2O 10 nF, EXRES1 12.4 k, RSVD23 → GND, 38–42 NC ✅ · RSTn internal pull-up 62–112 k + PA15 JTDI pull-up vs 4.7 k → ≤ 0.66 V < VIL 0.8 V ✅ · MP1584 EN: 1 µA internal pull-up, 100 k → 0.1 V = off; PD2 3.3 V > 1.5 V = on ✅ · W5500 I/O 5 V-tolerant (no back-power through SPI/RST when 3V3_ETH is off) ✅ · J10 footprint `Connector_RJ:RJ45_Hanrun_HR911105A_Horizontal` = part C12074 ✅ | 🔧 📐 L-52 · ⚙ | `01-ports.xml`: J10.8 GND; `/ETH_ACTLED` = {J10.11, U11.27}; `/ETH_ACT_A` = {J10.12, R97.1} |
|
||
| 7 | **USB-C DFU (J11)** | GCT USB4085-GF-A (C7095263, USB 2.0 Type-C) · CC1 A5 → R100 5.1 k → GND, CC2 B5 → R101 5.1 k → GND · D+ A6+B6 `/DFU_DP` → D14 → U16.45 **PA12** · D− A7+B7 `/DFU_DM` → D15 → U16.44 **PA11** · VBUS A4/A9/B4/B9 `/DFU_VBUS` → D16 · → D13 SS34 → `/LDO_IN` (U17), OR-ed with D12 from SYS5V · SH → GND · BOOT0 = SW2 to 3V3 + R98 10 k PD; PB2 = R99 10 k PD; HSE Y3 25 MHz | Sink Rd on both CC ✅ · flip support ✅ · PA11/PA12 = OTG_FS DM/DP ✅ · VBUS back-feed: D12 blocks VBUS → SYS5V, D13 blocks the board → host; USB powers only the 3V3 domain ✅ · VBUS sensing is not needed (PA9 is TP9): ROM DFU on F411 runs without it; firmware disables it ✅ · PA10 idles high in DFU via Rdfu1 100 k (so the ROM USART1 detector sees no noise) ✅ · ESD D14–D16 PESD5V0S1BA (full speed tolerates their capacitance; V5.5 proven; routing fixed by L-42) ✅ | ✅ · 📐 L-42 (existing), L-58/L-59 · ⚙ | nets `/DFU_*` |
|
||
| 8 | **USB-C modem (J9)** | USB4085 · CC1 A5 → Rcc1 5.1 k, CC2 B5 → Rcc2 5.1 k → GND · D+ A6+B6 `/USB_DP` → U30.3/4 → U19.27 · D− A7+B7 `/USB_DM` → U30.1/6 → U19.28 · VBUS → U30.5 + U19.24 (detect only; feeds no rail) · SH → GND · U19.6 USB_BOOT → TP8, **TP12 = `/1V8_MODEM`** beside it | Rd on both CC ✅ · both D rows tied ✅ · USBLC6-2SC6 (~3.5 pF) suits high speed ✅ · no back-feed path (VBUS only reaches the modem detect pin and the USBLC6 rail pin) ✅ · J9 works only while firmware keeps the modem powered ⚙ · forced download needs VDD_EXT on USB_BOOT at power-on: there was no 1.8 V pad beside TP8 → TP12 🔧 | ✅ 🔧 (TP12) · 📐 L-41/L-43 (existing), L-55/L-58/L-59 · ⚙ | `/1V8_MODEM` gains TP12 |
|
||
| 9 | **P1 24 V + ignition** | DIBO DB128V-5.0-5P (C424683, 5.0 mm, 16 A) on `TerminalBlock_Phoenix_MKDS-1,5-5…Horizontal` · 1 `/24V_IN` → F2 3 A → `/VIN_FUSED` (D10, Q23) · 2 GND · 3 `/IGN_IN` → D35 SMBJ33A + Rig1 22 k → `/IGN_SENSE` (PA5 ADC, ratio 0.0833) · 4 GND · 5 NC | Apply-pass fixes V1-01/A-01/F-02 in place ✅ · pin numbering 1–5 = land 1–5 ✅ · 5.0 mm land fits a KF128-class block; confirm hole/pin and wire-entry side (L-62) | ✅ · 📐 L-62 | `/IGN_IN` = {P1.3, Rig1.1, D35.1} |
|
||
| 10 | **P2 bench 5 V** | XH-2 (C158012) · 1 `/VEH5V`, 2 GND | Bench-only input; no reverse or over-voltage protection (A-10 and A-20c accepted, §7; silk per L-46) | ✅ (bench use) | — |
|
||
| 11 | **P3 battery** | XH-3 (C144394) · 1 `/BAT_PLUS` (L6, U6.23), 2 GND, 3 `/NTC` (R55 10 k to VIN; U6.17; R137 tap → PC5) | 3 A/contact vs 1.4 A charge (R50 1.43 k), backup average 0.6–1 A, LTE-only peaks ≈ 2 A (D9) ✅ | ✅ (G-07 accepted) | — |
|
||
| 12 | **P4 fan** | XH-2 · 1 `/5V_FAN` (= VEH5V via JP1 bridged), 2 `/FAN_RET` → Q2 AO3400A (PA6) + D2 flyback | ✅ | ✅ · ⚙ | — |
|
||
| 13 | **P5 cut-off + JP6** | XH-2 · `/MAIN5V`–`/SYS5V`; JP6 open bypass | ✅ | ✅ | — |
|
||
| 14 | **P6 external reset** | XH-2 · 1 `/NRST` (D36 PESD5V0S1BA, C104 100 nF, SW1, TP5, U16.7), 2 GND | ✅ (renumber hazard handled by silk, L-46) | ✅ | — |
|
||
| 15 | **P7/P8 NTC probes** | XH-2 · `/NTC_TEMP` (R42 10 k to 3V3, C24, D37, PB1 ADC IN9) · `/NTC2` (R126, C157, D38, PC4 IN14) | ✅ | ✅ · ⚙ | — |
|
||
| 16 | **P9 panel LED** | XH-2 · 1 `/LED_A` (R3 120 Ω from 3V3), 2 `/LED_K` → Q4 (PB0); on-board D1 in parallel | Works with a panel LED of Vf ≤ 2.2 V (it shares ≈ 11 mA with D1) | ✅ (usage rule) | — |
|
||
| 17 | **P10 external RGB** | XH-4 · 1 3V3 (common anode), 2–4 cathodes via R89–R91 120 Ω → PCF8574 P4–P6 (sink) | Red about 11 mA; blue/green (Vf about 2.8–3.0 V at 3.3 V) run at a few mA, so they are dimmer. Functional | ✅ | — |
|
||
| 18 | **J12 GNSS antenna** | U.FL (C88374) → `/RF_ANT_GNSS`: D27, C143 DC block → U18.2; bias L21 68 nH ← `/ANT_BIAS` ← U28 TPS2552 (75 mA limit, EN̅ = F9P ANT_OFF, FAULT̅ → PC2) | Apply-pass C-01 in place ✅ | ✅ · 📐 L-30/L-33 (existing) · ⚙ | — |
|
||
| 19 | **J13 LTE antenna** | U.FL → `/RF_ANT_LTE`: D28 PESD0402-240, R118 0 Ω, C146/C147 DNP π → U19.60 | Apply-pass B-03 in place ✅ | ✅ · 📐 L-31 (existing) | — |
|
||
| 20 | **J14 nano-SIM / U22 eSIM** | J14 (C2977286, pre-order) C1 `/SIMB_VDD` (C171) via R131 0 Ω; C2/C3/C7 via R132–R134 22 Ω; ESD D23–D25 on the modem side; U22 + R127–R130 DNP | ✅ (B-09 applied; ESD move per L-38) · SIM detect unused (USIM1_DET NC) | ✅ · ⚙ | — |
|
||
| 21 | **SWD / test pads** | TP3 SWDIO (PA13), TP4 SWCLK (PA14), TP5 NRST, TP6 GND, TP7 3V3, TP9 PA9 TX | Complete SWD set, no connector (D-12) → pads grouped in one row (L-56) | ✅ · 📐 L-56 | — |
|
||
| 22 | **SW1 reset / SW2 BOOT0** | SW1 NRST→GND; SW2 3V3→BOOT0 (R98 PD) | ✅ | ✅ | — |
|
||
| 23 | **Modem UART (internal)** | PC6 USART6_TX → **R148 0 Ω** → `/DIN_4G` (R143 100 k PU) → U23 → modem RXD; modem TXD → U24 → `/DOUT_4G` → R106 1 k → PC7 and U27 → F9P RXD2 | K1 relay path removed (B-13, §4) 🔧 | 🔧 · 📐 L-54 · ⚙ | `/DIN_4G` ∋ R148.2; `/USART6_TX` = {U16.37, R148.1, K1.10 (DNP)} |
|
||
| 24 | **GNSS UARTs (internal)** | USART2 PA2/PA3 ↔ F9P UART1; F9P TXD2 → PA10 (RX-only) + Rdfu1 PU | ✅ (unchanged; `/USART1_RX` no longer reaches K1's contact in practice, since K1 is DNP) | ✅ · ⚙ | — |
|
||
|
||
### 1.6 Note on the HR911105A LED pin evidence
|
||
The Hanrun PDF could not be read here (image-only on every mirror). The pin mapping comes from KiCad's official symbol `Connector:RJ45_Hanrun_HR911105A_Horizontal`, whose datasheet link points to the LCSC copy of the Hanrun drawing, and from the copy already embedded in the v6 sheet. Both draw the **yellow LED with its anode on pin 12 and cathode on pin 11**, and the **green LED with its anode on pin 9 and cathode on pin 10**. They also both type pin 8 as the power_in return of the 1000 pF Bob-Smith capacitor. The v6 wiring contradicted its own symbol drawing. The original designer's note said "G+/G−/Y+/Y− – VERIFY". Bench check on the first board: both LEDs light with the link up.
|
||
|
||
## 2. Datasheet facts that decided the fixes
|
||
|
||
| Part | Fact | Consequence |
|
||
|---|---|---|
|
||
| SP3485 (MaxLinear) | Fail-safe only for open inputs; ESD ±2 kV HBM; no IEC rating | Too weak for a cabled port on port machinery → THVD1410DR |
|
||
| THVD1410 (TI) | SOIC-8 = R, RE̅, DE, D, GND, A, B, VCC; fail-safe open/short/idle; IEC contact ±18 kV, air ±25 kV, HBM ±30 kV; EFT ±4 kV; bus abs max ±18 V; 3–5.5 V; 500 kbps; DE 2 MΩ PD, RE̅ 2 MΩ PU; 100 nF decoupling | Drop-in on U14's land; C84 is its 100 nF |
|
||
| SN74LVC1G04 DBV | 1 NC, 2 A, 3 GND, 4 Y, 5 VCC | U32 on `SOT-23-5` |
|
||
| SC16IS752 (NXP) | A1=VSS, A0=VSS → 0x9A (0x4D) · RTSA̅/RTSB̅ = logic 1 after reset · EFCR[4] RTSCON, EFCR[5] RTSINVER · POR plus RESET̅ · IRQ̅ open-drain · I²C ≤ 400 kbit/s · GPIO inputs after reset | Inverter needed for receive-by-default; firmware SRESET and GPIO direction |
|
||
| MAX3232 (non-E) | No ESD rating; 0.1 µF pump caps at 3.0–3.6 V | → TRS3232E |
|
||
| TRS3232E (TI) | Same 16-pin order as MAX3232; ±15 kV HBM, ±8 kV IEC contact, ±15 kV air; 0.1 µF at 3.3 V | Drop-in on U15's narrow SOIC-16 land (H-01 fixed it in the apply pass) |
|
||
| SM712 | 2 I/O pins + common pin 3; −7/+12 V standoff, 400 W 8/20 µs (Semtech SM712.TCT) | Standard RS-485 surge clamp; matches the THVD1410's ±18 V bus rating |
|
||
| W5500 v1.1.0 | TOCAP 4.7 µF, 1V2O 10 nF, EXRES1 12.4 k 1 %; RSVD23 → GND, RSVD38–42 NC (internal pull-down); RSTn low ≥ 500 µs, internal pull-up; SCSn internal pull-up; 5 V-tolerant I/O; SPI guaranteed ≥ 33.3 MHz | Confirms the apply-pass values and the firmware sequence |
|
||
| LTC4040 Rev B | OVP = MN1 in series VPWR→VIN with IGATE shared with MN2; 6.2 k to OVSNS; 6.1/6.4/6.7 V trip; IGATE pulled to GND in backup; recovery starts when the PFI comparator sees input power; PFI abs max = max(VIN, VBAT, VSYS) + 0.3 V | Why A-10 was **not** applied blind (§7) |
|
||
| Sunlord MWSA-S spec Table 4-1 | MWSA0804S: A 8.2±0.3, B 8.8±0.4, C 3.8±0.2, D 1.4±0.3 (electrode width), E 5.0±0.3 (electrode length); recommended land I 2.75, J 4.0, H 5.5 (typ) | New footprint (§4) |
|
||
|
||
## 3. I²C address map (I²C1, PB6/PB7, 4.7 k pull-ups to `/3V3`, run at 100 kHz)
|
||
|
||
| 7-bit address | Device | Ref | Strap | Range the part can take |
|
||
|---|---|---|---|---|
|
||
| 0x18 | SC7A20 accelerometer (INT1 → PB9) | U26 | SDO/SA0 = GND, CS = VDD (I²C) | 0x18–0x19 |
|
||
| 0x20 | PCF8574T I/O expander (battery gauge LEDs, RGB) | U13 | A0–A2 = GND (NXP PCF8574T/3, not the "A" version) | 0x20–0x27 |
|
||
| 0x44 | SHT40-AD1B humidity/temperature | U3 | fixed | 0x44 |
|
||
| 0x48 | TMP102 charger sensor | U29 | ADD0 = GND | 0x48–0x4B |
|
||
| 0x49 | TMP102 modem-area sensor | U31 | ADD0 = V+ | 0x48–0x4B |
|
||
| 0x4D | SC16IS752 dual UART | U10 | A1 = A0 = GND | 0x48–0x57 |
|
||
| (0x42) | ZED-F9P DDC | U18 | **not connected** (pins 44/45 NC) | — |
|
||
|
||
**No collisions.** Only the SC16IS752 range (0x48–0x57) overlaps the TMP102 range (0x48–0x4B). It sits at 0x4D, outside the four TMP102 values, so no TMP102 strap change can reach it. **No strap change needed.** Bus speed limit: PCF8574 = 100 kHz, so the bus runs at 100 kHz. At that speed the SC16IS752 moves about 10 kB/s in total, which is enough for Modbus RTU at ≤ 38.4 kBd on RS-485 plus RS-232 at ≤ 57.6 kBd (FIFO + IRQ).
|
||
|
||
## 4. Schematic fixes applied, with proof
|
||
|
||
Method: the apply-pass editor (`apply/tools/ops.py`: span-scoped splices on the original text, a UUID multiset guard, canonical KiCad node layout). Each group was written as its own script (`ports/tools/gP_ports.py`, `gN_norespin.py`, `gC_cosmetic.py`), with the expected change set written before commit. After each commit to the Mac (unique staged path each time, sha256 checked on the Mac afterwards) the netlist was exported with the KiCad MCP (kicad-cli), diffed semantically with `ndiff.py` and asserted; ERC and the overlap and wire-crossing checks ran after each group.
|
||
|
||
### 4.1 Hashes
|
||
|
||
| State | `hbox-watchdog-v6.kicad_sch` sha256 | Backup |
|
||
|---|---|---|
|
||
| Pre (apply-pass final) | `d54e330d189910afd58e18fc7cd498bdb3e6e5b7b3c4472b6cae7f95650b34c4` | `_to_delete/v6-ports-20260928/00-pre/` (+ pro, dru, pretty, old PDF), `01-ports/…pre` |
|
||
| After P1 ports | `26f50aaa7dc7795dcc5aec12b1ed8d8c1a762c09c8d63b0190e36d1078679a0e` | `01-ports/…post`, `02-norespin/…pre` |
|
||
| After N1 no-respin | `3aceff28ac2d91624c37216e2cb83a53f37503452288a86bd52331e211d413c1` | `02-norespin/…post`, `03-cleanup/…pre` |
|
||
| **Final (after C1 cleanup)** | **`f73f41a878655896211b429c6f30d82f13d6e0b7eba78468a6bb0473de8a27ee`** | `03-cleanup/…post`; container `ports/hbox-watchdog-v6.kicad_sch.final` |
|
||
| `Drogheda-v6.pretty/IND-SMD_MWSA0804S.kicad_mod` (new) | `dbf535570b133bcb05e6ee7861f06e62cb54d554520488650e0b3c5429d5a71f` | new file (nothing overwritten) |
|
||
| Schematic PDF `03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf` | `a2c94a49…` → `41241140201f8f19098b1e1c37d3b256b1b6d83df7d338e6204c0fdf0e7191b0` | old copy in `00-pre/`; new copy `ports/hbox-watchdog-v6-schematic.pdf` |
|
||
|
||
### 4.2 Netlist proof (expected written before commit, asserted after)
|
||
|
||
| Group | Netlists | Expected (added / removed / field / pin-net / class) | Actual | Result |
|
||
|---|---|---|---|---|
|
||
| P1 ports | `00-baseline` → `01-ports` | 7 / 0 / 11 / 6 / 0 | 7 / 0 / 11 / 6 / 0 | **MATCH** |
|
||
| N1 no-respin | `01-ports` → `02-norespin` | 1 / 0 / 30 / 0 / 0 | 1 / 0 / 30 / 0 / 0 | **MATCH** |
|
||
| C1 cleanup | `02-norespin` → `03-cleanup` | 0 / 0 / 2 / 2 / 0 | 0 / 0 / 2 / 2 / 0 | **MATCH** |
|
||
| **Total** | `00-baseline` → `03-cleanup` | composition of P1+N1+C1 | 8 / 0 / 41 / 8 / 0 | **0 differences** (`ports/netlist_diff_total.md`) |
|
||
|
||
The 8 pin-net changes: U14.2 and U14.3 `/SER_DEA` → `/RS485_DE`; U15.12 `/SER_RXB` → `/RS232_R1OUT`; J10.8 NC → GND; J10.11 `/ETH_ACT_A` → `/ETH_ACTLED`; J10.12 `/ETH_ACTLED` → `/ETH_ACT_A`; U10.2 and U10.16 NC → GND. No existing symbol changed its UUID (asserted per group). Netlists are in `kicad/_to_delete/v6-ports-20260928/netlists/` and `ports/netlists/` (`final.xml` = `03-cleanup.xml`, sha256 `a5555894…b5b3`).
|
||
|
||
### 4.3 What changed
|
||
|
||
| ID | Ref | Change | LCSC (verified: stock / package) |
|
||
|---|---|---|---|
|
||
| P-1 | U14 | SP3485EN (C8963) → **THVD1410DR**, TI; symbol `Interface_UART:SP3485EN` kept (identical pinout); value text `THVD1410` | **C2671345** (8 006 / SOIC-8; JLC "pre-ordered chips") |
|
||
| P-1 | U14.2, U14.3 | `/SER_DEA` → new `/RS485_DE` | — |
|
||
| P-1 | **U32** (new) | SN74LVC1G04DBVR, `74xGxx:74LVC1G04`, `Package_TO_SOT_SMD:SOT-23-5`: 2 `/SER_DEA`, 4 `/RS485_DE`, 5 `/3V3`, 3 GND, 1 NC | **C7827** (163 327 / SOT-23-5) |
|
||
| P-1 | **C175** (new) | 100 nF 0603 at U32 | C14663 (Basic) |
|
||
| P-1 | **D39** (new) | SM712.TCT, `Diode:SM712_SOT23`, `SOT-23`: 1 `/RS485_A`, 2 `/RS485_B`, 3 GND | **C12067** (49 238 / SOT-23) |
|
||
| P-4 | **R145, R146** (new, **DNP**) | 390 Ω 0603: `/3V3`–`/RS485_A`, `/RS485_B`–GND (bias option) | C23151 (Basic, 311 280) |
|
||
| P-2 | U15 | MAX3232ESE+T (C15846) → **TRS3232EIDR**, TI; symbol `Interface_UART:MAX3232` kept; value text `TRS3232E` | **C308878** (3 564 / SOIC-16 narrow) |
|
||
| P-2 | U15.12 | `/SER_RXB` → new `/RS232_R1OUT` | — |
|
||
| P-2 | **R147** (new) | 1 kΩ 0603: `/RS232_R1OUT` → `/SER_RXB` | C21190 (Basic, 39.8 M) |
|
||
| P-3 | J10.11 / J10.12 | labels swapped: 11 = `/ETH_ACTLED` (yellow K), 12 = `/ETH_ACT_A` (yellow A) | — |
|
||
| P-3 | J10.8 | NC flag → wire + GND label (Bob-Smith return) | — |
|
||
| P-5 | **TP12** (new) | `TestPoint_Pad_D1.5mm` on `/1V8_MODEM`, excluded from BOM and CPL | no part |
|
||
| C | U10.2, U10.16 | CTSA̅/CTSB̅ NC flags → GND | — |
|
||
| H-03 | L2 (DNP), L6, L8, L20 | footprint `Inductor_SMD:L_Bourns-SRU8028_8.0x8.0mm` → **`Drogheda-v6:IND-SMD_MWSA0804S`** (parts unchanged: C17700171 / C17700165 / C17700171 / C17700167) | — |
|
||
| B-13 | K1, Q6, D6, R40, R41 | → **DNP** (relay and its driver) | — |
|
||
| B-13 | **R148** (new) | 0 Ω 0603: `/USART6_TX` → `/DIN_4G` (never together with K1) | C21189 (Basic, 13.9 M) |
|
||
| J-05 | TP1–TP8 | `in_bom no`, `in_pos_files no` (copper pads, not parts) | — |
|
||
| C | text notes | BLOCK M note (RS-485 direction and EFCR, H4 rule) and BLOCK P note (K1 DNP) updated | — |
|
||
|
||
**New footprint `IND-SMD_MWSA0804S`** (KiCad 9/10 format, `Drogheda-v6.pretty`): two SMD round-rect pads 2.75 × 4.0 mm (rratio 0.1) at x = ±4.125 mm (inner gap 5.5 mm, outer extent ±5.5 mm); F.Fab body 8.2 × 8.8 mm; F.CrtYd 11.5 × 9.7 mm; silk lines at y = ±4.6 mm between the pads. The pad axis is the body's 8.2 mm A dimension, where the 1.4 mm electrodes sit (the inter-electrode gap of 8.2 − 2 × 1.4 = 5.4 mm matches H = 5.5). Each pad covers 1.35 of the 1.4 mm electrode depth, plus a 1.4 mm toe beyond the body, and 4.0 of the 5.0 mm electrode length. The electrode is now **≈ 77 % wetted plus a toe fillet**, against 55–64 % on the SRU8028 land. The audit's courtyard estimate (9.4 × 9.8 mm) left out the pad overhang; the true courtyard is 11.5 × 9.7 mm (L-53). The KiCad MCP cannot list project-local libraries, but the ERC footprint-link check passed with the new footprint (no `footprint_link_issues`).
|
||
|
||
### 4.4 ERC (kicad-cli 10 via KiCad MCP)
|
||
0 errors before and after every group; 134 warnings before and after (the same pin-type, library-mismatch and not-in-library families listed in the change report §5). The new symbols (74LVC1G04, SM712_SOT23) are embedded fresh from the KiCad 10 libraries; Device:R and TestPoint are existing cached symbols. Overlaps 30 → 30 and wire crossings 9 → 9: all pre-existing, none involving a new part. I checked the new clusters in the rendered PDF (crops of U10/U14/U32/D39, U15/R147/R145–146, J10, K1/R148, TP12).
|
||
|
||
## 5. Additions to Michelle's layout list (continue after L-48)
|
||
|
||
49\. **RS-485 direction (P-1):** U32 (SOT-23-5) + C175 within 5 mm of U14 pins 2/3; C175 ≤ 2 mm from U32.5; `/RS485_DE` ≤ 10 mm; `/SER_DEA` U10.1 → U32.2. C84 ≤ 2 mm from U14.8.
|
||
|
||
50\. **RS-485 protection at P11 (P-1/P-4):** D39 SM712 ≤ 5 mm of copper from P11.1/P11.2, A/B routed flow-through (P11 → D39 pads → U14), D39.3 to GND with 2 vias ≤ 1 mm; R82 + JP5 beside P11 (termination at the bus end); R145/R146 (DNP 0603) beside P11. Route A/B as a pair (0.3 mm, gap ≤ 0.3 mm), ≥ 0.5 mm from other nets, nothing crossing on the adjacent layer.
|
||
|
||
51\. **RS-232 / H4 (P-2):** R147 ≤ 3 mm from U15.12; H4.3 connects on the U10 side (`/SER_RXB`), not at U15. U15's pump caps C85–C88 ≤ 3 mm and its decoupler **C89** ≤ 2 mm from U15.16. Correction to L-37: C84 is U14's decoupler, not U15's.
|
||
|
||
52\. **J10 (P-3):** pin 8 → GND with a ≥ 0.5 mm track to 2 GND vias placed **outside** the MAGJACK_NO_POUR keep-out (no pour under the magnetics). Re-route pins 11/12: J10.12 = `/ETH_ACT_A` (from R97), J10.11 = `/ETH_ACTLED` (to U11.27).
|
||
|
||
53\. **MWSA0804S land on L2/L6/L8/L20 (H-03):** the footprint swaps to `Drogheda-v6:IND-SMD_MWSA0804S` on *Update PCB from Schematic*. Pads go from 2.0 × 3.2 mm at ±3.9 mm to 2.75 × 4.0 mm at ±4.125 mm; the courtyard is **11.5 × 9.7 mm** (+0.6 mm per side on the pad axis, +0.4–0.6 mm across). Re-check neighbours and keep L-11/L-21/L-22/L-23 distances measured to the new pads. Update only through the schematic sync, never with a global "update footprints from library" (L-45).
|
||
|
||
54\. **B-13:** place R148 (0603) on the shortest path U16.37 (PC6) → U23.7 (`/DIN_4G`). K1, Q6, D6, R40, R41 are DNP; keep their footprints, with no copper change other than R148's two connections. Silk "K1 XOR R148".
|
||
|
||
55\. **TP12 beside TP8** (2.54 mm centre spacing) so tweezers can bridge them; both reachable with the lid open.
|
||
|
||
56\. **Debug pad row (D-12):** TP3 SWDIO, TP4 SWCLK, TP5 NRST, TP6 GND, TP7 3V3, TP9 PA9-TX in one straight row at 2.54 mm pitch, ≤ 30 mm of track from U16, silk labels. A 1×6 pogo clip or header can then be pressed on; no connector part needed.
|
||
|
||
57\. **SC16IS752 (U10):** Y2 + C82/C83 ≤ 5 mm from U10.6/7, no inner-layer track under them (extends L-39 to Y2); C81 ≤ 2 mm from U10.8.
|
||
|
||
58\. **USB-C CC resistors:** Rcc1/Rcc2 ≤ 5 mm from J9.A5/B5; R100/R101 ≤ 5 mm from J11.A5/B5.
|
||
|
||
59\. **Port silkscreen (extends L-46):** P11 "RS-485 A+ B− GND"; P12 "RS-232 TX RX GND"; JP5 "TERM"; R145/R146 "BIAS DNP"; H4 "UART-B TTL 3V3 TX RX GND"; J9 "MODEM USB"; J11 "DFU"; TP8/TP12 "USB_BOOT / 1V8"; P2 "5 V ONLY, BENCH".
|
||
|
||
60\. **Footprint attributes (J-05):** TP1–TP12 and JP1–JP6 set to SMD and "exclude from BOM/position files" on the board (matches the schematic now); then re-enable the DRC check `footprint_type_mismatch`.
|
||
|
||
61\. **Fiducials:** three global fiducials (1.0 mm copper, 2.0 mm mask opening) on F.Cu at three corners (LGA U18/U19 and 0.5 mm-pitch parts). The audit listed them as "optional"; no v6.1 means fit them now.
|
||
|
||
62\. **P1 check:** confirm that the DIBO DB128V-5.0-5P (C424683) pins fit the MKDS-1,5 land's holes (5.0 mm pitch) and that its wire entry faces the harness side of the enclosure. This is a check only; no change is expected.
|
||
|
||
Order notes for the same pass: pre-order **THVD1410DR C2671345** (JLC pre-order category, like U21 C2862740 and J14 C2977286). P11 and P12 are **pluggable headers** (DEGSON 15EDGRC-3.5-03P): buy the mating plugs (15EDGK-3.5-03P, 2 per board) with the harness, since they are not in the board BOM.
|
||
|
||
## 6. Firmware notes per port (FW 0.7.x, `board_v6.h`)
|
||
|
||
1. **SC16IS752 (U10, I²C1 0x4D, 100 kHz):** `BOARD_SER_XTAL_HZ 3686400`; divisor = 3 686 400/(16·baud): 9600 → 24, 19 200 → 12, 38 400 → 6, 57 600 → 4, 115 200 → 2. After every MCU reset write IOControl.SRESET (bit 3), because RESET̅ has no MCU line. Enable the FIFOs. **IODir = 0xFF, IOState = 0x00** (GPIO0–7 as outputs, driven low: no floating inputs). IRQ̅ on **PB8** (EXTI8, falling, no internal pull; R81 is external): service RHR/THR/LSR until IIR says no interrupt pending. CTSA̅/CTSB̅ are tied low, so leave auto-CTS (EFR[7]) off.
|
||
2. **RS-485 (channel A):** **EFCR = 0x10 (RTSCON = 1, RTSINVER = 0).** RTSA̅ goes LOW while transmitting, and U32 turns that into DE = 1; idle and reset leave the transceiver in receive. Never set RTSINVER (with U32 fitted it would invert the logic). Modbus RTU: time the 3.5-character gaps on the MCU; line turnaround is automatic after the last stop bit. Termination (JP5) and bias (R145/R146, DNP) are hardware options only.
|
||
3. **RS-232 (channel B) and H4:** plain 8N1, no flow control. H4 and P12 share channel B: use one at a time. H4 pin 3 can be driven by a TTL device (R147).
|
||
4. **Ethernet (U11, SPI2 PB13/PB14/PB15 AF5, CS̅ PB12 GPIO, INT̅ PC0, RST̅ PA15, power PD2):** at boot drive PA15 LOW and PD2 LOW before anything else. Power-up: SPI pins low → PD2 HIGH → wait ≥ 2 ms for 3V3_ETH → keep RST̅ LOW ≥ 500 µs → release → wait 1 ms (PLL) → SPI mode 0 at ≤ 21 MHz → check VERSIONR = 0x04 → PHYCFGR link. PC0 needs no pull; enable EXTI0 only while PD2 is HIGH. Off / battery: RST̅ LOW, SPI pins LOW or analog, PD2 LOW. LEDs are driven by the PHY (no firmware).
|
||
5. **USB DFU (J11):** ROM DFU (BOOT0 button + NRST) needs HSE 25 MHz (Y3). In the application's USB CDC (u-center passthrough) on OTG_FS PA11/PA12, **disable VBUS sensing** (PA9 is the debug-TX pad, not VBUS).
|
||
6. **Modem USB (J9):** J9 enumerates only while the modem is powered (PC10 MODEM_PWR_EN + PWRKEY sequence). Add a service command that holds the modem on for FOTA/debug. Forced download: short TP8–TP12 at modem power-on (hardware procedure, no firmware).
|
||
7. **Modem UART:** USART6 PC6 TX now reaches the modem **directly through R148** (no K1): drop every BYP_CTRL/Mode-B relay step and keep **PB5 LOW** (driver DNP). PC7 RX via R106 1 k; 115 200 Bd. PC9 STATUS has a hardware pull-down.
|
||
8. **I²C sensors:** 0x18 SC7A20 (INT1 → PB9, EXTI9); 0x20 PCF8574 (P0–P3 battery-gauge LEDs, P4–P6 RGB cathodes on P10, active LOW); 0x44 SHT40; 0x48 TMP102 charger (`tchg`); 0x49 TMP102 modem (`tmodem`). Keep I²C1 at **100 kHz** (PCF8574 limit). The SC7A20 WHO_AM_I read at 0x18 also serves as the v6 board identity check before any v6-only pin is driven (D-08, §7).
|
||
9. **ADC ports:** PB1 IN9 (P7 NTC), PC4 IN14 (P8 NTC2), PC5 IN15 (pack NTC tap), PA5 IN5 ignition (ratio 0.0833), PA4 IN4 5 V sense; compute VDDA from VREFINT.
|
||
10. **Other ports:** P4 fan on PA6 as GPIO on/off (TIM3 stays free for PPS); P9 panel LED on PB0 (Q4); P6 is a hardware reset (no firmware). SIM: no detect line (USIM1_DET NC), so keep SIM hot-swap detection disabled in the modem.
|
||
|
||
## 7. Accepted permanently
|
||
|
||
| # | ID | Item | Reason it is safe for the product's life |
|
||
|---|---|---|---|
|
||
| 1 | **A-10** | No over-voltage protection on VEH5V (TPS54360B high-side short, or > 6 V into P2) | It takes a component failure or bench misuse. The field input is the cabinet's regulated, current-limited 24 V (DDR-60G-24, D1), and F2 3 A caps the energy. The datasheet OVP option (MN1 + 6.2 k, sharing IGATE with Q7) also moves the PFI divider to the raw side and changes how backup mode recovers. A mistake there would break normal operation on every board, which is worse than the rare fault it guards against, and it cannot be validated without a bench cycle. P2 gets a "5 V ONLY, BENCH" silk label (L-59). |
|
||
| 2 | D-08 | Board-ID strap | Decision D8: firmware-only. The v6 is identified at boot by the SC7A20 WHO_AM_I at 0x18 (v6-only part) and the F9P answering on USART2, before any v6-only pin is driven. Binary names carry the board (memory rule). PD2 is taken by ETH_PWR_EN and PA9 by the debug pad. |
|
||
| 3 | E-06 (option) | Low-capacitance ESD array between the magjack and U11 | The HR911105A magnetics isolate the cable (1500 Vrms), the WIZnet reference design has no array, and the cabling stays inside the cabinet. J10.8 (Bob-Smith return) is fixed now. |
|
||
| 4 | E-07 | PoE | Not a requirement (Leo: ports must work; no PoE mentioned). The recorded decision is an external splitter. |
|
||
| 5 | A-20a | U12 MP1584EN → AP64350 | U12 is now PD2-gated (E-01), runs only on vehicle power and is proven on V5.5. A swap would need a new compensation/RT design and a different land, which adds risk for no functional gain. |
|
||
| 6 | G-07 | P3 XH-3 → XH-5/VH | 3 A per contact vs 1.4 A charge (R50 1.43 k), 0.6–1 A backup average, and ≈ 2 A LTE-only peaks (D9). XH-3 keeps the fielded 1S4P packs compatible. |
|
||
| 7 | G-06 | P2-only power back-feeds VEH5V → U25 body diode → P1.1 (≈ 4 V) | Benign; with A-01 the Q10/U2 branch is DNP, so nothing on `/24V` is powered. Documented for the bench procedure. |
|
||
| 8 | F-14 (option) | One USBLC6 at J11 instead of D14–D16 | Full-speed USB tolerates the PESD5V0S1BA capacitance (proven on V5.5). The stub problem is solved by routing (L-42). |
|
||
| 9 | G-08 (option) | 100 Ω series on NRST | D36 (PESD5V0S1BA) plus C104 100 nF already clamp and filter the P6 cable; a series R would split `/NRST` for no measurable gain. |
|
||
| 10 | J-03 | Retype `unspecified` library pins | Cosmetic. The warnings were checked net by net (single drivers, no conflicts), pin types do not reach the netlist, BOM or PCB, and the 134-warning baseline is recorded, so a new warning is found by diffing against it. |
|
||
| 11 | J-04 (re-link) | 10 "not found" symbols (+ TPS2552) not copied into a library | Cosmetic. The embedded copies make the schematic self-contained, and pin → pad → net was checked on 25 parts (H-09). Re-linking would change 11 lib_ids for zero electrical effect. |
|
||
| 12 | B-09 (option) | ESD on `/SIM_VDD` (array) | The SIM is inserted once at installation inside the enclosure. Data, CLK and RST have D23–D25 (moved next to J14 by L-38), and VDD has C171 100 nF at J14. |
|
||
| 13 | A-16 | Populate R124/R125 (U25 UVLO) | The board always sees the cabinet's regulated 24 V (D1), so the 4.3–5.8 V input dropout band is never reached in service. |
|
||
| 14 | A-18 (+ R123 option) | U25 compensation | The datasheet example with ≥ 60° phase margin (audit estimate) needs no change; the 0.3 → 2.5 A step is part of bring-up. |
|
||
| 15 | A-19 | ISO 16750-2 load dump | The cabinet DC-DC isolates the board from the alternator bus. SMCJ33A/SMBJ33A survive 36 V/60 min and ISO 7637 fast pulses; F2 opens behind them if a TVS ever shorts. |
|
||
| 16 | A-20b | F1 3 A PPTC now protects only the F9P LDO branch | Harmless and not needed for protection; keeping it avoids a footprint change. |
|
||
| 17 | C-05 (option) | C143 100 nF → 47 pF C0G DC block | 100 nF X7R 0402 is ESL-dominated at L1/L2 (≈ 3–4 Ω); insertion loss < 0.01 dB after a ≥ 25 dB antenna LNA. |
|
||
| 18 | D-06 (option) | D5 BAT54 → BAT54S | verify_2: optional once the SMBJ33A (D35) sits at P1.3 (applied). |
|
||
| 19 | A-03/A-04 (option) | R121/R122 at 0.1 % | 5.18–5.46 V at 1 % meets the LTC4040 VIN ≤ 5.5 V and the governor thresholds; no 0.1 % LCSC parts in the DB. |
|
||
| 20 | A-13 (option) | CLPROG → ADC | No ADC pin is left (PC5 went to the pack NTC). CLPROG stays on TP1 for bench current measurement. |
|
||
|
||
## 8. Done now
|
||
|
||
| # | ID | What | Where |
|
||
|---|---|---|---|
|
||
| 1 | P-1 (new) | RS-485 transceiver → THVD1410DR (IEC ESD, fail-safe on open/short/idle bus) | Schematic (U14) |
|
||
| 2 | P-1 (new) | Receive-by-default direction: U32 inverter + C175 | Schematic + L-49 |
|
||
| 3 | P-1 (new) | RS-485 surge TVS D39 SM712 at P11 | Schematic + L-50 |
|
||
| 4 | P-4 (new) | RS-485 bias option R145/R146 (DNP) | Schematic + L-50 |
|
||
| 5 | P-2 (new) | RS-232 transceiver → TRS3232EIDR (IEC ESD) | Schematic (U15) |
|
||
| 6 | P-2 (new) | H4 contention fixed: R147 1 k R1OUT → SER_RXB | Schematic + L-51 |
|
||
| 7 | P-3 (new) | J10 yellow LED polarity (pins 11/12) | Schematic + L-52 |
|
||
| 8 | P-3 / E-06 | J10.8 Bob-Smith return → GND | Schematic + L-52 |
|
||
| 9 | P-5 (new) | TP12 1V8 pad for modem USB forced download | Schematic + L-55 |
|
||
| 10 | C (new) | SC16IS752 CTSA̅/CTSB̅ tied to GND | Schematic |
|
||
| 11 | **H-03** | MWSA0804S footprint per the Sunlord land; L2/L6/L8/L20 re-pointed | Library + schematic + L-53 |
|
||
| 12 | **B-13** | K1 relay path removed: K1/Q6/D6/R40/R41 DNP, R148 0 Ω PC6 → DIN_4G | Schematic + L-54 |
|
||
| 13 | J-05 / H-09 | TP1–TP8 out of the BOM and CPL | Schematic + L-60 |
|
||
| 14 | D-12 (option) | SWD/debug access as one 2.54 mm pad row | L-56 |
|
||
| 15 | FHJ note | Fiducials | L-61 |
|
||
| 16 | L-37 (correction) | U15 decoupler is C89 (not C84) | L-51 |
|
||
| 17 | C | Block notes and value texts updated (no overlap on U14/U15) | Schematic |
|
||
|
||
Already closed by the apply pass and so not repeated here: every §7.1/§7.2 item, the D19 Minors, F-52 (modem TMP102 0x49), B-15, G-03, G-04, G-08 diodes, and J-04's flag and stub cleanup. Layout-only Minors and Notes (A-14, B-08, E-06 routing, F-14, F-17, F-18, G-05, J-02, C-09, D-15, F-21, A-20c silk) are in Michelle's L-1…L-48 list. Firmware-only Notes (B-14, B-16, C-08, D-13) are in the audit §8 and §6 above.
|
||
|
||
## 9. Anything that would still stop a port from working
|
||
None found in the schematic after this pass. Conditions that remain:
|
||
|
||
- **Layout:** L-49…L-62, plus the existing L-30/31/33 (RF), L-41/42/43 (USB) and L-44 (Ethernet pairs), must be done. In particular, the new MWSA land (L-53) must be placed before routing the switchers.
|
||
- **Order logistics:** pre-order THVD1410DR, U21 and J14; buy the P11/P12 mating plugs.
|
||
- **Bench confirmation on the first board:** J10 LINK (green) and ACT (yellow) both light; RS-485 idles in receive during MCU reset and in DFU (DE low); an RS-485 loopback at 9 600 and 115 200 Bd with EFCR = 0x10; RS-232 loopback; an H4 TTL adapter drives RXB with RS-232 idle; J9 enumerates with the modem on, and download mode works with TP8–TP12 shorted.
|
||
|
||
## 10. Files
|
||
- This report: `/home/claude/v6audit/ports/2026-09-28_Drogheda_EinarBoard-v6_Ports-and-No-Respin_v1.0.md`
|
||
- Final schematic copy: `ports/hbox-watchdog-v6.kicad_sch.final` (sha256 `f73f41a8…27ee`); PDF: `ports/hbox-watchdog-v6-schematic.pdf` and on the Mac `03-Architecture-Hardware/hbox-watchdog-v6-schematic.pdf` (sha256 `41241140…91b0`)
|
||
- Final netlist: `ports/netlists/final.xml` (= `03-cleanup.xml`); per-group diffs: `ports/out/{P1-ports,N1-norespin,C1-cleanup}/netlist_diff.md`; total: `ports/netlist_diff_total.md`
|
||
- BOM: `ports/bom_final_ungrouped.csv` (also in `_to_delete/v6-ports-20260928/`)
|
||
- Scripts: `ports/tools/` (`gP_ports.py`, `gN_norespin.py`, `gC_cosmetic.py`, `pcommon.py`, `q.py`); footprint source `ports/work/IND-SMD_MWSA0804S.kicad_mod`
|
||
- Mac backups: `kicad/_to_delete/v6-ports-20260928/` (`00-pre/`, `01-ports/`, `02-norespin/`, `03-cleanup/`, `netlists/`, `scratch/`)
|
||
- **Git (for Leo; nothing was run here):** in the `kicad` submodule commit `hbox-watchdog-v6.kicad_sch` and `Drogheda-v6.pretty/IND-SMD_MWSA0804S.kicad_mod`, push to Gitea `HBox_PCB`, then bump the parent gitlink (`git -c diff.ignoreSubmodules=none commit …`). If KiCad is open on v6, close it **without saving** before Update PCB.
|