我在使用 ST-Link 和 Segger 编程器都能稳定烧写。我还有一个用 UART 烧写 MCU 的自制程序。这个程序与其他 ST 芯片配合使用了很多年,在上述这颗芯片上也部分可用,具体情况如下:
1. MCU 已经烧写过,固件执行软件复位命令,外部 PC 在此之前拉高 BOOT0。@115200 每次都能完美工作。
2. MCU 已经烧写过,外部 PC 拉高 BOOT0 并提示用户按下 PCB 上的 RESET 按键。@115200 每次都能完美工作。
3. MCU 已被擦除,外部 PC 拉高 BOOT0 并提示用户按下 PCB 上的 RESET 按键。我试了约 100 次、使用不同波特率,Bootloader 只有一次响应……
我花了很长时间排查,最终发现这颗芯片对 NRST 的上升时间非常敏感。我原本的 PCB 设计是 0.1uF 电容加 10K 上拉。按文档中给出的示例去掉了 10K 上拉,仍然无法工作。最后我用 1uF 电容加 10K 上拉,才让 Bootloader 启动起来。依我看,是 NRST 上升得太快。
问题最终解决了,请教NRST 上升时间这个规格,在哪儿有文档记载?
|