Errores Comunes de Hardware y Software en la Depuración de Microcontroladores
El firmware del microcontrolador se cuelga: el LED de heartbeat deja de parpadear, la consola UART se vuelve no receptiva. Síntoma clásico. No te alarmes — revisa sistemáticamente las trazas de pila, los logs y los periféricos. El culpable suele ser algo simple: residuos en conectores, conflictos de pines o configuraciones erróneas.
Trampas de Hardware: Desde Residuos hasta Errores de Soldadura
Desarrollo de una placa de telemática para una red CAN: el coche no arranca, el arranque gira en vacío. Tres horas de diagnóstico — la causa estaba en el conector OBD-II: un trozo de papel de aluminio cortocircuitaba tres pines. Limpiar el residuo lo solucionó.
Diseño denso de placa con Tag-Connect: el conector de programación inaccesible por el regulador Traco Power cercano. El clip no engancha — los dedos no llegan. Solución: pide ayuda a compañeros con dedos finos o rediseña el layout.
La alimentación USB parpadea y se corta. Se descartó la caída de voltaje por BLE/UWB. Culpable: receptáculo USB-A defectuoso — al insertar el enchufe por completo pierde contacto, sacarlo medio milímetro lo hace funcionar. Lección: usa cables y conectores de calidad.
El enlace SWD se cae con un cable de más de 90 cm a través del anillo deslizante en la torreta. Los paquetes no pasan. Un cable corto de 12 cm funciona bien. Terminamos programando las placas con cables voladores.
Conflictos de Pines y Depuración
JTAG/SWD no arranca: 'No device found'. El script batch del firmware exige reset manual vía STM32 ST-LINK Utility. Causa: LED en PA13 (TMS/SWDIO). Los pines SWD (PA13, PA14) no se pueden usar para GPIO. Mover el LED a PA15 restauró la depuración.
Placa con FC7300: J-Link muestra naranja (estado de reset), J-Flash informa 'Could not download file'. El reflujo del MCU no ayudó. Arreglo temporal: cambia el puerto USB o el programador.
Configuración del MCU y Bootloaders
CC26x2 se cuelga tras un ciclo de alimentación, aunque funciona bajo depurador. Causa: no se escribió en el sector de configuración del cliente en la última página de Flash. Para TI CC26x4, flashea primero blinky_backdoor_select_btn26x2.bin con SmartFR Flash Programmer 2, luego tu propio firmware.
El bootloader de STM32F413ZGJ6 no salta a la app: verificación de MSP en la tabla de vectores >128 kB. El MCU tiene 320 kB de RAM, pero el bootloader se compiló para STM32F205VC. La compatibilidad Cortex-M4/M3 ocultó el error durante cinco años.
Electricidad Estática y Fiabilidad
Prueba de una semana: logs en RAM borrados por una chispa ESD al tocar. Solución: NVRAM o tarjeta SD para logs.
Audio y Periféricos
I2S desde BT1026 (Bluetooth Classic): voz rasposa en nRF5340. WS a 50 kHz, pero el módulo FSC-BT1026C solo saca muestras hasta 48 kHz — los ceros causan el raspado. Arreglo: BT1026 como maestro I2S.
Fallos en el Diseño de Circuitos
Olvidé alimentar el MCU — un cable de chatarra lo arregló. O cristal del PHY Ethernet a 23 MHz en vez de 25 MHz: falla la auto-negociación. Olimex-STM32-H407: basura en UART por cristal de 12 MHz en lugar de 25 MHz en el firmware.
Prototipo SPI-NAND W25M02GV: los pines laterales cortocircuitan la almohadilla térmica en placa de prototipo. Reflujo en PCB verde lo solucionó.
Driver de lado alto VNQ7E100AJ: lectura falsa de corriente en carga abierta (pull-up de V_SENSEH). El ADC lo interpreta como sobrecarga. Cambio de chip en la revisión del ECU.
Errores de FPU y Bibliotecas
snprintf() en Cortex-M33 se estrella en Default Handler por problemas de FPU durante el formateo de float.
Lecciones Clave
- Revisa los pines SWD/JTAG antes de asignarlos como GPIO.
- Configura los sectores de cliente de los MCU TI antes de flashear firmware personalizado.
- Usa protección ESD y NVRAM para logs.
- Valida cristales y conectores en prototipos.
- Lee la hoja de datos: funciones como detección de carga abierta evitan disparos falsos.
— Editorial Team
Aún no hay comentarios.