返回首页

微控制器调试错误:SWD 和硬件故障

本文分析微控制器开发中的真实故障案例:硬件错误如连接器中的碎片和引脚冲突,软件 — Flash 配置和 FPU。STM32、TI CC、nRF 的可靠调试实用解决方案。

史诗级 MCU 故障:从 SWD 到 ESD 和晶振
Advertisement 728x90

微控制器调试中常见的硬件和软件陷阱

微控制器固件冻结:心跳 LED 停止闪烁,UART 控制台无响应。经典症状。别慌——系统地检查堆栈跟踪、日志和外设。罪魁祸首往往是简单问题:连接器里的杂物、引脚冲突或配置错误。

硬件陷阱:从杂物到焊接失误

Telematics 板卡为 CAN 网络开发:汽车无法启动,启动电机空转无用。三小时诊断——故障源于 OBD-II 连接器:一片金属箔屑短路了三个引脚。清除杂物后问题解决。

密集板卡布局使用 Tag-Connect:编程连接器因旁边的 Traco Power 稳压器而无法访问。夹子无法扣紧——手指够不着。解决办法:找手指细的同事帮忙,或重新设计布局。

Google AdInline article slot

USB 供电闪烁并断开。排除 BLE/UWB 导致的电压下垂嫌疑。罪魁祸首:故障的 USB-A 插座——完全插入时失去接触,拉出半毫米就能工作。教训:坚持使用高质量线缆和连接器。

SWD 连接通过转台滑环使用 90 厘米长缆线时掉线。数据包无法通过。短的 12 厘米缆线正常工作。最后用飞线编程板卡。

引脚冲突与调试

JTAG/SWD 无法启动:'No device found'。固件批量脚本要求通过 STM32 ST-LINK Utility 手动复位。原因:PA13 (TMS/SWDIO) 上的 LED。SWD 引脚 (PA13, PA14) 不能用作 GPIO。将 LED 移到 PA15 后调试恢复。

Google AdInline article slot

带 FC7300 的板卡:J-Link 显示橙色(复位状态),J-Flash 报告 'Could not download file'。MCU 回流无济于事。临时修复:更换 USB 端口或编程器。

MCU 配置与引导加载器

CC26x2 断电重启后挂起,尽管在调试器下正常工作。原因:最后 Flash 页的客户配置扇区未写入。对于 TI CC26x4,先用 SmartFR Flash Programmer 2 刷入 blinky_backdoor_select_btn26x2.bin,然后刷自己的固件。

STM32F413ZGJ6 引导加载器无法跳转到应用:向量表中的 MSP 检查超过 128 kB。MCU 有 320 kB RAM,但引导加载器是为 STM32F205VC 构建的。Cortex-M4/M3 兼容性掩盖了这个 bug 五年之久。

Google AdInline article slot

静电与可靠性

为期一周的测试:RAM 中的日志被触摸时产生的 ESD 火花擦除。解决:用 NVRAM 或 SD 卡存日志。

音频与外设

来自 BT1026 (Bluetooth Classic) 的 I2S:在 nRF5340 上声音沙哑。WS 为 50 kHz,但 FSC-BT1026C 模块采样率仅到 48 kHz——零值导致沙哑。修复:让 BT1026 作 I2S 主设备。

电路设计失误

忘了给 MCU 上电——一根废线修好了。或者 Ethernet PHY 晶振用 23 MHz 而非 25 MHz:自动协商失败。Olimex-STM32-H407:固件中晶振 12 MHz 而非 25 MHz,导致 UART 乱码。

SPI-NAND W25M02GV 原型:侧边引脚在洞洞板上短路了热垫。回流到绿色 PCB 后修复。

VNQ7E100AJ 高侧驱动器:开路负载时假电流读数 (V_SENSEH 上拉)。ADC 误判为过载。ECU 修订版换芯片。

FPU 与库错误

Cortex-M33 上的 snprintf() 因浮点格式化时的 FPU 问题崩溃到 Default Handler。

关键经验

  • 在将 SWD/JTAG 引脚指定为 GPIO 前先检查。
  • 刷自定义固件前配置好 TI MCU 客户扇区。
  • 日志使用 ESD 保护和 NVRAM。
  • 原型验证晶振和连接器。
  • 仔细读数据手册:开路检测等特性可防假触发。

— Editorial Team

Advertisement 728x90

继续阅读