Boot Loader 与上位机通信不稳定
问题:
某客户工程师在某型号新产品的设计中,使用了 STM32L151VCT6。据其工程师讲述:他使用 ST 的
Flash Loader demo 通过 STM32 的 USART1 向其加载用户程序,发现 Boot Loader demo 与 STM32
通信不稳定,时而成功时而不成功,有时甚至连接不上。
调研:
用万用表测量其所使用的通信电缆,确认其完好。使用该通信电缆,将其所使用的电脑通信口与另外
一个通信口连接,互发数据,验证该通信口完好。将电缆接回到其用户板上,选择用户板的启动模式,
设为 System Memory 启动,然后开启用户板电源。通过串口调试助手向用户板以 57600BPS 的波特率
发送数据 0x7f,并使用示波器观测 STM32 的 USART1 的 Tx 与 Rx 管脚。通过示波器观测,确认数据
0x7f 正确传送到 USART1 的 Rx 管脚,而 Tx 管脚上有返馈代码 0x79。多次测试,发现并非每次测
试 USART1 的 Tx 管脚上都有返馈代码送出。将 STM32 的 USART1 的 Tx、Rx 管脚用 10K 电阻上拉
到 VDD,测试,现象依旧。将 STM32 的 USART2 的 Tx、Rx 管脚用 10K 电阻上拉到 VDD,测试,通
信稳定。
结论:
干扰信号通过 USART2 干扰了 Boot Loader 的运行,使其误认为 USART2 被选择用来与 Boot Loader
Demo 通信,而忽略了 USART1 上的信号,造成 Flash Loader Demo 不能通过 USART1 与其对话。
处理:
将 USART1 的 Tx、Rx 用 10K 电阻上拉到 VDD,将 USART2 的 Tx、Rx 用 10K 电阻上拉到 VDD。
建议:
STM32 的 Boot Loader 有多个版本。早期的版本只支持通过 USART1 进行通信,后来的版本增加了
USART2、USART3、CAN、DFU 等通信方式。见下表:
评论0