应用原理;
STM32F103系列单片机在使用串口进行编程的时候利用的是芯片自身的自举程序实现的。
当Boot0 = 1,Boot1 = 0的时候开始执行自举程序,当开始执行自举程序的时候单片机的外设将按照如下图进行操作。此时USART的通信速率是自适应的(此处建议波特率<=115200)。同时开启看门狗,可以使用串口一进行数据交互。
如下图所示,为自举程序运行后的流程图,通过检测开始帧0x7f判断是否开始数据传输,当开始的时候通过关断所有的中断源,之后配置串口,之后开始进入循环接收代码。
在某些单片机的上具有双内存区的情况,这种情况是可以在运行的软件中直接设置BFB2的标志位进行运行代码的切换的。但是这次使用的STM32F103RCT6并不具备这些功能。
下表展示了在115200波特率下使用自动波特率的情况下的波特率误差的范围,若程序出现不能正常下载的情况下,可以通过降低波特率来解决该问题。
在知道芯片的引导程序进入模式后,通过串口芯片自动配置BOOT0引脚和复位单片机即可实现自动化的程序升级。
在升级上使用CH340G芯片将USB转换为串口,同时通过RTS引脚和DTR引脚控制NRST/BOOT0引脚实现程序升级。使用FlyMCU软件对程序进行升级。在CH340芯片上RTS引脚默认为高电平,DTR引脚默认不输出为高阻状态。
其中一种方式如下图所示,芯片使用5V供电,通过三极管进行电平转换实现自动程序升级。
另一种是如下图所示,使用3,3v供电,将RTS\DTR引脚直接连接到单片机的NRST/BOOT0引脚上。
如下图所示,在FlyMcu软件上通过选择RTS低电平复位、DTR高电平进BootLoader进行程序编写即可。