# Fase 1 / Análisis 01 — Hardware de la Daughter Board
> **Fase del proyecto:** Fase 1 — Análisis de fuentes (entrega 1 de 4).
> **Material analizado:** 12 esquemáticos `.kicad_sch` jerárquicos + 1 `.kicad_pcb`.
> **Versión KiCad:** 9.0 (formato 20250114, S-expression moderno).
> **Estado del análisis:** completo a nivel funcional. Algunos detalles de interconexión interna del multiplexor RS485 quedan marcados como "verificación pendiente".
> ⚠ **Aviso antes de leer:** este análisis ha detectado **una limitación de hardware confirmada** que afecta al alcance de Fase 0:
> - **USB NO disponible** — pines reusados para otras funciones. Ver §13.2.
>
> **No es bloqueante** (el debug se hace por VCP del ST-Link sobre UART3, ver §5.2).
>
> **Ethernet SÍ está operativo** (PHY LAN8742A onboard de la Nucleo, pines RMII libres en la DB, ver §13.1).
---
## Índice
1. [Resumen ejecutivo del hardware](#1-resumen-ejecutivo-del-hardware)
2. [Estructura del proyecto KiCad](#2-estructura-del-proyecto-kicad)
3. [Placa base: Nucleo H7S3L8](#3-placa-base-nucleo-h7s3l8)
4. [Alimentación](#4-alimentación)
5. [Comunicaciones serie: 5 × RS485 + CAN](#5-comunicaciones-serie-5--rs485--can)
6. [Cadena de medida: ADCs delta-sigma](#6-cadena-de-medida-adcs-delta-sigma)
7. [Salidas analógicas: DAC + drivers](#7-salidas-analógicas-dac--drivers)
8. [Salidas digitales: relés y salidas 24V](#8-salidas-digitales-relés-y-salidas-24v)
9. [Entradas digitales](#9-entradas-digitales)
10. [Bluetooth: BlueNRG-M2SP](#10-bluetooth-bluenrg-m2sp)
11. [Almacenamiento: SD card y OctoSPI](#11-almacenamiento-sd-card-y-octospi)
12. [RTC y batería de respaldo](#12-rtc-y-batería-de-respaldo)
13. [Hallazgos críticos que afectan a Fase 0](#13-hallazgos-críticos-que-afectan-a-fase-0)
14. [Mapa de pines del MCU (resumen)](#14-mapa-de-pines-del-mcu)
15. [Apéndice A — Inventario de componentes](#15-apéndice-a--inventario-de-componentes)
16. [Apéndice B — Pinout completo del MCU](#16-apéndice-b--pinout-completo-del-mcu)
---
## 1. Resumen ejecutivo del hardware
La Daughter Board (DB) es una **placa hija de I/O industrial** que monta sobre una Nucleo-144 H7S3L8 a través de los conectores Morpho. Aporta:
| Subsistema | Capacidad |
|---|---|
| **Comunicaciones serie** | 5 × RS485 (con multiplexor analógico) + 1 × CAN-FD aislado |
| **Entradas analógicas** | 12 canales (1× ADC ADS124S08, 24-bit ΔΣ) |
| **Entradas para sondas de temperatura** | 36 canales (3× ADCs ADS124S08, 24-bit ΔΣ con excitación) |
| **Salidas analógicas** | 8 canales 0-10 V (DAC7718 12-bit con referencia LM4040) |
| **Salidas relés** | 12 × G5NB-1A4 (5 A, 24 VDC) |
| **Salidas 24V** | 9 × salidas conmutadas (mediante ULN2003) |
| **Entradas digitales** | 12 canales optoaisladas (probables, a confirmar el modelo del aislador) |
| **Bluetooth Low Energy** | Módulo BlueNRG-M2SP (STMicro) por SPI5 |
| **Almacenamiento masivo** | microSD por SDMMC1 (4-bit) |
| **Almacenamiento config** | OctoSPI Flash 64 MB onboard de la Nucleo (XSPIM1, no toca la DB) |
| **Reloj RTC** | RTC interno del H7S3L8 con backup CR2032 (VBAT) |
| **Direccionamiento físico** | 8 bits DIP switch Modbus + 7 bits DIP switch CAN |
| **Ethernet** | ✅ Disponible (PHY LAN8742A onboard Nucleo, RMII modo PG) — ver §13.1 |
| **USB** | ❌ **NO disponible** — ver §13.2 |
| **Alimentación** | Entrada 24 VDC con protección sobretensión / polaridad / sobrecorriente. Regulación 24→5 (LM2576) → 3.3 V analógico y digital separados (NCP1117 ×2) |
| **PCB** | 4 capas FR4, 1.6 mm, plano de potencia y plano de señal interiores |
---
## 2. Estructura del proyecto KiCad
El proyecto está organizado de forma jerárquica. La raíz `DB_Culcon.kicad_sch` instancia 11 hojas hijas y monta directamente la Nucleo como componente:
```mermaid
flowchart TB
ROOT["DB_Culcon.kicad_sch (raíz)
Contiene la Nucleo como componente"]
ROOT --> POWER[Power.kicad_sch
Alimentación 24V→5V→3.3V]
ROOT --> RS485[RS485_CAN.kicad_sch
5 RS485 + 1 CAN + mux]
ROOT --> TEMP[Temperaturas.kicad_sch
3 ADC para sondas]
ROOT --> AIN[EntradasAnalogicas.kicad_sch
1 ADC + 12 entradas]
ROOT --> AOUT[SalidasAnalogicas.kicad_sch
DAC + 8 salidas]
ROOT --> RELE[SalidasRele.kicad_sch
12 relés + ULN2003]
ROOT --> DIN[EntradasDigitales.kicad_sch
12 entradas optoaisladas
LTV-844S + SN74HCS14]
ROOT --> BT[Bluetooth.kicad_sch
BlueNRG-M2SP]
ROOT --> SD[MicroSD.kicad_sch
Slot Molex]
ROOT --> RTC[RTC.kicad_sch
Solo batería CR2032]
ROOT --> CONN[Conectores.kicad_sch
Bornes a campo]
PNUC[Placa_Nucleo.kicad_sch
Solo define el símbolo
basado en H743ZI]
PNUC -.->|biblioteca| ROOT
style PNUC fill:#fef3c7,stroke:#d97706
```
**Notas:**
- `Placa_Nucleo.kicad_sch` **no es una hoja jerárquica** — es la definición simbólica de la Nucleo, basada en el símbolo `MCU_Module:NUCLEO144-H743ZI` (reutilizado para la H7S3L8). La diferencia importante: **el pinout físico Morpho es el mismo entre H743 y H7S3, pero las funciones alternadas no siempre coinciden**. Cualquier configuración del MCU debe consultarse en el datasheet de la **H7S3L8** específicamente.
- Adicionalmente se ha aportado `PINES_NUCLEO_H7S3L8_v3.xlsx` con el **mapeo oficial completo** del proyecto (función prevista por pin, columna Nucleo / ZIO / Culcon). Este Excel es la **fuente única de verdad** para la asignación de pines y prevalece sobre cualquier otra inferencia.
---
## 3. Placa base: Nucleo H7S3L8
### 3.1. Función en la DB
La Nucleo se monta sobre la DB usando los conectores Morpho de 144 pines. Aporta:
- El MCU **STM32H7S3L8** (Cortex-M7 a 600 MHz, 64 KB Flash interna, 620 KB RAM).
- **Flash externa OctoSPI 64 MB** (Macronix MX25LM51245) conectada al XSPIM1 (puerto N privado del MCU, no accesible desde Morpho — ver §11.2).
- ST-LINK V3 integrado para programación y debug.
### 3.2. Conflictos pin-función
Algunos pines de la Nucleo H7S3L8 tienen funciones onboard que la DB Culcon reutiliza. La pieza más importante es:
**Ethernet (PHY LAN8742A onboard):** los 9 pines RMII de la H7S3L8 son **PA2, PA7, PB6, PG4, PG5, PG6, PG11, PG12, PG13**. **Todos están libres en la DB** (la propia Nucleo los usa internamente para conectar al PHY). No hay conflicto. Ver §13.1 para detalles.
**USB OTG (PA10/PA12):** ambos pines reusados en la DB:
| Pin | Función Nucleo (USB OTG FS) | Función en la DB | Estado |
|---|---|---|---|
| PA10 | USB_ID | U_AI_CS (CS adicional del ADC AI) | ⚠ Conflicto USB |
| PA12 | USB_DP | SPI2_SCK | ⚠ Conflicto USB |
**Implicación:** sin USB OTG operativo. Para depuración, se usa el **Virtual COM Port del ST-Link** (UART3 / PD8/PD9, gratis e independiente de PA10/PA12). Ver §13.2.
**Otros pines de funciones onboard reusados:**
| Pin | Uso onboard original | Uso en la DB | Comentario |
|---|---|---|---|
| PA15 | JTDI (debug) | UART4_DE (Modbus esclavo) | OK — no se usa JTAG en la DB, solo SWD |
| PB3 | SWO (trace) | RESERVA NC | OK — SWO no se usa |
| PB7 | LED3 onboard | NC | OK |
| PC13 | Botón B2 (user) | NC | OK |
| PD8/PD9 | UART3 = Virtual Com Port ST-Link | Debug serie | ✅ Disponible para debug |
| PD10/PD13 | LED1/LED2 onboard | MCU_RELE_9, MCU_RELE_7 | ⚠ LEDs onboard se activan por relé. Sin impacto eléctrico — solo cosmético |
| PG14 | TRACE_D1 | MCU_RELE_8 | OK — trace no se usa |
Ninguno de estos es un conflicto problemático: solo significa que algunas señales originales de la Nucleo (LEDs onboard, JTAG, etc.) están redirigidas. La funcionalidad principal (Ethernet, SD, SWD para debug) se mantiene intacta.
---
## 4. Alimentación
### 4.1. Topología
```mermaid
flowchart LR
EXT[24 VDC
externo
jack PJ-082BH]
--> FUSE[Fuse PTC 4A
0ZRP0400FF1A]
--> TVS1[TVS
SMBJ28A]
--> PROT["P-MOSFET
protección
polaridad inversa
(AP74700/DMT6007)"]
--> SW[LM2576-5.0
switching reg
3A, 5V]
--> C5V[Filtros 5V
330µF + ferrite]
--> RAIL5["+5V rail"]
RAIL5 --> NCP1[NCP1117-3.3
LDO]
RAIL5 --> NCP2[NCP1117-3.3
LDO]
NCP1 --> DVDD["+3V3 digital
DVDD_3V3"]
NCP2 --> AVDD["+3V3 analógico
AVDD_3V3"]
EXT --> V24[+24V para
9 salidas 24V
y bobina relés]
V24 -.->|9× PTC fuse
0ZCF0050FF2C
+ TVS SMAJ33A| OUT24[OUT_V24_1..9]
```
**Observaciones:**
- **AVDD y DVDD separados** (dos LDOs distintos): correcto para minimizar acoplamiento de ruido digital en la cadena analógica de ADC/DAC.
- **9 salidas 24V con protección individual**: PTC reseteable 500 mA + TVS 33V. Robusto para industrial.
- **Protección de polaridad inversa con P-MOSFET** en la entrada: bien.
- El **LM2576** es un regulador robusto pero de generación clásica (3A, 52 kHz). Suficiente para esta aplicación.
### 4.2. Dimensionado
| Carga | Consumo estimado |
|---|---|
| Nucleo H7S3L8 (sin cargas externas) | ~250 mA @ 5V |
| BlueNRG-M2SP en transmisión | ~25 mA @ 3.3V |
| 4 × ADS124S08 alimentados | ~40 mA @ 3.3V |
| DAC7718 | ~10 mA @ 3.3V |
| Bobinas 12 relés activos simultáneamente | 12 × 30 mA = 360 mA @ 24V |
| Salidas 24V cargas externas | hasta 9 × 500 mA = 4.5 A @ 24V |
→ El LM2576 a 5V debería sobrar para el consumo lógico (estimado < 600 mA total). El presupuesto crítico está en los 24V — la fuente externa debe entregar al menos **5 A continuos** para cubrir todas las cargas, idealmente **8 A** con margen.
> Pregunta abierta: ¿qué tipo de fuente 24V se prevé en el cuadro eléctrico? ¿DIN-rail tipo Mean Well NDR-120-24 (5A) o similar?
---
## 5. Comunicaciones serie: 5 × RS485 + CAN
### 5.1. Componentes
| Refdes | Componente | Función |
|---|---|---|
| Múltiple | 5 × **SN65HVD75D** | Transceiver RS485 half-duplex 3.3V, 20 Mbps, ESD protected. Uno por puerto |
| Múltiple | 5 × **SM712_SOT23** | Diodo TVS bidireccional para protección RS485 |
| Múltiple | 5+1 × **120 Ω + jumper** | Terminación seleccionable por jumper (5 para RS485, 1 para CAN) |
| 1 | **TCAN3414DDFR** | Transceiver CAN-FD aislado galvánicamente, 5 Mbps |
| 1 | **ACM2012-201-2P-T002** | Common-mode choke para CAN |
| 1 | **NUP2105L** | TVS dual para CAN_H/CAN_L |
| 1 | **MAX14778ATP+** | Mux dual SP4T (4-canales en 2 vías independientes) |
| 1 | **MAX4734EUB+** | Switch analógico SP4T (1 canal de 4 vías) |
### 5.2. Arquitectura del multiplexor RS485 (confirmada por Excel oficial)
El pinmap oficial **confirma** la hipótesis: **UART4 va al esclavo, UART7 va al mux**.
| UART | Pines | Función según Excel | Función Modbus |
|---|---|---|---|
| **UART4** | PB8 (RX), PB9 (TX), PA15 (DE) | "MODBUS ESCLAVO" | Esclavo permanente (puerto 1) |
| **UART7** | PE7 (RX), PE8 (TX), PE9 (DE) | "MODBUS MULTIPLEXADO" | Maestro multiplexado a puertos 2-5 |
| **UART8** | PD15 (DE), PE0 (RX), PE1 (TX) | Planificado, **no cableado en HW actual** | Reserva — UART libre para uso futuro |
| **UART3** | PD8, PD9 | "Virtual Com Port" del ST-Link | Debug serie (sin pines hacia campo) |
```mermaid
flowchart LR
subgraph MCU
UART4["UART4
PB8 PB9 PA15
(MODBUS ESCLAVO)"]
UART7["UART7
PE7 PE8 PE9
(MODBUS MULTIPLEXADO)"]
UART3["UART3
PD8 PD9
(VCP debug)"]
UART8["UART8
PD15 PE0 PE1
(planificado, no cableado)"]
SEL["Selector mux
PF0 PF2
(2 bits)"]
end
UART4 --> T1[Transceiver 1
SN65HVD75D]
T1 --> P1["Puerto 1
esclavo Modbus
(permanente, dedicado)"]
UART7 --> MUX["MAX14778 dual SP4T (TX, RX)
+ MAX4734 SP4T (DE)"]
SEL --> MUX
MUX --> T2[Transceiver 2]
MUX --> T3[Transceiver 3]
MUX --> T4[Transceiver 4]
MUX --> T5[Transceiver 5]
T2 --> P2[Puerto 2
plug fan Modbus opcional]
T3 --> P3[Puerto 3
caja paramétrica 1]
T4 --> P4[Puerto 4
caja paramétrica 2]
T5 --> P5[Puerto 5
caja exterior
solo en 1 DB]
UART3 -. ST-Link interno .-> DEBUG[USB del ST-Link
como puerto COM virtual]
UART8 -.->|sin cableado| RESERVA[Reserva HW]
style UART8 stroke-dasharray: 5 5
style RESERVA stroke-dasharray: 5 5
```
**Implicaciones para el firmware (confirmadas):**
| Limitación | Consecuencia |
|---|---|
| **Solo 1 puerto activo simultáneamente entre 2-5** | Planificador secuencial de accesos a los puertos 2-5. No se puede polear todas las cajas paramétricas en paralelo |
| **Latencia de cambio de mux** | El MAX14778 conmuta en ~100 ns: despreciable |
| **Puerto 1 dedicado al esclavo Modbus** | Siempre listo. UART4 dedicado |
| **Tiempo de ciclo total** | Con 3 cajas paramétricas (puertos 3, 4, 5) + ventilador opcional (puerto 2): ~4 × 50-100 ms = **200-400 ms por ciclo completo**. Adecuado para variables de proceso lentas |
| **UART3 = VCP de debug** | Disponible sin cableado adicional. **printf debugging** sobre el USB del ST-Link sin tocar PA10/PA12 |
| **UART8 disponible para futura expansión** | Si se necesita un 6º puerto serie (otro sensor, otro bus), los pines están reservados en el MCU |
**A verificar en el código firmware (entrega 02):**
- Si UART4 usa DMA o polling/interrupt.
- Si UART7 ya tiene implementación de manejo del DE manual o por hardware (la H7S3 soporta DE automático en algunos UARTs).
- Cómo se gestiona el conmutado del mux (selección + tiempo de estabilización + transmisión).
### 5.3. CAN-FD
Implementación robusta para entorno industrial:
- **TCAN3414**: transceiver CAN-FD con aislamiento galvánico hasta 5 kV.
- **Common-mode choke ACM2012** + **TVS NUP2105L**: filtrado EMI y protección ESD.
- Terminación 120 Ω con jumper.
- Conectado a FDCAN1 del MCU (PD0=TX, PD1=RX). El H7S3 soporta CAN-FD hasta 8 Mbps.
### 5.4. Direccionamiento físico
| Bus | DIP switch | Bits | Direcciones |
|---|---|---|---|
| Modbus (esclavo del puerto 1) | `MCU_MB_ADD_0..7` | 8 | 256 (0-255) |
| CAN | `MCU_CAN_ADD_0..6` | 7 | 128 (0-127) |
**Uso recomendado en firmware:**
- Al arranque, leer los 8 bits MB_ADD → es la **dirección Modbus del esclavo** del puerto 1.
- Al arranque, leer los 7 bits CAN_ADD → es el **identificador CAN** y también **se puede usar como identificador de sala** (ID único en la instalación, 1-127).
- Ambos son **GPIO simples con pull-up** (presumiblemente). Lectura directa al inicializar.
---
## 6. Cadena de medida: ADCs delta-sigma
### 6.1. Componente común: ADS124S08
Las 4 cadenas de medida (3 de temperatura + 1 analógica general) usan el **ADS124S08IPBSR** de Texas Instruments:
| Característica | Valor |
|---|---|
| Resolución | 24 bits |
| Canales | 12 multiplexados (también configurables como diferenciales) |
| Velocidad | Hasta 4000 SPS |
| Fuentes de excitación | 2 corrientes programables (10 µA - 2 mA) — **clave para sondas resistivas como PT100/PT1000 y NTC** |
| PGA interno | Ganancia 1-128 |
| Interfaz | SPI 4-wire + DRDY + START/SYNC + RESET |
| Encapsulado | TQFP-32 |
### 6.2. Asignación SPI
```mermaid
flowchart LR
MCU[STM32 H7S3L8]
MCU -- SPI2 --> ADC1[ADS124S08 #1
Sondas Temperatura
UI_TEMP1_CS = PE5]
MCU -- SPI2 --> ADC2[ADS124S08 #2
Sondas Temperatura
UI_TEMP2_CS = PD6]
MCU -- SPI2 --> ADC3[ADS124S08 #3
Sondas Temperatura
UI_TEMP3_CS = PD3]
MCU -- SPI4 --> ADC4[ADS124S08 #4
Entradas Analógicas
SPI4_AI_CS = PA3]
MCU -. PD7 .-> ADC1
MCU -. PD7 .-> ADC2
MCU -. PD7 .-> ADC3
PD7Label[PD7: U_TEMP123_RESET
reset común a los 3 ADCs de T]
style PD7Label fill:#fef3c7,stroke:#d97706
```
| ADC | SPI bus | CS | DRDY | START/SYNC | RESET | Canales |
|---|---|---|---|---|---|---|
| Temp #1 | SPI2 (PA12/PC1/PC2) | PE5 | PE4 | PF1 | PD7 (común) | 12 |
| Temp #2 | SPI2 | PD6 | PG2 | PG3 | PD7 (común) | 12 |
| Temp #3 | SPI2 | PD3 | PD4 | PD5 | PD7 (común) | 12 |
| AI | SPI4 (PE2/PE13/PE14) | PA3 (o PA10) | PC4 | PB13 | PF5 | 12 |
**Observaciones:**
- **Hasta 36 canales de sondas de temperatura**: bastante más de lo que un cultivo de champiñón típico necesita (típicamente 4-6 sondas: aire, compost, impulsión, exterior). El diseño es muy generoso, probablemente pensado para soportar varias configuraciones de planta.
- **12 entradas analógicas** generales: para sondas 4-20 mA o 0-10 V de equipos externos no Modbus.
- **Reset compartido para los 3 ADCs de temperatura**: simplifica la inicialización pero impide resetear uno solo (debe resetearse todo el bloque).
- **AI ADC tiene dos posibles labels para CS** (`PA3=SPI4_AI_CS` y `PA10=U_AI_SPI_CS`). Probable: PA3 es el CS y PA10 conecta a otra señal de control. **A verificar.**
### 6.3. Sondas NTC
Veo 25 labels `NTC.A1..A25` en el raíz. Esto sugiere conexionado a sondas NTC (negativo temperature coefficient — termorresistencias industriales). El ADS124S08 con su fuente de excitación está preparado para leerlas con buena precisión.
> A confirmar: tipo de NTC (B25/85 = ?, valor a 25°C = ?). Si es NTC10K B3950 (típico HVAC), el firmware debe llevar la curva de conversión.
---
## 7. Salidas analógicas: DAC + drivers
### 7.1. Componentes
- **DAC7718SPAGR** (TI): DAC 12-bit, 8 canales, SPI. Salidas configurables 0-5V o 0-10V con buffer externo.
- **LM4040DBZ-2.5**: referencia de voltaje 2.5V de alta precisión.
### 7.2. Asignación
Las 8 salidas analógicas `AO1..AO8` se comparten con buses SPI ya identificados pero no he visto explícitamente el SPI del DAC en los labels. **A verificar** mirando la hoja `SalidasAnalogicas.kicad_sch` con más detalle.
Pista: el DAC7718 usa SPI estándar. Probablemente cuelga del SPI2 o de un bus dedicado.
> **Pendiente para análisis 02** (firmware STM32): verificar en el código cómo se inicializa el DAC y por qué SPI va.
---
## 8. Salidas digitales: relés y salidas 24V
### 8.1. Relés (12 unidades)
- **Componente:** G5NB-1A4-EL-HA_DC24 (Omron)
- **Contactos:** SPST-NO (1 form A), **solo Normalmente Abierto** según código `1A` del Omron
- **Capacidad:** 5 A / 250 VAC, bobina 24 VDC
- **Driver:** 4 × **ULN2003D1013TR** (Darlington × 7 canales, 500 mA por canal, diodos flyback integrados)
### 8.2. Labels conflictivos: COM/NC
> ⚠ **Hallazgo:** los labels en el esquemático raíz se llaman `RELE_COM_n` y `RELE_NC_n`, pero el relé G5NB-1A4 **solo tiene contactos NO** (no tiene NC). Esto es una **inconsistencia de etiquetado** que conviene aclarar.
>
> Hipótesis: lo que llaman `RELE_NC_n` debería ser `RELE_NO_n` (errata en el esquemático). El COM (común) y el NO (NO=Normally Open) son los dos terminales del contacto SPST-NO.
> **A confirmar:** ¿es errata en los labels, o el relé montado en la DB es realmente un modelo SPDT que tiene NC + NO?
### 8.3. Salidas 24V con ULN2003
Los 4 chips ULN2003 (4 × 7 = 28 canales) gestionan:
- 12 canales para bobinas de relés (uno cada uno).
- 9 canales para salidas 24V directas (`OUT_V24_1..9`).
- 7 canales sin usar (reserva).
Cada salida 24V está protegida con PTC (`0ZCF0050FF2C`, 500 mA) + TVS (`SMAJ33A`). Apropiado para válvulas solenoides, contactores, indicadores luminosos, etc.
---
## 9. Entradas digitales
### 9.1. Arquitectura
```mermaid
flowchart LR
subgraph CAMPO ["Lado campo (24V)"]
DIn["DI_n
0-30 VDC"]
end
subgraph AISLAMIENTO ["Aislamiento óptico"]
OPTO["LTV-844S
(4 canales por chip)
× 3 chips = 12 canales"]
end
subgraph LOGICA ["Acondicionamiento lógico"]
ST["SN74HCS14
Schmitt-trigger inversor
(6 canales por chip)
× 2 chips = 12 canales"]
LED["LED indicador
× 12
(uno por entrada)"]
end
subgraph MCU ["MCU GPIO"]
DIMcu["DI_n_MCU
al GPIO del MCU
(con EXTI disponible)"]
end
DIn --> OPTO
OPTO --> ST
OPTO -.->|paralelo| LED
ST --> DIMcu
```
### 9.2. Componentes
| Refdes | Componente | Función |
|---|---|---|
| Múltiple | 3 × **LTV-844S** | Optoacoplador 4 canales por chip. Aislamiento típico 5 kV. 3 × 4 = **12 canales aislados** |
| Múltiple | 2 × **SN74HCS14DYYR** | Schmitt-trigger **inversor** hexa. 2 × 6 = **12 canales** acondicionados |
| Múltiple | 12 × LED indicadores | 1 por entrada, para diagnóstico visual del operador |
| Múltiples | Resistencias limitadoras (LED de opto), pull-ups, filtros RC | Acondicionamiento de cada canal |
### 9.3. Polaridad importante
⚠ **El SN74HCS14 es un Schmitt-trigger INVERSOR.** La lógica completa es:
```
DI_n (24V activo)
→ corriente por el LED del optoacoplador
→ fototransistor del opto conduce → pin de entrada del Schmitt a 0V
→ salida del Schmitt = 1 (lógico)
→ DI_n_MCU = 1 cuando la entrada está activa en campo
```
→ **Polaridad final no invertida** desde el punto de vista del operador: 24V en campo = "1" en el MCU. Bien.
### 9.4. Aislamiento por grupos
Los 12 canales **no son individualmente aislados**: están agrupados de **4 en 4** (un grupo por LTV-844S, con cátodos comunes internos del chip).
→ **Implicación de campo:** las 4 entradas de un mismo grupo deben tener referencia común (mismo retorno común). El instalador debe respetar esto.
### 9.5. Asignación de pines MCU
| Net | Pin MCU | EXTI line |
|---|---|---|
| DI1_MCU | PB11 | EXTI11 |
| DI2_MCU | PB12 | EXTI12 |
| DI3_MCU | PA6 | EXTI6 |
| DI4_MCU | PA5 | EXTI5 |
| DI5_MCU | PC5 | EXTI5 (compartida con PA5) |
| DI6_MCU | PC6 | EXTI6 (compartida con PA6) |
| DI7_MCU | PF6 | EXTI6 (compartida con PA6, PC6) |
| DI8_MCU | PA0 | EXTI0 |
| DI9_MCU | PA4 | EXTI4 |
| DI10_MCU | PB0 | EXTI0 (compartida con PA0) |
| DI11_MCU | PC3 | EXTI3 |
| DI12_MCU | PC0 | EXTI0 (compartida con PA0, PB0) |
> ⚠ **Atención a las EXTI compartidas:** STM32 mapea EXTI por número de pin (PxN → EXTIN). Pines con el mismo número comparten línea EXTI y NO pueden usarse simultáneamente como interrupción. Aquí tenemos:
> - EXTI0 compartida entre PA0/PB0/PC0 (DI8, DI10, DI12)
> - EXTI5 compartida entre PA5/PC5 (DI4, DI5)
> - EXTI6 compartida entre PA6/PC6/PF6 (DI3, DI6, DI7)
>
> Solo uno de los pines compartidos puede generar EXTI. **Soluciones:**
> - Estrategia A: configurar solo los DI más críticos como EXTI (típicamente los de alarmas urgentes). Los demás se leen por polling periódico (cada 10 ms es más que suficiente para entradas industriales).
> - Estrategia B: usar la **función "Pin Input Sampling"** del STM32: timer que dispara un DMA que lee un GPIO entero a memoria. Lectura de todos los DI sin EXTI ni polling explícito.
>
> **Recomendación:** Estrategia B con timer + DMA. Para entradas digitales con debouncing software de 20-50 ms, no se necesita EXTI rápida.
### 9.6. Características eléctricas previstas
- **Tensión de entrada:** ~24V típico, rango ~10-30 V (típico de optos LTV-844S).
- **Corriente de entrada:** ~5-10 mA por canal (dependiendo de R limitadora).
- **Aislamiento:** 5 kVrms entre lado campo y lado lógica.
- **Debouncing:** se hará por software. El Schmitt-trigger hardware ya rechaza ruido HF, pero contactos mecánicos requieren filtrado adicional 20-50 ms en firmware.
### 9.7. Compatibilidad con la lógica del PLC original
El PLC actual define entradas digitales como:
- `g_bAlarmaEntradaVentilador1`
- `g_bAlarmaRiego1`
- `g_bPulsoContador1` (caudalímetro del riego)
- `g_bEntradaInicioCarrera1` (motor riego)
- `g_bEntradaFinalCarrera1` (motor riego)
- Más: alarmas de válvulas
→ Con **12 entradas digitales** hay margen sobrado para cubrir todas estas señales más expansiones futuras.
---
## 10. Bluetooth: BlueNRG-M2SP
### 10.1. Componente
**BlueNRG-M2SP** (STMicroelectronics):
- Módulo BLE 5.0 certificado (FCC/CE).
- Basado en BlueNRG-2 (Bluetooth Smart application-specific MCU).
- Interfaz al MCU principal: **SPI** + IRQ + RESET.
- Antena integrada PCB.
### 10.2. Conexionado al MCU
| Pin MCU | Función |
|---|---|
| PF7 | SPI5_SCK |
| PF8 | SPI5_MISO |
| PF9 | SPI5_MOSI |
| PG9 | SPI5_BT_CS |
| PG0 | SPI5_BT_IRQ |
| PG15 | SPI5_BT_RST |
### 10.3. Software de soporte
STMicro proporciona el SDK **BlueNRG-LP** y los ejemplos para Nucleo con SPI host. El módulo M2SP corre el firmware BLE preprogramado de fábrica; el MCU principal le envía comandos HCI sobre SPI.
**Para el alcance de Fase 0 (app móvil de servicio):**
- BLE peripheral mode (la DB se anuncia como advertiser).
- GATT services custom: configuración de red, calibración, lectura de estado, comandos de test.
- Pareado con bonding (almacenar claves en OctoSPI).
---
## 11. Almacenamiento: SD card y OctoSPI
### 11.1. microSD
- **Conector:** Molex 47309-2651 (push-push, con detección).
- **Modo:** SDMMC1 4-bit (PC8/PC9/PC10/PC11 = DAT0..DAT3, PC12 = CLK, PD2 = CMD).
- **Detección de tarjeta:** PG10 (SD_CD_DET).
- **Filesystem propuesto:** FAT32 con FatFS R0.15 (compatible STM32CubeIDE).
### 11.2. OctoSPI Flash 64 MB (Nucleo onboard)
La Nucleo-144 H7S3L8 trae **64 MB de NOR Flash** conectada al XSPI privado del MCU (puerto **N**), accesible mediante el periférico **XSPIM1**:
- **Chip:** Macronix MX25LM51245GMI00.
- **Capacidad:** 512 Mbit / 64 MB.
- **Interfaz:** Octo-SPI (8 líneas DDR).
- **Modos:** Indirecto (lectura/escritura por registros) o **Memory-mapped** (acceso transparente como si fuera RAM, ideal para datos de configuración).
**Disponibilidad confirmada:** los pines del puerto N **no se exponen al Morpho de la Nucleo**, por lo que **no hay conflicto** con la DB. La OctoSPI está 100% disponible para uso del firmware.
**Sugerencia de particionado (a refinar en Fase 2 - D2):**
| Zona | Tamaño aprox | Contenido |
|---|---|---|
| Bootloader / OTA | 256 KB | Reservado para OTA futura |
| App firmware (XIP opcional) | 4-8 MB | Si se decide ejecutar parte del código en flash |
| Filesystem LittleFS | 16 MB | Configuración: red, recetas, calibraciones, parámetros PID |
| Recetas pre-cargadas | 4 MB | Plantillas champiñón (lectura-only) |
| Reserva | 32+ MB | Para crecimiento futuro |
---
## 12. RTC y batería de respaldo
### 12.1. Hallazgo
**No hay chip RTC dedicado.** La hoja `RTC.kicad_sch` solo contiene:
- 1 × **BH-25F-1**: portapilas para CR2032.
- 1 × **BAT54_R1_00001**: diodo Schottky dual (probable circuito ORing entre VDD y VBAT).
→ **El RTC efectivo es el integrado en el STM32H7S3L8**. La pila CR2032 alimenta el dominio VBAT del MCU para mantener:
- Reloj de tiempo real.
- Registros backup (BKP).
- Subdominio LSE (oscilador 32.768 kHz, si está presente).
### 12.2. Consecuencias
- **Precisión del RTC** = la del cristal LSE de la Nucleo (típico 20 ppm = ~1 minuto de deriva al mes). Aceptable, pero recomendable **sincronización NTP** cuando haya internet o **sincronización desde el broker MQTT** vía topic dedicado.
- **No hay alarmas externas / squarewave** disponibles (no hay DS3231 o similar). El propio MCU genera sus alarmas internas.
- **VBAT mantiene la hora con la pila CR2032** durante varios años (la corriente VBAT del H7S3 es típica < 1 µA).
---
## 13. Hallazgos críticos que afectan a Fase 0
### 13.1. ✅ Ethernet — RESUELTO (rectificación de análisis previo)
**Versión final:** Ethernet **SÍ está disponible y operativo** mediante el PHY LAN8742A integrado en la Nucleo H7S3L8.
**Configuración RMII real de la H7S3L8** (confirmada en el Excel oficial):
| Señal RMII | Pin MCU | Estado en la DB Culcon | Conectado al PHY |
|---|---|---|---|
| ETH_REF_CLK | **PB6** | NC en la DB | Sí, internamente en la Nucleo |
| ETH_MDIO | **PA2** | NC en la DB | Sí |
| ETH_CRS_DV | **PA7** | NC en la DB | Sí |
| ETH_RXD0 | **PG4** | NC en la DB | Sí |
| ETH_RXD1 | **PG5** | NC en la DB | Sí |
| ETH_MDC | **PG6** | NC en la DB | Sí |
| ETH_TX_EN | **PG11** | NC en la DB | Sí |
| ETH_TXD0 | **PG13** | NC en la DB | Sí |
| ETH_TXD1 | **PG12** | NC en la DB | Sí |
**Confirmación del cliente:**
- La Nucleo es la **NUCLEO-H7S3L8** con PHY LAN8742A y RJ45 onboard.
- Se han hecho pruebas previas con la Nucleo "pelada" y el Ethernet funciona.
- "NC" en el Excel significa "**no conectado a la DB**" — la propia Nucleo usa esos pines internamente para el PHY sin que la DB tenga que cablearlos.
> **Lección aprendida (rectificación):** mi análisis inicial confundió la configuración RMII de la **H743** (donde los pines son PA1/PC1/PC4/PC5/PB13) con la de la **H7S3L8** (donde son PG-only + PA2/PA7/PB6). La definición simbólica `Placa_Nucleo.kicad_sch` está basada en el símbolo de la H743ZI reutilizado, y eso confundió mis emparejamientos. **Las funciones alternadas concretas siempre se validan contra el datasheet de la pieza real, no del símbolo reutilizado.**
**Configuración en CubeMX (para Fase 4):**
```
ETH:
Mode: RMII
Pin mapping: Configuración por defecto H7S3L8 (PG-only)
PHY: LAN8742 (driver incluido en HAL)
RX/TX descriptors: ubicación habitual (RAM normal o SRAM dedicada AHB)
RMII REF_CLK: external (proporcionado por el oscilador 50 MHz onboard de la Nucleo)
```
### 13.1.1. Verificación recomendada al montar la primera DB
Antes de dar por buena Ethernet con la DB encima, hacer una prueba de validación:
1. Cargar un firmware ejemplo de LwIP+HTTP en la Nucleo con la DB montada.
2. Conectar el RJ45 a un switch.
3. Verificar que la Nucleo coge IP por DHCP y responde a ping.
Es una validación de 30 minutos. No espero problemas (los 9 pines RMII no se tocan en la DB), pero cierra el último cabo suelto de campo.
### 13.2. USB NO disponible — confirmado
Los pines PA10 (USB_ID) y PA12 (USB_DP) están reusados (U_AI_CS y SPI2_SCK respectivamente). PA8 y PA9 también están etiquetados como "USB PINOUT" con sus funciones I2C3_SDA/SCL pero NC.
**Implicación:** Ninguna directamente para los requisitos de Fase 0. Solo afecta a:
- Sustitución de la DB como dispositivo USB → no posible.
- Debug por USB CDC del propio MCU → no posible.
**Compensación:** el Excel confirma que **UART3 (PD8/PD9) está reservado como Virtual COM Port del ST-Link**. Esto da un canal serie de debug por el cable USB del propio ST-Link, **sin necesidad de USB del MCU**. Suficiente para debugging.
### 13.3. Pines marcados como "PROBLEMÁTICO"
El Excel marca dos pines como problemáticos:
- **PA11** — disponible pero "PROBLEMÁTICO"
- **PE6** — disponible pero "PROBLEMÁTICO"
> **A confirmar contigo:** ¿qué significa "PROBLEMÁTICO" aquí? Posibles interpretaciones: conflicto eléctrico no resuelto, routing complicado en PCB, función crítica que no debe tocarse, restricción del símbolo Nucleo... Conviene saber qué evitar.
### 13.4. Nomenclatura COM/NC vs SPST-NO
El relé G5NB-1A4 es SPST-NO (solo NO). Los labels `RELE_NC_n` del esquemático no corresponden a un contacto NC físico. **Errata probable** — debería ser `RELE_NO_n`. A confirmar.
### 13.5. ✅ Archivo EntradasDigitales — RESUELTO
Archivo entregado y analizado. Ver §9 reescrita.
---
## 14. Mapa de pines del MCU
### 14.1. Resumen por categoría
Total pines del MCU mapeados con función: **85 de 145** (los demás son alimentación, GND, o sin conectar).
| Categoría | Cantidad | Pines |
|---|---|---|
| RS485 / UART | 6 | PA15, PB8, PB9, PE7, PE8, PE9 (+ PF0, PF2 selector mux) |
| CAN | 2 | PD0, PD1 |
| SPI2 (ADC temperaturas) | 3 | PA12, PC1, PC2 |
| SPI4 (ADC entradas analógicas) | 3 | PE2, PE13, PE14 |
| SPI5 (Bluetooth) | 3 | PF7, PF8, PF9 |
| SDMMC1 (microSD) | 7 | PC8-12, PD2, PG10 |
| ADC control (CS, DRDY, START, RESET) | 13 | varios |
| DAC SPI | (a confirmar) | — |
| Relés (12) | 12 | varios |
| Entradas digitales (12) | 12 | varios |
| Direccionamiento Modbus (DIP) | 8 | varios |
| Direccionamiento CAN (DIP) | 7 | varios |
| BLE control (CS/IRQ/RST) | 3 | PG0, PG9, PG15 |
### 14.2. Pines libres en el MCU para futuro uso
Pines `PA*..PG*` que aparecen en el símbolo pero **sin asignación** en el esquemático:
- **PA**: PA2, PA7, PA8, PA9, PA11, PA13, PA14 (algunos pueden ser SWDIO/SWCLK, reservados para ST-Link).
- **PB**: PB2, PB3, PB4, PB6, PB7 (PB6/PB7 reservados como SWO o I2C posiblemente).
- **PD**: PD8, PD9, PD15.
- **PE**: PE0, PE1, PE6.
- **PF**: PF12, PF13.
- **PG**: PG4, PG5, PG6, PG11, PG12, PG13.
- **PH/PI/PJ/PK/PN**: mayoría libres (puerto N reservado a OctoSPI flash interna).
→ Margen abundante para futuras expansiones (CAN secundario, segundo bus I²C, segundo SDMMC, etc.).
---
## 15. Apéndice A — Inventario de componentes
### A.1. Por categoría
| Categoría | Componente | Cantidad | Comentario |
|---|---|---|---|
| **MCU board** | NUCLEO144-H7S3L8 | 1 | Placa Nucleo madre |
| **Comunicaciones** | SN65HVD75D | 5 | RS485 transceiver |
| | SM712_SOT23 | 5 | RS485 TVS |
| | TCAN3414DDFR | 1 | CAN-FD isolated transceiver |
| | ACM2012-201-2P-T002 | 1 | CAN common-mode choke |
| | NUP2105L | 1 | CAN TVS |
| | MAX14778ATP+ | 1 | Mux RS485 (dual SP4T) |
| | MAX4734EUB+ | 1 | Mux RS485 DE (SP4T) |
| | BLUENRG-M2SP | 1 | Módulo BLE STMicro |
| **Conversión** | ADS124S08IPBSR | 4 | ADC 24-bit 12-canal (3 temperatura + 1 AI) |
| | DAC7718SPAGR | 1 | DAC 12-bit 8-canal |
| | LM4040DBZ-2.5 | 1 | Referencia 2.5V |
| | ESDA14V2BP6 | 3 | Protección ESD entradas analógicas |
| **Relés/digitales** | G5NB-1A4-EL-HA_DC24 | 12 | Relé Omron 5A SPST-NO |
| | ULN2003D1013TR | 4 | Driver Darlington |
| **Alimentación** | LM2576-5.0WU-TR | 1 | Switching 24→5V |
| | NCP1117-3.3_SOT223 | 2 | LDO 5→3.3V (AVDD y DVDD) |
| | DMT6007LFGQ-7 | 1 | P-MOSFET protección polaridad |
| | AP74700QW6-7 | 1 | Controlador protección |
| | 1N5822 | 1 | Schottky |
| | SMBJ28A | 1 | TVS entrada 28V |
| | SMAJ33A | 9 | TVS salidas 24V |
| | 0ZRP0400FF1A | 1 | PTC fuse 4A entrada |
| | 0ZCF0050FF2C | 9 | PTC fuse 500mA salidas 24V |
| | PA4309.104NLT | 1 | Choke 100µH |
| | PJ-082BH | 1 | Jack DC 2.1mm |
| **Almacenamiento** | 47309-2651 | 1 | Conector microSD Molex |
| **RTC** | BH-25F-1 | 1 | Portapilas CR2032 |
| | BAT54_R1_00001 | 1 | Schottky dual ORing |
| **Conectores campo** | Conn_01x02 | 26 | Bornes 2 vías |
| | Conn_01x04 | 10 | Bornes 4 vías |
| | Conn_01x03 | 1 | Bornes 3 vías |
| | Conn_01x07 | 1 | Bornes 7 vías |
| | Conn_01x09 | 2 | Bornes 9 vías |
### A.2. PCB
- **Capas:** 4 (F.Cu, In1.Cu = plano alimentación, In2.Cu = plano señal, B.Cu).
- **Material:** FR4 estándar (ε_r ≈ 4.5).
- **Grosor:** 1.6 mm.
- **Acabado de cobre:** 35 µm (1 oz).
- **Tamaño:** A2 en KiCad (no se traduce directamente al tamaño físico de la placa, requeriría inspección del Edge.Cuts).
---
## 16. Apéndice B — Pinout completo del MCU
> Esta tabla es la **fuente única de verdad** para configurar el periférico STM32 en CubeMX. Cuando hay conflicto entre el datasheet de la H7S3 y este pinout, gana este pinout.
### B.1. Pines asignados (con función)
| Pin | Net del esquemático | Función propuesta en CubeMX |
|---|---|---|
| PA0 | DI8_MCU | GPIO_Input + EXTI |
| PA1 | MCU_RELE_12 | GPIO_Output (a ULN2003) |
| PA3 | SPI4_AI_CS | GPIO_Output (CS del ADC AI) |
| PA4 | DI9_MCU | GPIO_Input + EXTI |
| PA5 | DI4_MCU | GPIO_Input + EXTI |
| PA6 | DI3_MCU | GPIO_Input + EXTI |
| PA10 | U_AI_SPI_CS | GPIO_Output (¿CS adicional ADC AI?) |
| PA12 | SPI2_SCK | SPI2_SCK (función alterna AF5) |
| PA15 | UART4_DE | GPIO_Output o UART4_DE (AF8) |
| PB0 | DI10_MCU | GPIO_Input + EXTI |
| PB1 | MCU_RELE_5 | GPIO_Output |
| PB5 | MCU_RELE_1 | GPIO_Output |
| PB8 | UART4_RX | USART4_RX (AF8) |
| PB9 | UART4_TX | USART4_TX (AF8) |
| PB10 | MCU_RELE_4 | GPIO_Output |
| PB11 | DI1_MCU | GPIO_Input + EXTI |
| PB12 | DI2_MCU | GPIO_Input + EXTI |
| PB13 | U_AI_START/SYNC | GPIO_Output |
| PB14 | MCU_RELE_2 | GPIO_Output |
| PB15 | MCU_RELE_3 | GPIO_Output |
| PC0 | DI12_MCU | GPIO_Input + EXTI |
| PC1 | SPI2_MOSI | SPI2_MOSI (AF5) |
| PC2 | SPI2_MISO | SPI2_MISO (AF5) |
| PC3 | DI11_MCU | GPIO_Input + EXTI |
| PC4 | U_AI_DRDY | GPIO_Input + EXTI (DRDY del ADC AI) |
| PC5 | DI5_MCU | GPIO_Input + EXTI |
| PC6 | DI6_MCU | GPIO_Input + EXTI |
| PC7 | MCU_RELE_6 | GPIO_Output |
| PC8 | SD_DAT0 | SDMMC1_D0 (AF12) |
| PC9 | SD_DAT1 | SDMMC1_D1 (AF12) |
| PC10 | SD_DAT2 | SDMMC1_D2 (AF12) |
| PC11 | SD_DAT3 | SDMMC1_D3 (AF12) |
| PC12 | SD_CLK | SDMMC1_CK (AF12) |
| PD0 | CAN_TX | FDCAN1_TX (AF9) |
| PD1 | CAN_RX | FDCAN1_RX (AF9) |
| PD2 | SD_CMD | SDMMC1_CMD (AF12) |
| PD3 | UI_TEMP3_CS | GPIO_Output |
| PD4 | U_TEMP3_DRDY | GPIO_Input + EXTI |
| PD5 | U_TEMP3_START/SYNC | GPIO_Output |
| PD6 | UI_TEMP2_CS | GPIO_Output |
| PD7 | U_TEMP123_RESET | GPIO_Output |
| PD10 | MCU_RELE_9 | GPIO_Output |
| PD11 | MCU_CAN_ADD_3 | GPIO_Input (DIP, pull-up) |
| PD12 | MCU_CAN_ADD_4 | GPIO_Input (DIP, pull-up) |
| PD13 | MCU_RELE_7 | GPIO_Output |
| PD14 | MCU_CAN_ADD_2 | GPIO_Input (DIP, pull-up) |
| PE2 | SPI4_SCK | SPI4_SCK (AF5) |
| PE3 | MCU_RELE_11 | GPIO_Output |
| PE4 | U_TEMP1_DRDY | GPIO_Input + EXTI |
| PE5 | UI_TEMP1_CS | GPIO_Output |
| PE7 | UART7_RX | UART7_RX (AF7) |
| PE8 | UART7_TX | UART7_TX (AF7) |
| PE9 | UART7_DE | UART7_DE (AF7) o GPIO_Output |
| PE10 | MCU_CAN_ADD_1 | GPIO_Input (DIP, pull-up) |
| PE11 | MCU_MB_ADD_5 | GPIO_Input (DIP, pull-up) |
| PE12 | MCU_CAN_ADD_0 | GPIO_Input (DIP, pull-up) |
| PE13 | SPI4_MISO | SPI4_MISO (AF5) |
| PE14 | SPI4_MOSI | SPI4_MOSI (AF5) |
| PE15 | MCU_MB_ADD_6 | GPIO_Input (DIP, pull-up) |
| PF0 | MUX_RS485_SEL1 | GPIO_Output |
| PF1 | U_TEMP1_START/SYNC | GPIO_Output |
| PF2 | MUX_RS485_SEL0 | GPIO_Output |
| PF3 | MCU_MB_ADD_4 | GPIO_Input (DIP, pull-up) |
| PF4 | MCU_CAN_ADD_6 | GPIO_Input (DIP, pull-up) |
| PF5 | U_AI_RESET | GPIO_Output |
| PF6 | DI7_MCU | GPIO_Input + EXTI |
| PF7 | SPI5_SCK | SPI5_SCK (AF5) |
| PF8 | SPI5_MISO | SPI5_MISO (AF5) |
| PF9 | SPI5_MOSI | SPI5_MOSI (AF5) |
| PF10 | MCU_CAN_ADD_5 | GPIO_Input (DIP, pull-up) |
| PF11 | MCU_MB_ADD_2 | GPIO_Input (DIP, pull-up) |
| PF14 | MCU_MB_ADD_7 | GPIO_Input (DIP, pull-up) |
| PF15 | MCU_MB_ADD_3 | GPIO_Input (DIP, pull-up) |
| PG0 | SPI5_BT_IRQ | GPIO_Input + EXTI |
| PG1 | MCU_RELE_10 | GPIO_Output |
| PG2 | U_TEMP2_DRDY | GPIO_Input + EXTI |
| PG3 | U_TEMP2_START/SYNC | GPIO_Output |
| PG7 | MCU_MB_ADD_0 | GPIO_Input (DIP, pull-up) |
| PG8 | MCU_MB_ADD_1 | GPIO_Input (DIP, pull-up) |
| PG9 | SPI5_BT_CS | GPIO_Output |
| PG10 | SD_CD_DET | GPIO_Input + EXTI |
| PG14 | MCU_RELE_8 | GPIO_Output |
| PG15 | SPI5_BT_RST | GPIO_Output |
| VBAT | VBAT (CR2032) | Backup domain |
### B.2. Pines sin asignar (libres)
Pines en el símbolo del MCU pero **no aparecen en netlabels del raíz**: PA2, PA7, PA8, PA9, PA11, PA13, PA14, PB2, PB3, PB4, PB6, PB7, PD8, PD9, PD15, PE0, PE1, PE6, PF12, PF13, PG4, PG5, PG6, PG11, PG12, PG13, además del puerto entero PH (PH0/PH1 son cristal HSE) y los puertos PI/PJ/PK/PN (reservados).
---
## Estado de Fase 1 / Análisis 01
✅ **Completado:**
- Inventario de componentes (incluyendo EntradasDigitales).
- Mapeo pin-función del MCU consolidado con el Excel oficial (~115 pines con uso definido).
- Identificación de subsistemas: comunicaciones, alimentación, conversión, almacenamiento, entradas digitales (LTV-844S + SN74HCS14), HMI físico.
- Verificación de disponibilidad OctoSPI (sin conflicto).
- Confirmación de la arquitectura del mux RS485 (UART4 esclavo, UART7 mux, UART8 reserva, UART3 VCP).
- **Confirmación de Ethernet operativo** (PHY LAN8742A onboard de la Nucleo, pines RMII libres en la DB).
⚠ **Pendiente de tu confirmación (no bloqueante para Fase 2):**
- Confirmar significado de "PROBLEMÁTICO" para PA11 y PE6 (probable: conflicto físico no documentado o pines reservados para usos futuros).
- Confirmar nomenclatura RELE_COM/NC (probable errata; debería ser RELE_NO).
- Tipo exacto de sondas NTC y de entradas analógicas (configurables por jumper 4-20mA / 0-10V?).
- Modelo previsto de fuente 24V del cuadro (5 A min, 8 A recomendado).
🔎 **Verificación de campo recomendada** al montar la primera DB completa:
- Ejecutar firmware Ethernet ejemplo en Nucleo+DB para validar PHY (es 30 min, evita sorpresas en Fase 4).
🔜 **Siguientes entregas pendientes:**
- `02-firmware-stm32-actual.md` — proyecto STM32CubeIDE actual (esclavo Modbus). Cuando me lo pases.
- `03-riego-avanzado-atmel.md` — firmware Atmel del riego.
- `04-wpf-cliente.md` — aplicación WPF.
🧰 **Activos generados en esta entrega:**
- `01-hardware-DB.md` (este documento).
- `pinmap_h7s3l8.csv` — pinmap completo fusionando Excel + KiCad. Será la referencia para configurar CubeMX en Fase 4.