hbox-docs/docs/hardware/v6-pinmap.md

252 lines
36 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "EinarBoard v6 — Mapa de pines del MCU (U16 STM32F411RET6, LQFP64) para board_v6.h / FW 0.7.x"
tags: [project-drogheda, hardware, einarboard, v6, pinmap, stm32, firmware]
date: 2026-09-28
project: Project Drogheda
author: Helgen Technologies
---
# EinarBoard v6 — Mapa de pines del MCU (U16 STM32F411RET6, LQFP64) para `board_v6.h` / FW 0.7.x
!!! 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.
Prosa y encabezados en español; la tabla de 64 pines y el borrador de `board_v6.h` se dejan en inglés (fuente directa para firmware). Fuente: `findings/pinmap-v6.md` de la [auditoría completa v6](v6-auditoria-completa.md) (§4), mismo snapshot del 2026-09-28. La tabla describe **la v6 tal como está dibujada**. Las filas marcadas ▶ audit llevan la consecuencia a nivel de pin de un hallazgo verificado de forma independiente, o de la asignación de pines libres que ambas verificaciones aceptan. Nada de esto se ha aplicado al esquemático (ver el [informe de cambios v6](v6-cambios-esquematico.md) para lo que sí se aplicó); las notas «▶ audit» dicen qué cambia si se adopta la corrección.
**Correcciones aplicadas al texto original (v1.0, 2026-09-28):**
1. **PA15 / ETH_RST:** el pull-down es **4.7 kΩ (C23162)**, no 100 kΩ. El RSTn del W5500 tiene su propio pull-up interno de 62–112 kΩ (DS v1.0.2 §5.3) además del pull-up JTDI de 30–50 kΩ de PA15; 4.7 k da ≤ 0.62 V en el peor caso. La alternativa de D-04 «mover a PD2 + 100 k» falla (1.56–2.04 V) y se retira (verificación, E-02 absorbe D-04).
2. Asignación de pines libres (conflicto (h) de la verificación): PD2 = `ETH_PWR_EN` (E-01), PB10 = `PFO` (A-13, absorbe D-10), PC5 = derivación de la NTC del paquete (F-51), PA9 = libre (pad de prueba D-12). El CLPROG → PC5 de D-10 se descarta. Abierto: el strap de identificación de tarjeta de D-08 también quería PD2; no queda pin libre salvo PA9 (Leo decide).
3. **D-01:** la compuerta aislante es la **Nexperia 74LVC1G125GV, C12518** (Ioff verificado), no el clon TECH PUBLIC C3040595; Rdfu1 22 k → 100 k (C25803). La alternativa de 10 k en serie se retira (≈ 0.28 mA, mismo orden que el retorno de corriente de la V5.5).
4. **D-06 se fusiona en F-02 y queda como Bloqueante** (Rig1 a ≤ 3 mm de cobre de P1.3 + SMBJ33A C224019), no ≤ 5 mm/Mayor.
5. Distancias del HSE: borde a borde de pad **8.32 / 11.30 mm** (los 10.30 / 14.21 mm de abajo son centro a centro) (D-02).
6. **C-01 (Bloqueante, absorbe D-07):** con la alimentación de antena por TPS2552, PC2 (`/GNSS_ANT_SHORT_N`) se vuelve una entrada real de falla por corto (FAULT̅, 10 k a /3V3_GNSS); PC1 sigue sin manejar.
7. **Decodificación de PB4:** citando la tabla de la hoja de datos del LTC4040 (p. 14), «pausa NTC» = CHRG bajo ∧ FAULT bajo y batería mala = CHRG alto ∧ FAULT bajo; esto prevalece sobre el texto de la fila PB4.
**Cobertura: 64 / 64 pines.** Fuentes: `evidence/mcu_pins.csv` (netlist), `evidence/pcb_pads.csv` (distancias centro a centro de pad, misma net), `evidence/firmware_pins.csv` (`board_v5.h` de V5 + `hbox_v5_bringup.ino` 0.6.0), ST DS10314 (DocID026289 Rev 7) tabla 8 (definición de pines, estructura de E/S) y tabla 53 (E/S estática), y la base de datos de funciones alternas de ST (`STM32_open_pin_data`: `mcu/STM32F411R(C-E)Tx.xml` + `mcu/IP/GPIO-STM32F411_gpio_v1_0_Modes.xml`, la fuente de CubeMX para la tabla 9 del DS10314). El símbolo embebido del esquemático se cotejó contra el pinout LQFP64 de ST: **64/64 números y nombres de pin coinciden** (el aviso ERC «symbol differs from library» en U16 es cosmético).
Leyenda. FT = tolerante a 5 V solo en modo digital (DS10314 tabla 8 nota 4: no en modo analógico ni de oscilador; tabla 53 nota 5: el pull-up/down interno debe estar apagado por encima de VDD+0.3 V). TC = solo 3.3 V. En este LQFP64 solo **PA0** y **PB5** son TC; todos los demás GPIO son FT. PC13–PC15 son pines del dominio de respaldo (tabla 8 nota 2: sumidero ≤ 3 mA, ≤ 2 MHz, ≤ 30 pF, nunca fuente). **Ningún pin del MCU en v6 lleva una señal de 5 V ni de 1.8 V**: todas las líneas de 1.8 V del módem pasan por U23/U24 (74LVC2T45) o por Q20/Q21 en open-drain, y todo pull-up es a /3V3. «¿Igual?» = si la macro de V5 en ese pin significa lo mismo en v6.
## 1. Tabla de pines (pines físicos 1–64)
| Pin | Nombre | Net v6 | Partes conectadas (resumen) | Función en v6 | Dir / modo (FW) | Periférico + AF / ADC / EXTI | ¿Necesita 5 V? / pin | Macro V5 en este pin → ¿igual? | Macro v6 propuesta | Notas / conflictos |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | VBAT | /3V3 | 3V3 big net | Backup-domain supply, tied to 3V3 (no coin cell) | power | — | — / S | — | — | RTC + BKP regs + LSE lost whenever /3V3 drops (P5 cut-off open, no USB) |
| 2 | PC13 | /LED_C13 | D17 blue LED (K) ← R102 1 k ← /3V3 | Board status LED, active LOW (sink) | OUT, LOW = on | GPIO, EXTI13 | No / FT backup-domain | `PIN_LED_C13` → same | `PIN_LED_C13` | I = (3.3 − 2.8 V Vf, C125103) / 1 k ≈ 0.5 mA ≤ 3 mA sink limit ✓ (dim) |
| 3 | PC14-OSC32_IN | /LSE_IN | Y4.1 (32.768 kHz C32346, CL 12.5 pF), C115 12 pF | LSE | oscillator | RCC_OSC32_IN | — | `BOARD_LSE_HZ` → same | `BOARD_LSE_HZ 32768UL` | Y4.1 5.54 mm, C115 2.96 mm. Crystal/caps mismatch → D-03 |
| 4 | PC15-OSC32_OUT | /LSE_OUT | Y4.2, C116 12 pF | LSE | oscillator | RCC_OSC32_OUT | — | same | — | Y4.2 7.91 mm, C116 6.49 mm (> 5 mm) |
| 5 | PH0-OSC_IN | /HSE_IN | Y3.1 (25 MHz HC-49S C14872, CL 20 pF), C113 15 pF | HSE (USB, PLL, ROM DFU needs it) | oscillator | RCC_OSC_IN | — | `BOARD_HSE_HZ` → same | `BOARD_HSE_HZ 25000000UL` | Y3.1 **10.30 mm** ctr (**8.32 mm pad edge**, verify_2), C113 13.72 mm, track 14.5 mm → D-02. ▶ audit: Y3 → C2901684 + C113/C114 12 pF C38523 (alt. C9006 + 15 pF C1644) |
| 6 | PH1-OSC_OUT | /HSE_OUT | Y3.2, C114 15 pF | HSE | oscillator | RCC_OSC_OUT | — | same | — | Y3.2 **14.21 mm** ctr (**11.30 mm pad edge**, verify_2), C114 17.02 mm, track 20.7 mm → D-02 |
| 7 | NRST | /NRST | C104 100 nF (3.26 mm), SW1 RESET, P6.1 RESET-EXT, TP5 | MCU reset only | RST (int. pull-up 30–50 kΩ) | — | — | — (V5: P10) | — | NRST reaches only the MCU. Route 108.6 mm (91.9 F.Cu + 16.8 In2). P6 external cable has no ESD → G-08 |
| 8 | PC0 | /ETH_INT | U11.36 ~INT (W5500) | W5500 interrupt, active LOW | IN pull-up | GPIO, ADC1_IN10, **EXTI0** | No / FT | `PIN_ETH_INT` → same | `PIN_ETH_INT` | BOOT1 trap avoided (V4 had it on PB2) ✓ |
| 9 | PC1 | /GNSS_ANT_DETECT | U18.4 ANT_DETECT — **F9P input** | none usable (see D-07) | ANALOG / hi-Z, never drive HIGH while F9P off | GPIO, ADC1_IN11, EXTI1 | No / FT | V5: NC · **V5.6: MODEM_RST_MCU** → different | `PIN_GNSS_ANT_DET` (reserved) | No antenna-current supervisor on v6: MCU cannot learn antenna state here. ▶ audit C-01: stays undriven (open-antenna detect not implemented; infer from C/N0) |
| 10 | PC2 | /GNSS_ANT_SHORT_N | U18.6 ANT_SHORT_N — **F9P input** | none usable (D-07) | ANALOG / hi-Z | GPIO, ADC1_IN12 (SPI2_MISO AF5 unused) | No / FT | V5: NC · **V5.6: MODEM_LED_MCU** → different | `PIN_GNSS_ANT_SHORT_N` (reserved) | as PC1. ▶ audit C-01: TPS2552DBVR (C46506) FAULT̅ drives this net (10 k C25804 to /3V3_GNSS) → LOW = antenna short; input, no MCU pull; valid only while the F9P rail is on |
| 11 | PC3 | /GNSS_RTK_STAT | U18.20 RTK_STAT (output) | RTK status: 0 = fixed, blinking = corrections in use, 1 = none | IN, pull-DOWN while F9P off | GPIO, ADC1_IN13, **EXTI3** (shared with PB3) | No / FT | V5: NC · **V5.6: MODEM_EN (output!)** → different | `PIN_GNSS_RTK_STAT` | A V5.6 binary would drive this against the F9P output → D-08 |
| 12 | VSSA | GND | — | analog ground | power | — | — | — | — | |
| 13 | VDDA | /VDDA | R104 10 Ω ← 3V3, C109 100 nF (3.13 mm), C112 1 µF (4.61 mm) | ADC reference (VREF+ bonded) | power | — | — | `ADC_REF 3.3f` → same | — | ✓ DS10314 recommendation |
| 14 | PA0-WKUP | /BAT_SENSE | R5 10 k ← /BAT_PLUS, R6 10 k → GND, C5 100 nF (5.6 mm) | Pack voltage / 2 | ANALOG | **ADC1_IN0** (WKUP1 spare) | No (≤ 2.10 V at 4.2 V) / TC | `PIN_BAT_SENSE` → same | `PIN_BAT_SENSE` | `DIV_RATIO 2.0` unchanged. 0.21 mA permanent pack drain |
| 15 | PA1 | /PWR_CTRL | R1 1 k → Q5 MMBT3904 base (**no base pull-down**) → /GATE_LS (R2 10 k to SYS5V) → Q1 AO3401A → /SW_5V → U21 AP2112K → /3V3_GNSS | **F9P rail enable**, HIGH = on | OUT PP, LOW at boot | GPIO / TIM2_CH2 AF1 (soft-start PWM) | No / FT | `PIN_PWR_CTRL` → **CHANGED**: V5 = RTK + 4G stack; v6 = F9P only (modem has PC10) | `PIN_GNSS_PWR` (keep `PIN_PWR_CTRL` alias) | Floats in reset/DFU → D-09 (absorbs A-12). ▶ audit: 100 k C25803 `/BASE_LS` → GND next to Q5 |
| 16 | PA2 | /GNSS_TX | U18.43 RXD (F9P UART1 in) | MCU → F9P UART1 (UBX config) | AF PP only while F9P on; INPUT no-pull when off | **USART2_TX AF7** | No / FT | `PIN_GNSS_TX` → same (was simpleRTK2B UART1) | `PIN_GNSS_TX` | 0.5.5 float rule is mandatory (direct into F9P) |
| 17 | PA3 | /GNSS_RX | U18.42 TXD (F9P UART1 out) | F9P → MCU NMEA/UBX | AF; pull-up only while F9P on | **USART2_RX AF7** | No / FT | `PIN_GNSS_RX` → same | `PIN_GNSS_RX` | `GNSS = Serial2` |
| 18 | VSS | GND | — | ground | power | — | — | — | — | |
| 19 | VDD | /3V3 | nearest C106 3.29 mm | supply | power | — | — | — | — | per-pin cap target ≤ 2 mm (Note) |
| 20 | PA4 | /5V_SENSE | R7 10 k ← /VEH5V, R8 10 k, C7 100 nF (5.5 mm) | VEH5V / 2 (now U25 output or bench P2) | ANALOG | **ADC1_IN4** | No (2.50 V at 5.00 V, 2.66 V at 5.32 V) / FT | `PIN_5V_SENSE` → same net; source is now on-board U25 | `PIN_5V_SENSE` | LTC4040 PFI real threshold 1.19 V × 3.7 = 4.40 V (LTC4040 DS pin 19) |
| 21 | PA5 | /IGN_SENSE | Rig1 22 k ← /IGN_IN (P1.3); Rig2 22 k ∥ Rigb1 3.3 k → GND; C9 100 nF (3.09 mm); D5 BAT54 → /3V3 | Ignition present / vehicle-voltage estimate | **ANALOG** on v6 (V5 read it digital) | **ADC1_IN5** (EXTI5 if digital) | No at the pin (3.23 V at 28 V; clamp ≈ 3.55 V above 30.3 V) / FT (not in analog mode) | `PIN_IGN_SENSE` → same net, **digital read no longer adequate** (12 V vehicles) | `PIN_IGN_SENSE` | Divider midpoint, pin and C9 on one net (junction verified) · D-05, D-06. ▶ audit F-02 (Blocker, absorbs D-06): Rig1 moves ≤ 3 mm of copper from P1.3 + SMBJ33A C224019 at P1.3, so the long run becomes the 22 k-limited `/IGN_SENSE`; pin net unchanged. D-05: Rigb1 3.3 k → 2.2 k C4190 → ratio 0.0833 (12 V → 1.00 V, 24 V → 2.00 V, 36 V → 3.00 V) |
| 22 | PA6 | /FAN_PWM | Rg1 100 Ω → Q2 AO3400A gate, Rgs1 100 k | Fan low-side switch, HIGH = on | OUT PP (ON/OFF policy) | GPIO / **TIM3_CH1 AF2** | No / FT | `PIN_FAN_PWM` → same | `PIN_FAN` | TIM3 is also PA7's capture timer (§2.4) |
| 23 | PA7 | /GNSS_TIMEPULSE | U18.53 TIMEPULSE | F9P 1 PPS | IN, pull-down while F9P off | **TIM3_CH2 AF2** input capture / EXTI7 | No / FT | V5: NC → new | `PIN_GNSS_PPS` | |
| 24 | PC4 | /NTC2 | R126 10 k/1 % → 3V3, C157 100 nF (3.11 mm), P8.1 | External NTC probe 2 (10 k B3950) | ANALOG | **ADC1_IN14** | No / FT | V5: NC (V5.6: MODEM_ON_SLEEP, DNP) → new | `PIN_NTC2` | `$PHLG tntc2` (append) |
| 25 | PC5 | unconnected (NC flag) | — | spare | ANALOG (lowest Idd) | ADC1_IN15 | — | V5: NC (V5.6: MODEM_ASSOC, DNP) | `PIN_SPARE_PC5` → `PIN_NTC_CELL` | ▶ audit F-51 (verify_1 (h)): pack-NTC tap, `/NTC` → 100 k (C25803) / 120 k (C25808) + 10 nF → PC5; PC5 ≤ 2.98 V; valid only with VEH5V present. D-10's CLPROG use dropped |
| 26 | PB0 | /EXT_LED | Q4 AO3400A gate, Rled1 10 k → panel LED D1 at **P9** | Panel LED, HIGH = on | OUT PP | GPIO (TIM3_CH3 AF2) | No / FT | `PIN_EXT_LED` → same (connector P8 → P9) | `PIN_EXT_LED` | |
| 27 | PB1 | /NTC_TEMP | R42 10 k/1 % → 3V3, C24 100 nF (6.63 mm), P7.1 | External NTC probe 1 (hot-spot, `tntc`) | ANALOG | **ADC1_IN9** | No / FT | `PIN_NTC` → same (connector P12 → P7) | `PIN_NTC` | |
| 28 | PB2 | /BOOT1_STRAP | R99 10 k → GND (2.84 mm) | BOOT1 = 0 strap (DFU entry) | never reconfigure | BOOT1 | — | — (V4: ETH_INT!) | — | "never repurpose PB2" ✓ |
| 29 | PB10 | unconnected (NC flag) | — | spare | ANALOG | TIM2_CH3 AF1, I2C2_SCL AF4, SPI2_SCK AF5, EXTI10 | — | V5: NC | `PIN_SPARE_PB10` → `PIN_PFO` | ▶ audit A-13 (absorbs D-10): U6.20 PFO → PB10, 100 k C25803 pull-up to /3V3, EXTI10 falling = backup entry at VEH5V < 4.40 V |
| 30 | VCAP1 | /VCAP1 | C111 4.7 µF (3.19 mm) | core regulator cap | power | — | — | — | — | ✓ |
| 31 | VSS | GND | — | ground | power | — | — | — | — | |
| 32 | VDD | /3V3 | nearest C105 3.65 mm | supply | power | — | — | — | — | |
| 33 | PB12 | /ETH_CS | U11.32 SCSn | W5500 chip select | OUT PP (INPUT_PULLUP while W5500 idle) | GPIO (SPI2_NSS AF5 unused) | No / FT | `PIN_ETH_CS` → same | `PIN_ETH_CS` | |
| 34 | PB13 | /ETH_SCK | U11.33 | SPI2 SCK | AF | **SPI2_SCK AF5** | No / FT | `PIN_ETH_SCK` → same | `PIN_ETH_SCK` | |
| 35 | PB14 | /ETH_MISO | U11.34 | SPI2 MISO (W5500 output) | AF in | **SPI2_MISO AF5** | No / FT | `PIN_ETH_MISO` → same | `PIN_ETH_MISO` | |
| 36 | PB15 | /ETH_MOSI | U11.35 | SPI2 MOSI | AF | **SPI2_MOSI AF5** | No / FT | `PIN_ETH_MOSI` → same | `PIN_ETH_MOSI` | |
| 37 | PC6 | /USART6_TX | K1.10 (NO contact) → /DIN_4G → U23 (3.3 → 1.8 V) → U19.10 RXD | MCU → modem (AT, GGA, `$PHLG`) when K1 energised (Mode B) | AF PP while modem on; INPUT otherwise | **USART6_TX AF8** | No / FT | V5: NC. **Takes over V5 PA9 `PIN_USART1_TX` (RELAY TX)** | `PIN_MODEM_TX` | NC flag on a connected pin (cosmetic) → D-11 |
| 38 | PC7 | /USART6_RX | R106 100 Ω ← /DOUT_4G ← U24 (1.8 → 3.3 V) ← U19.9 TXD; /DOUT_4G also → U18.26 F9P RXD2 | modem → MCU (AT replies + RTCM byte count) | AF, **no pull while F9P off** | **USART6_RX AF8** | No / FT | V5: NC (V5.6 RTCM_TAP, same peripheral) | `PIN_MODEM_RX` | NC flag cosmetic (D-11 → J-04). A pull-up here back-feeds the F9P (D-01). ▶ audit D-01: U27 74LVC1G125GV C12518 on /3V3_GNSS isolates U18.26 (new net `/DOUT_4G_F9P`); PC7/R106 stay on `/DOUT_4G`. B-10: R106 100 Ω → 1 kΩ C14676 |
| 39 | PC8 | /MODEM_PWRKEY | Q20 2N7002 gate, R114 100 k PD → U19.1 PWRKEY (int. pull-up to VBAT) | Modem power key; MCU HIGH = key pressed | OUT PP, LOW at boot | GPIO (TIM3_CH3) | No / FT | V5: NC → new | `PIN_MODEM_PWRKEY` | on ≥ 50 ms, off ≥ 2.5 s (Phase-1 spec / Phase-2 delta) |
| 40 | PC9 | /MODEM_STATUS | U24.6 (2B) ← U19.66 STATUS (1.8 V) | Modem powered/ready (≈ 11.2 s after power-on) | IN pull-DOWN (floats when modem off: U24 Ioff) | GPIO, **EXTI9** (shared with PB9) | No / FT | V5: NC → new | `PIN_MODEM_STATUS` | poll it (EXTI9 belongs to the accelerometer) → D-14 (merged into B-10). ▶ audit B-10: 100 k C25803 `/MODEM_STATUS` → GND |
| 41 | PA8 | /CHRG_EN | U6.4 CHGOFF, R56 100 k → GND | Charger disable; HIGH = charge OFF | OUT PP | GPIO (TIM1_CH1 AF1) | No / FT | `PIN_CHRG_EN` → same | `PIN_CHRG_EN` | In reset/DFU R56 → charger ON (as V5). ▶ audit A-11: R56 100 k re-netted to /3V3 → charger OFF by default; polarity unchanged |
| 42 | PA9 | unconnected (NC flag) | — | spare | ANALOG | USART1_TX AF7, OTG_FS_VBUS AF10 | — | `PIN_USART1_TX` → **REMOVED** (role now PC6) | `PIN_DBG_TX` if a pad is added | USART1 is RX-only on v6 (TX alternates PA15/PB6 are taken). Add a test pad → D-12. ▶ audit: only remaining spare after (h); also the only candidate left for D-08's board-ID strap (open) |
| 43 | PA10 | /USART1_RX | U18.27 TXD2 (F9P UART2 out), K1.1 (NC → modem DIN), Rdfu1 22 k → /3V3 (2.28 mm) | Passive tap on the F9P → modem stream (fail-safe path through K1 NC) | AF RX, **no internal pull** (PA10 pull-up is 7–14 kΩ, DS Table 53) | **USART1_RX AF7** | No / FT | `PIN_USART1_RX` → same (tap), now RX-only | `PIN_F9P_TX2_TAP` | `Uart RELAY(PA10, PA9)` → RX-only instance. ▶ audit D-01: Rdfu1 22 k → 100 k C25803 (back-feed ≤ 27 µA) |
| 44 | PA11 | /DFU_DM | J11 A7/B7, D15 PESD5V0S1BA (6.74 mm from J11) | USB FS D− (ROM DFU + CDC console) | AF | **OTG_FS_DM AF10** | No / FT | `CON SerialUSB` → same | — | route 55.1 mm |
| 45 | PA12 | /DFU_DP | J11 A6/B6, D14 (3.19 mm) | USB FS D+ | AF | **OTG_FS_DP AF10** | No / FT | same | — | route 50.1 mm |
| 46 | PA13 | /SWDIO | TP3 (6.04 mm) | SWD data | AF0 (pull-up at reset) | SYS_JTMS-SWDIO AF0 | — | — | — | |
| 47 | VSS | GND | — | ground | power | — | — | — | — | |
| 48 | VDD | /3V3 | C107 2.10 mm | supply | power | — | — | — | — | ✓ |
| 49 | PA14 | /SWCLK | TP4 (5.43 mm) | SWD clock | AF0 (pull-down at reset) | SYS_JTCK-SWCLK AF0 | — | — | — | |
| 50 | PA15 | /ETH_RST | U11.37 RSTn | W5500 reset, LOW = held | OUT PP, drive LOW first thing | GPIO (**JTDI AF0 at reset, 30–50 kΩ pull-up**) | No / FT | `PIN_ETH_RST` → same | `PIN_ETH_RST` | W5500 is released during MCU reset/boot → E-02 (absorbs D-04). ▶ audit (verified): **4.7 k C23162 `/ETH_RST` → GND at U11.37** → ≤ 0.62 V worst case (W5500 internal 62–112 kΩ pull-up + PA15 30–50 kΩ); 100 k gives 2.75 V and fails |
| 51 | PC10 | /MODEM_PWR_EN | U20.3 EN (AP64350), R113 100 k PD | Modem buck enable, HIGH = on | OUT PP, LOW at boot | GPIO | No / FT | V5: NC (**V5.6 used PC3**) → new | `PIN_MODEM_PWR_EN` | any MCU reset power-cycles the modem (by design). ▶ audit A-01: U20 input moves to /MAIN5V only (D20 removed, no D21); EN control unchanged (R113 100 k PD, EN pull-up 1.5 µA → 0.15 V = OFF) |
| 52 | PC11 | /MODEM_RST | Q21 2N7002 gate, R115 100 k PD → U19.16 RESET | Modem reset; MCU HIGH = asserted | OUT PP, LOW at boot | GPIO | No / FT | V5: NC (**V5.6 used PC1**) → new | `PIN_MODEM_RST` | |
| 53 | PC12 | /GNSS_RESET_N | U18.49 RESET_N, R105 10 k → /3V3_GNSS | F9P hard reset, LOW = reset | **OUTPUT_OPEN_DRAIN** (or INPUT); never push HIGH | GPIO | No / FT | V5: NC → new | `PIN_GNSS_RESET_N` | push-HIGH with F9P off = back-feed |
| 54 | PD2 | unconnected (NC flag) | — | spare | ANALOG | TIM3_ETR AF2, EXTI2 | — | V5: NC | `PIN_ETH_PWR_EN` (▶ audit) | ▶ audit E-01 (verify_1 (h)): `/ETH_PWR_EN` → U12.2 EN, 100 k C25803 → GND; HIGH = 3V3_ETH on. D-08's 10 k board-ID strap on this pin conflicts and is unresolved |
| 55 | PB3 | /CHRG_STAT | U6.8 CHRG (open-drain), R57 100 k → /3V3 | LOW = charging | IN, no pull | GPIO, **EXTI3** (JTDO/SWO AF0 at reset; TIM2_CH2) | No (3V3 pull-up) / FT | `PIN_CHRG_STAT` → same | `PIN_CHRG_STAT` | SWO trace unavailable |
| 56 | PB4 | /CHRG_FAULT | U6.9 FAULT (open-drain), R58 100 k → /3V3 | LOW = fault / NTC pause | IN | GPIO, EXTI4 (NJTRST pull-up at reset) | No / FT | `PIN_CHRG_FAULT` → same | `PIN_CHRG_FAULT` | "pausa NTC" = EN allowed ∧ STAT idle ∧ FAULT low. ▶ audit: the power auditor decodes from the LTC4040 datasheet table (p.14) "pausa NTC" = CHRG low ∧ FAULT low, bad battery = CHRG high ∧ FAULT low; use that decode |
| 57 | PB5 | /BYP_CTRL | R40 1 k → Q6 MMBT3904 (R41 10 k B–E) → K1 coil (/SYS5V) | K1 Mode B; HIGH = energised = modem DIN ← PC6 | OUT PP, LOW at boot | GPIO (TIM3_CH2 AF2) | No / TC (output only ✓) | `PIN_BYP_CTRL` → same pin; NO contact now = PC6 (was PA9) | `PIN_BYP_CTRL` | K1 0.15 W while held |
| 58 | PB6 | /I2C_SCL | R30 4.7 k; U3 SHT40, U10 SC16IS752, U13 PCF8574, U26 SC7A20 | I2C1 SCL | AF OD | **I2C1_SCL AF4** | No / FT | `PIN_I2C_SCL` → same | `PIN_I2C_SCL` | Map: 0x18 SC7A20 (new), 0x20 PCF8574, 0x44 SHT40, 0x4D SC16IS752. **No TMP102** (0x48/0x49) on v6 as drawn. ▶ audit F-51: TMP102 C99269 at 0x48 (ADD0 → GND) between U6 and L6; F-52 option: second TMP102 at 0x49 |
| 59 | PB7 | /I2C_SDA | R31 4.7 k; same devices | I2C1 SDA | AF OD | **I2C1_SDA AF4** | No / FT | `PIN_I2C_SDA` → same | `PIN_I2C_SDA` | |
| 60 | BOOT0 | /BOOT0 | R98 10 k → GND (3.65 mm), SW2 → 3V3 | Boot select | I (B) | — | — | — | — | route 73.2 mm (61.4 mm on In1) |
| 61 | PB8 | /SER_IRQ | U10.15 IRQ (open-drain), R81 10 k → 3V3 | SC16IS752 IRQ | IN | GPIO, **EXTI8** | No / FT | `PIN_SER_IRQ` → same | `PIN_SER_IRQ` | |
| 62 | PB9 | /ACC_INT1 | U26.5 INT1 (push-pull, active HIGH default) | Motion interrupt / STOP wake | IN, EXTI rising | GPIO, **EXTI9** (TIM4_CH4, TIM11_CH1) | No / FT | V5: NC → new | `PIN_ACC_INT1` | owns EXTI9 |
| 63 | VSS | GND | — | ground | power | — | — | — | — | |
| 64 | VDD | /3V3 | C110 3.90 mm (shared with pin 1), C108 4.63 mm | supply | power | — | — | — | — | |
Count check: 50 GPIO pads (PA0–PA15 = 16, PB0–PB10 + PB12–PB15 = 15, PC0–PC15 = 16, PD2 = 1, PH0/PH1 = 2) + NRST, BOOT0, VBAT, VCAP1, VDDA, VSSA (6) + VDD ×4 + VSS ×4 = **64**. 60 pins are connected; the 4 truly unconnected spares are **PA9, PB10, PC5, PD2**.
## 2. Conflictos y banderas
### 2.1 Pines de firmware que desaparecen o cambian de significado en v6
| Ítem V5 | Estado en v6 | Sustituto / acción |
|---|---|---|
| `PIN_USART1_TX` PA9 + `Uart RELAY(PA10, PA9)` | PA9 sin conexión (bandera NC) | La **consola nunca estuvo en PA9**: `CON = SerialUSB` (PA11/PA12, J11) no cambia. PA9 era el camino de inyección del Modo B hacia el módem por K1 NO. En v6 ese camino es **PC6 USART6_TX → K1.10 (NO)**, y el MCU ahora también escucha al módem en **PC7 USART6_RX**. USART1 queda como derivación **solo RX** en PA10 (TXD2 del F9P). En v6 no existe pin TX de depuración por UART (D-12). |
| `PIN_PWR_CTRL` PA1 | Solo riel del GNSS | La alimentación del módem es `PIN_MODEM_PWR_EN` PC10. Los ciclos de etapa nunca deben usarse para recuperar el módem. |
| Puente PCF8574 P7 → SW4G1 `MODEM_RST` (`PCF_MODEM_RST_BIT 0x80`, `ENABLE_MODEM_RST`) | U13.12 (P7) sin conexión; no hay SW4G1 | Eliminar el camino del puente; usar PC11 (reset) / PC8 (PWRKEY) / PC10 (alimentación). |
| TMP102 0x48 (`I2C_ADDR_TMP102`, fuente de `CHG_CELL_HOT/COOL`) | **no hay TMP102 en v6** | La temperatura de celda para el gobernador no tiene fuente en la tarjeta. ▶ audit F-51 (Mayor, verificado): TMP102 C99269 en 0x48 junto a U6 (`tchg`) + derivación de la NTC del paquete en PC5 (`tcell`, válida con VEH5V presente). |
| `PIN_ETH_INT` V4 = PB2 | PC0 en v6 (como V5) | ✓ |
| `board_v56.h` de V5.6 (ECO §H): MODEM_EN PC3, MODEM_RST PC1, MODEM_LED PC2, ONSLP PC4, ASSOC PC5, RTCM_TAP PC7 | v6: PC1/PC2 = entradas del F9P, **PC3 = salida RTK_STAT del F9P**, PC4 = NTC2 | `board_v56.h` y `board_v6.h` nunca deben compartir binario: un build V5.6 maneja PC3 en ALTO contra el RTK_STAT push-pull del F9P. Se propuso un strap de identificación de tarjeta (D-08); su pin PD2 ahora lo reclama E-01, así que el pin del strap queda abierto (PA9 es el único libre). |
### 2.2 Nets de v6 sin contraparte en firmware (nuevas para 0.7.x)
PA7 GNSS_TIMEPULSE · PC1/PC2 ANT_DETECT/ANT_SHORT_N (entradas del F9P, reserva) · PC3 GNSS_RTK_STAT · PC4 NTC2 · PC6/PC7 USART6 · PC8 PWRKEY · PC9 STATUS · PC10 MODEM_PWR_EN · PC11 MODEM_RST · PC12 GNSS_RESET_N · PB9 ACC_INT1 (SC7A20 en 0x18).
### 2.3 Comprobaciones de ADC y de 5 V
- Toda net analógica está en un pad con ADC: BAT_SENSE PA0/IN0, 5V_SENSE PA4/IN4, IGN_SENSE PA5/IN5, NTC_TEMP PB1/IN9, NTC2 PC4/IN14. Pad ADC libre: PC5/IN15. ✅
- Ninguna señal de 5 V en ningún pin; los dos pines TC llevan PA0 ≤ 2.10 V y PB5 (salida). ✅
- IGN_SENSE es el único pin que puede exceder VDD: llega a 3.23 V con 28 V, y el clamp BAT54 lo sostiene en ≈ 3.55–3.65 V por encima de ≈ 30.3 V (0.24 mA a 36 V, 1.2 mA a 58 V hacia /3V3). En modo analógico se pierde la tolerancia FT, así que el clamp es lo que lo protege. No hay clamp negativo (D-06).
### 2.4 Asignación de funciones alternas, temporizadores y EXTI
- **Sin conflictos de AF.** USART2 PA2/PA3 AF7 · USART6 PC6/PC7 AF8 · USART1_RX PA10 AF7 (sin TX) · SPI2 PB13/PB14/PB15 AF5 (CS PB12 como GPIO) · I2C1 PB6/PB7 AF4 · OTG_FS PA11/PA12 AF10 · SWD PA13/PA14 AF0. Cada periférico usa un conjunto de AF consistente.
- El TX de USART1 no se puede recuperar: sus alternativas son PA9 (NC), PA15 (ETH_RST) y PB6 (I2C1_SCL).
- Temporizadores: ventilador PA6 = TIM3_CH1 y PPS PA7 = TIM3_CH2 comparten la base de tiempo de TIM3. La política del ventilador es ON/OFF (GPIO, `drogheda-fan-policy`), así que TIM3 queda libre para capturar el PPS. Si algún día se restaura el PWM del ventilador, marcar el tiempo del PPS por EXTI7 (contador de ciclos DWT). El arranque suave de PA1 usa TIM2_CH2 (libre).
- Colisiones EXTI (un puerto por línea, SYSCFG_EXTICR): **EXTI3** = PC3 RTK_STAT y PB3 CHRG_STAT; **EXTI9** = PB9 ACC_INT1 y PC9 MODEM_STATUS. Asignar EXTI9 al acelerómetro (despertar por movimiento) y sondear STATUS. Asignar EXTI3 a RTK_STAT solo si se quiere medir el parpadeo, y sondear CHRG_STAT. EXTI0 (ETH_INT), EXTI7 (PPS) y EXTI8 (SER_IRQ) son únicos.
### 2.5 Pines que tocan al ZED-F9P (regla de retorno de corriente, lección 0.5.5/0.5.6)
Mientras `PIN_GNSS_PWR` esté en BAJO: PA2 INPUT sin pull; PA10 sin pull (su pull-up interno es de 7–14 kΩ); PC7 sin pull-up; PC12 liberado (open-drain); PA7/PC3 sin pull-up; PC1/PC2 analógicos. **El camino de hardware U24 → /DOUT_4G → U18.26 no se puede corregir por firmware** salvo manteniendo el módem apagado siempre que el F9P esté apagado (D-01, Mayor, absorbe C-06). ▶ audit (corrección verificada): U27 = Nexperia 74LVC1G125GV **C12518** (Ioff ±2 µA) alimentado de /3V3_GNSS, OE̅ = GND, 100 nF C14663; Rdfu1 → 100 k C25803. Comprobación de banco: /3V3_GNSS < 0.3 V con PA1 en BAJO y el módem encendido.
## 3. Arranque y depuración
| Ítem | v6 | Veredicto |
|---|---|---|
| BOOT0 | R98 10 k → GND a 3.65 mm; SW2 a 3V3 (serigrafía «BOOT») | ✅ |
| BOOT1 / trampa DFU en PB2 | PB2 solo en R99 10 k → GND (2.84 mm); ETH_INT en PC0 | ✅ (memoria `drogheda-einarboard-30-mcu-integration`) |
| El DFU de ROM necesita HSE | Y3 25 MHz está soportado, pero la colocación del cristal y el margen de gm son pobres | ⚠ D-02 |
| NRST | C104 100 nF (3.26 mm, valor del DS10314) · SW1 (táctil 6 mm, NRST en el par de pads de 6.5 mm, GND en el otro) · P6 RESET-EXT (JST-XH, era P10 en V5) · TP5. Llega solo al MCU. | ✅ circuito / ⚠ sin ESD en P6 (G-08) |
| SWD | TP3 SWDIO (6.04 mm), TP4 SWCLK (5.43 mm), TP5 NRST, TP6 GND (a 17.6 mm), TP7 3V3. Sin header. SWO imposible (PB3 = CHRG_STAT). | ⚠ usable con pinzas; D-12 |
| USB DFU | PA11/PA12 → J11 (USB-C, CC 5.1 k ×2), D14/D15/D16 PESD5V0S1BA a 3.19 / 6.74 / 6.83 mm de J11; VBUS → D13 → AMS1117 (OR con SYS5V vía D12, sin retorno hacia SYS5V) | ✅ ECO E.5 (parte DFU) cumplida |
| HSE | Y3 C14872 YXC HC-49S 25 MHz, **CL 20 pF**, −20…+70 °C, con C113/C114 15 pF → CL_eff = 7.5 + (5…10) pF parásitos = 12.5–17.5 pF. Pads a 8.32/11.30 mm borde (10.30/14.21 mm centro) de PH0/PH1 (objetivo ≤ 5). | ❌ D-02 (Menor, verificado) |
| LSE | Y4 C32346 Epson FC-135, **CL 12.5 pF, ESR 70 kΩ**, con capacitores de 12 pF → CL_eff ≈ 9 pF. Pads a 5.54/7.91 mm. | ⚠ D-03 |
## 4. Señales específicas
- **CHRG_STAT PB3 / CHRG_FAULT PB4:** open-drain del LTC4040 (máx. absoluto 6 V), R57/R58 100 k a /3V3 (riel del MCU siempre encendido, así que no hay retorno). ✅ PFO (U6.20) va solo a TP2, sin pull-up y sin pin del MCU. RST (U6.11) sin conexión. **CLPROG** va solo a TP1 (D-10). ▶ audit: PFO → PB10 (A-13); CLPROG se queda en TP1 (no queda pin ADC una vez que PC5 toma la NTC del paquete).
- **IGN_SENSE:** 22 k / (22 k ∥ 3.3 k = 2.870 k) → relación 0.1154 (partes ±1 %: 0.1134–0.1174). Voltaje en el pin: **12 V → 1.385 V** (1.30 V con el pull-down interno que habilita el firmware V5), **24 V → 2.769 V**, **28 V → 3.231 V**, **36 V → 4.154 V en circuito abierto, recortado a ≈ 3.55 V** (BAT54 0.24 mA). 58 V: 1.2 mA de corriente de clamp; Rig1 disipa 0.135 W (> 0.1 W del 0603, solo transitorio). La escala completa del ADC se alcanza a 28.6 V. Umbrales digitales (DS10314 tabla 53, probados en producción VIL 0.3 VDD = 0.99 V, VIH 0.7 VDD = 2.31 V): un ALTO está garantizado solo por encima de **20.0 V**. **Una ignición de 12–14.4 V queda en la banda indefinida.** Comprobación de unión: /IGN_SENSE = {Rig1.2, Rig2.1, Rigb1.1, C9.1, D5.2 (A), U16.21}, una sola net en la netlist y en la PCB (6 pads, 1 grupo conectado, 14.2 mm en F.Cu). **La pérdida de unión de la V5.6 no está presente en v6.** ✅ ▶ audit F-02 (Bloqueante): el `/IGN_IN` crudo corre 106.47 mm en In2 a 0.221 mm de `/VEH5V`; mover Rig1 a P1.3 convierte ese tramo en `/IGN_SENSE` limitado en corriente (≤ 1.4 mA a 36 V, 2.5 mA a 58 V); C9 en el MCU mantiene τ = 0.25 ms. D-05 cambia la relación a 0.0833 si Rigb1 = 2.2 k.
- Control del módem: PC10 → U20 EN (R113 100 k PD); PC8 → Q20 → PWRKEY (R114 PD); PC11 → Q21 → RESET (R115 PD); PC9 ← U24 ← STATUS 1.8 V. Todos apagados o liberados por omisión en reset/DFU. ✅
- **GNSS:** RESET_N PC12 con R105 10 k a /3V3_GNSS (manejo open-drain) ✅; TIMEPULSE PA7 ✅; RTK_STAT PC3 ✅; ANT_DETECT/ANT_SHORT_N son entradas del receptor sin nada que las maneje (D-07).
- **INT1 del acelerómetro (T11):** PB9 EXTI9, push-pull ✅.
- **NTC2:** PC4, R126 10 k/1 % + C157 100 nF (3.11 mm), P8 ✅.
- **USART6 PC6/PC7:** AF8 en ambos ✅. TX va por K1 NO (solo Modo B). RX va por R106 100 Ω y siempre está conectado.
- **Banderas NC de ERC en U16.37/38 y U10.13/14:** cosméticas. Los cuatro pines están en sus nets en la netlist (U16.37 ∈ /USART6_TX {K1.10}; U16.38 ∈ /USART6_RX {R106.2}; U10.13/14 ∈ /I2C_SCL/SDA), los pads de la PCB llevan las mismas nets (verificado por IPC-356) y las cuatro nets están ruteadas. Las banderas deben borrarse de todos modos (D-11).
## 5. Lista de cambios de firmware — `board_v6.h` / FW 0.7.x
**Pines cuyo significado cambia respecto a V5:** PA1 (solo GNSS), PA9 (desaparece), PA10 (derivación solo RX, F9P directo), PB5 (el NO de K1 ahora es PC6), PA5 (leer analógico), PC1/PC2/PC3/PC4/PC6–PC12/PA7/PB9 (nuevos), TMP102 y el reset por P7 del PCF (desaparecen).
Periféricos nuevos por inicializar: USART6 (PC7 RX, PC6 TX, 115200, AT + contador de bytes RTCM); USART1 solo RX en PA10; captura TIM3_CH2 o EXTI7 en PA7 (PPS); EXTI9 en PB9 y el SC7A20 en 0x18 (compatible LIS3DH: CTRL_REG1/3, INT1_CFG/THS/DURATION); canales ADC IN5 (IGN) e IN14 (NTC2); LSE en modo de alto drive (`LSEMOD`) con respaldo LSI para el despertar por RTC; W5500 como en V5.
**En BAJO por omisión en las primerísimas líneas de `setup()`** (antes de cualquier delay o inicialización de USB): PC10 MODEM_PWR_EN, PC8 PWRKEY, PC11 MODEM_RST, PA1 GNSS_PWR, PB5 BYP_CTRL, **PA15 ETH_RST** (sale del reset en ALTO por el pull-up JTDI; el 4.7 k de E-02 lo mantiene bajo hasta entonces), PA6 FAN, PB0 EXT_LED y **PD2 ETH_PWR_EN** si se adopta E-01. PA8 CHRG_EN pertenece al gobernador (ALTO hasta que decida).
Entradas nuevas si se adoptan las correcciones de la auditoría: PB10 PFO (EXTI10 flanco de bajada, A-13); PC5 ADC1_IN15 NTC del paquete, relación 120/220 (F-51); TMP102 en 0x48 (F-51) y opcionalmente 0x49 (F-52); PC2 falla de corto de antena desde el TPS2552 (C-01).
Dejar en alta impedancia / analógico: PA9, PB10, PC5, PD2 (salvo que se adopten E-01 / A-13 / F-51, que toman PD2 / PB10 / PC5), PC1, PC2; todos los pines hacia el F9P mientras el F9P esté apagado (§2.5); PC7/PC9 mientras el módem esté apagado (PC9 con pull-down).
Open-drain: PC12. Los drivers de PC8/PC11 son FET externos, así que los pines del MCU son push-pull.
Secuencia: PA1 ALTO → ≥ 4 s → PC10 ALTO → 100 ms → pulso PC8 ALTO ≥ 50 ms → esperar PC9 ALTO (≈ 11.2 s) o `RDY` por AT → trabajo → apagado por AT o PC8 ALTO ≥ 2.5 s → PC10 BAJO → PA1 BAJO. **Nunca** dejar PC10 en ALTO con PA1 en BAJO (D-01) salvo que esté montada la corrección de hardware de D-01. Cualquier reset del MCU apaga y enciende el módem (R113) y el F9P (PA1 flota), así que la lógica de recuperación debe asumir un módem frío después de cada reset.
Borrador del encabezado:
```c
// board_v6.h — EinarBoard v6 (hbox-watchdog-v6), STM32F411RET6 LQFP64
#define HBOX_BOARD_NAME "EinarBoard v6 (HBOX v6)"
#define HBOX_BOARD_MCU "STM32F411RET6 LQFP64"
#define BOARD_HSE_HZ 25000000UL
#define BOARD_LSE_HZ 32768UL
#define BOARD_SER_XTAL_HZ 3686400UL // Y2 = C2238 (3.6864 MHz; schematic value text says 1.8432 MHz)
// power / analog
#define PIN_BAT_SENSE PA0 // ADC1_IN0, /2
#define PIN_GNSS_PWR PA1 // HIGH = F9P rail on (Q5->Q1->SW_5V->U21). Was PIN_PWR_CTRL (stack)
#define PIN_PWR_CTRL PIN_GNSS_PWR
#define PIN_5V_SENSE PA4 // ADC1_IN4, /2 (VEH5V = U25 or P2)
#define PIN_IGN_SENSE PA5 // ADC1_IN5 — READ ANALOG (12 V: 1.39 V, 24 V: 2.77 V)
#define PIN_NTC PB1 // ADC1_IN9, P7 probe 1
#define PIN_NTC2 PC4 // ADC1_IN14, P8 probe 2
#define PIN_CHRG_EN PA8 // HIGH = charger OFF (R56 PD -> ON in reset)
#define PIN_CHRG_STAT PB3 // LOW = charging (OD, R57 100k)
#define PIN_CHRG_FAULT PB4 // LOW = fault / NTC pause (OD, R58 100k)
#define PIN_FAN PA6 // HIGH = fan on (TIM3_CH1 if PWM)
#define PIN_LED_C13 PC13 // active LOW
#define PIN_EXT_LED PB0 // HIGH = panel LED (P9)
// GNSS (ZED-F9P U18)
#define PIN_GNSS_TX PA2 // USART2_TX AF7 -> F9P RXD (hi-Z when F9P off!)
#define PIN_GNSS_RX PA3 // USART2_RX AF7 <- F9P TXD
#define PIN_F9P_TX2_TAP PA10 // USART1_RX AF7 <- F9P TXD2 (RX-only, no pull)
#define PIN_GNSS_PPS PA7 // TIM3_CH2 AF2 / EXTI7
#define PIN_GNSS_RTK_STAT PC3 // 0 fixed / blink corrections / 1 none
#define PIN_GNSS_RESET_N PC12 // OPEN-DRAIN only
#define PIN_GNSS_ANT_DET PC1 // F9P INPUT — keep analog/hi-Z
#define PIN_GNSS_ANT_SHORT_N PC2 // F9P INPUT — keep analog/hi-Z
// modem (A7670SA U19)
#define PIN_MODEM_TX PC6 // USART6_TX AF8 -> K1 NO -> U23 -> RXD (Mode B)
#define PIN_MODEM_RX PC7 // USART6_RX AF8 <- R106 <- U24 <- TXD
#define PIN_MODEM_PWRKEY PC8 // HIGH = key pressed (Q20)
#define PIN_MODEM_STATUS PC9 // INPUT_PULLDOWN, HIGH = modem on
#define PIN_MODEM_PWR_EN PC10 // HIGH = U20 on (R113 PD)
#define PIN_MODEM_RST PC11 // HIGH = reset asserted (Q21)
#define PIN_BYP_CTRL PB5 // HIGH = K1 energised (modem DIN <- PC6)
// I2C1 / expanders / sensors
#define PIN_I2C_SCL PB6
#define PIN_I2C_SDA PB7
#define PIN_SER_IRQ PB8 // SC16IS752 IRQ, EXTI8
#define PIN_ACC_INT1 PB9 // SC7A20 INT1, EXTI9
#define I2C_ADDR_SC7A20 0x18
#define I2C_ADDR_PCF8574 0x20
#define I2C_ADDR_SHT40 0x44
#define I2C_ADDR_SC16IS 0x4D
// Ethernet (W5500 U11, SPI2)
#define PIN_ETH_CS PB12
#define PIN_ETH_SCK PB13
#define PIN_ETH_MISO PB14
#define PIN_ETH_MOSI PB15
#define PIN_ETH_INT PC0
#define PIN_ETH_RST PA15 // JTDI pull-up at reset: drive LOW first (E-02: 4.7k PD C23162)
// spare as drawn: PA9 (USART1_TX), PB10, PC5 (ADC1_IN15), PD2
// --- only if the audit fixes are adopted (verify_1 conflict (h)) ---
// #define PIN_ETH_PWR_EN PD2 // E-01: HIGH = 3V3_ETH on (100k PD)
// #define PIN_PFO PB10 // A-13: LTC4040 PFO, LOW = backup, EXTI10 falling
// #define PIN_NTC_CELL PC5 // F-51: ADC1_IN15, /NTC * 120/220, valid with VEH5V
// #define I2C_ADDR_TMP102_CHG 0x48 // F-51: charger die area (U6/L6)
// #define I2C_ADDR_TMP102_MODEM 0x49 // F-52 option
// PA9 stays spare (D-12 test pad); board-ID strap (D-08) pin unresolved
```
Ver también: [manual v6](../manuales/manual-tarjeta-v6.md) · [auditoría completa v6](v6-auditoria-completa.md) · [informe de cambios al esquemático v6](v6-cambios-esquematico.md) · [revisión contra lecciones V5.5](v6-revision-lecciones-v55.md).
## Historial de revisiones
| Versión | Fecha | Cambios |
|---|---|---|
| 1.0 | 2026-09-28 | Mapa de pines de la auditoría v6, republicado con 7 correcciones editoriales (inglés). |
| 1.1 | 2026-09-29 | Prosa y encabezados en español; tabla y borrador de `board_v6.h` sin cambios. |
??? note "Anexo técnico — trazabilidad"
Snapshot: sch `ecee9fed…` / pcb `6ddec80d…` (paquete de evidencia 2026-09-28). Los archivos `evidence/*.csv` citados arriba están en `03-Architecture-Hardware/kicad/_to_delete/v6-audit-20260928/evidence/`.