En el editor de esquemáticos (Eeschema), tu lienzo es infinito. El objetivo aquí no es dibujar cómo se verá la placa físicamente, sino establecer las reglas lógicas y eléctricas. Para que un microcontrolador STM32 (o cualquier chip ARM Cortex-M) funcione de manera estable en un entorno industrial, tu esquemático debe incluir cuatro subsistemas obligatorios:
Los ingenieros novatos conectan la bomba, la LCD y el STM32 dibujando largas y torcidas líneas verdes que cruzan toda la pantalla. Eso hace que el esquemático sea imposible de leer. Los profesionales usan Etiquetas de Red (Net Labels).
Si pones una etiqueta llamada PWM_BOMBA en el pin PA8 del STM32, y pones esa misma etiqueta en la resistencia del MOSFET (Día 66) en la otra esquina de la pantalla, KiCad sabe matemáticamente que están unidas por el mismo cable, sin necesidad de dibujar la línea. El esquemático se vuelve limpio, modular y auditable.
Ejercicio 1: El hardware que dibujes en KiCad dicta las macros de tu firmware en C. Crea el archivo de cabecera hardware_map.h que documente (para el software) los pines exactos que acabamos de asignar lógicamente en el esquemático, garantizando que el Hardware y el Software hablen el mismo idioma.
#ifndef HARDWARE_MAP_H
#define HARDWARE_MAP_H
/**
* ============================================================================
* ARCHIVO DE MAPEADO HARDWARE-SOFTWARE (Basado en Esquemático Rev 1.0)
* Proyecto: Despachador de Gas LP
* ============================================================================
* NOTA BARE-METAL:
* Este archivo DEBE coincidir 100% con las "Net Labels" de KiCad Eeschema.
* Si el ingeniero de hardware cambia un pin en KiCad, solo se modifica este
* archivo y todo el proyecto se recompila automáticamente sin romper la lógica.
*/
// ----------------------------------------------------------------------------
// SISTEMA MÍNIMO (Core System)
// ----------------------------------------------------------------------------
// Cristal Externo (HSE) conectado a pines OSC_IN / OSC_OUT (Generalmente PH0/PH1)
#define RELOJ_HSE_FRECUENCIA_HZ 8000000UL
// Interfaz de Depuración Serial Wire Debug (SWD)
// ADVERTENCIA: No usar estos pines como GPIO normales, o perderás la
// capacidad de reprogramar el chip por ST-Link.
#define PUERTO_SWD GPIOA
#define PIN_SWDIO 13 // Etiqueta KiCad: SWDIO
#define PIN_SWCLK 14 // Etiqueta KiCad: SWCLK
// ----------------------------------------------------------------------------
// ACTUADORES DE POTENCIA (Días 64, 65, 66)
// ----------------------------------------------------------------------------
#define PUERTO_VALVULA GPIOB
#define PIN_MOSFET_VALVULA 5 // Etiqueta KiCad: CTRL_VALVULA_PRINCIPAL
#define PUERTO_ALARMA GPIOC
#define PIN_TORRETA_BJT 13 // Etiqueta KiCad: CTRL_TORRETA_ROJA
// ----------------------------------------------------------------------------
// SENSORES E INSTRUMENTACIÓN (Días 70, 71, 72, 73, 74)
// ----------------------------------------------------------------------------
#define PUERTO_CAUDAL GPIOA
#define PIN_CAUDALIMETRO 0 // Etiqueta KiCad: HALL_PULSO_GAS (TIM2_CH1)
#define PUERTO_ANALOGICO GPIOA
#define PIN_PT100_ADC 2 // Etiqueta KiCad: ADC_TEMP_PT100
#define PIN_MOTOR_SHUNT 4 // Etiqueta KiCad: ADC_CORRIENTE_BOMBA
#define PIN_LAZO_4_20MA 5 // Etiqueta KiCad: ADC_PRESION_TANQUE
#endif // HARDWARE_MAP_H
Objetivo del día: Trazabilidad entre el Dominio Lógico (KiCad) y el Firmware (C).
Dibujar el "Sistema Mínimo" del STM32 es el equivalente a construir los cimientos del edificio. Si olvidas el capacitor de Reset (NRST), tu máquina se reiniciará sola cada vez que la contactora de la bomba haga chispa. Si omites los capacitores de desacople (VDD), el ADC leerá puros números basura.
Al diseñar este esquemático en KiCad usando etiquetas (Net Labels) claras como HALL_PULSO_GAS y mapearlas rigurosamente en el archivo hardware_map.h de tu código Bare-Metal, has creado una **Ingeniería Concurrente**. Si mañana decides cambiar el caudalímetro del pin PA0 al pin PB3 porque rutar la pista de cobre es más fácil, simplemente cambias la etiqueta en KiCad, cambias el número "0" por un "3" en este archivo de C, y el Despachador entero seguirá funcionando a la perfección sin tocar la sagrada Máquina de Estados (FSM).
hardware_map.h) para evitar números mágicos ("Magic Numbers") esparcidos por el código fuente.1. En el diseño SVG, ¿por qué pusimos un conector de 4 pines (J1) para el SWD (VDD, DIO, CLK, GND) en lugar de solo 2 pines (DIO y CLK)?
Respuesta: Porque el programador (ST-Link) y la placa de destino deben compartir la misma referencia de Tierra (GND) para que las señales eléctricas de datos tengan sentido (como vimos en el aislamiento galvánico). Además, el programador lee el pin VDD de tu placa para adaptar su voltaje interno (Sensing); si tu placa corre a 3.3V, el ST-Link envía datos a 3.3V, si corre a 1.8V, se adapta a 1.8V para no quemar el chip. Sin esos 4 pines, la programación fallará.
2. ¿Qué desastre de hardware y software ocurriría si configuras el pin PA13 como una salida estándar para encender un LED y le conectas una resistencia a Tierra en tu esquemático KiCad?
Respuesta: Te quedarías "encerrado" fuera de tu propio chip (Brick). El pin PA13 es el SWDIO (Datos del programador). Si el hardware lo ancla a tierra o si el código main() inicia y rápidamente lo reconfigura como una salida normal (GPIO Out), el ST-Link perderá la comunicación instantáneamente y no podrá inyectar nuevo código para arreglarlo. En la industria, los pines de SWD se dejan exclusivos y sagrados, jamás se multiplexan a menos que sea una emergencia absoluta de falta de pines.