# 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.