通过USART访问STM32L4引导程序:无ACK

时间:2019-06-02 19:41:03

标签: stm32 mbed nucleo

我正在尝试访问Nucleo L476RG“从”板的引导程序。

“主”板是Nucleo L496ZG板。在我的程序中,我在主板上定义了一个DigitalOutextBoot0,一个extReset。这些断开到从属板上的boot0NRST引脚。另外,我在主控板上有一个名为Serial的{​​{1}}实例,该实例连接到从属板上的UART2。同样,似乎已经预设置了BOOT1来运行引导加载程序,即它被断言为低电平并且不能更改为运行SRAM中的任何内容。

当前,在usart中,我将BOOT0设置为高电平并将NRST降低为0.1秒,然后将其恢复为高电平。我观察到运行此功能确实会重置设备并阻止程序运行。

resetToBootloader中,我按照AN2606格式化串行:8位,偶校验,1个停止位。然后,我通过该串行总线将0x7F发送到从板。我没有收到任何响应,并且使用了逻辑分析仪,我已经确认从机将其放在正确的引脚上,并且从机的TX输入没有变化。要启动引导程序,还需要做些什么?

这是我的相关代码:

initBootloader

如果有帮助,请here's a picture of my board setup

1 个答案:

答案 0 :(得分:0)

我相信我是通过使用USART1而不是USART2来解决此问题的。该文档指出,USART1和USART2都可以使用,但是我只从USART1收到0x79。

此外,我还必须从Serial切换到UARTSerial。从机首先发送一个错误的数据包,0xC0带有错误的奇偶校验位。不确定为什么会这样做,但是会导致常规Serial实例无法处理行进字节。