很多单片机都有自举程序,像支持STC单片机使用串口下载,这种其实也是单片机内部集成了一段自举程序。
那你了解自举程序吗?下面结合STM32给大家分享一下关于自举程序的知识。
<strong>1、关于自举程序</strong>
STM32中内嵌了一段自举程序,可能很多人不知道。
那段自举程序存放在System memory(系统存储器)中,我们通过配置启动,选择启动系统存储器就可以运行这段程序。
<strong>2、STM32启动配置</strong>
STM32有三种启动模式:
<ul><li>Main Flash memory:主FLASH</li>
<li>System memory:系统存储器</li>
<li>Embedded SRAM:内置SRAM</li></ul>
三种模式是通过不同配置来实现,一般通过BOOT引脚和BOOT位来配置启动模式。
不同的芯片配置有差异,有些芯片没有BOOT1引脚,会结合BOOT位来实现。
F1启动配置:
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180219-1.jpg&…; alt=“”></center>
F0启动配置:
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180220-2.jpg&…; alt=“”></center>
复位后,在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。复位后,用户可以通过设置BOOT1 和 BOOT0 引脚来选择需要的启动模式。
<strong>3、内嵌的自举程序</strong>
STM32内嵌的自举程序存放在系统存储区,由ST在生产线上写入,用户不能修改。
我们选择System memory(系统存储器)启动模式,就会进入系统存储区执行自举程序。
内嵌的自举程序主要用于通过串行接口重新编程 Flash。
<strong><font color="#004a85">有哪些串行接口呢?</font> </strong>
UART、 I2C、 SPI、 CAN、 USB等。
F103只支持的UART:
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180221-3.jpg&…; alt=“”></center>
F4支持多种串行接口:
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180223-4.jpg&…; alt=“”></center>
不同型号MCU支持的串行接口不一样,具体请参看应用笔记 AN2606。
<strong>4、自举程序中 USART 协议</strong>
通信就会牵涉到协议,这里也说一下自举程序中 USART 协议。
<strong><font color="#004a85">1)协议序列</font> </strong>
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180224-5.jpg&…; alt=“”></center>
当配置 STM32 微控制器为自举启动,系统将进入自举程序模式。
<strong><font color="#004a85">2)USART 自举程序命令集</font> </strong>
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180225-6.jpg&…; alt=“”></center>
<strong><font color="#004a85">3)命令流程</font> </strong>
有命令就有相应命令执行流程,这里拿Get 命令流程为例:
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180226-7.jpg&…; alt=“”></center>
其他命令流程这里就不一一讲述,请参看官方文档AN3155。
<strong>5、自举程序上位机</strong>
自举程序主要是针对STM32进行编程,说白了,自举程序上位机就是FLASH编程工具。
自举程序上位机工具大家都比较熟悉,这里简单说一下。
<strong><font color="#004a85">1.STMFlashLoader</font> </strong>
这个工具是相对叫老的工具,好像现在没有维护更新了。
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180227-8.png&…; alt=“”></center>
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180228-9.png&…; alt=“”></center>
主要就是使用UART对STM32FLASH读写擦除等操作。
<strong><font color="#004a85">2.STM32CubeProgrammer</font> </strong>
这个工具在2月底更新到了V2.0.0,新增OTA功能。
<center><img src="http://mcu.eetrend.com/files/2021-04/wen_zhang_/100091838-180229-10.jpg…; alt=“”></center>
写到这里,相信大家都更加明白这个工具的用途了吧?
本文转载自:strongerHuang
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。