STM32的在应用编程及BootLoader的使用非常简单,这里将给出完整的电路原理图,以及BootLoader使用步骤。
STM32的BootLoader应用电路原理图如图6-2所示。这个电路是在前面的STM32最小电路基础上,增加BootLoader启动模式选择及USART1串口通信电路来实现的。电路图中所使用的元器件如表6-1所示。
图6-2 STM32的BootLoader应用电路
表6-1 元器件列表
这里,P2和P3分别连接STM32的BOOT0引脚和BOOT1引脚,通过选择可以分别置芯片于不同的启动模式。BOOT1=0,BOOT0=1系统存储器被选为启动区,BootLoader便开始执行。USART1的TX引脚为PA9,RX引脚为PA10。我们便可以在计算机上通过串口来下载固件程序。
有了电路支持后,还需要一个通过 BootLoader 下载固件的程序。意法半导体公司提供了一个 PC 端的免费程序供用户通过 BootLoader 升级固件,用户可以访问网站 www.st.com来获得。
这里便基于这个BootLoader的Flash加载程序来演示如何通过STM32的BootLoader来升级固件。下载固件的步骤如下:
关闭硬件电路的电源。
在电路上置BOOT1=0和BOOT0=1,此时系统内存被选为启动区。
打开电源,系统读取BOOT[1:0]引脚将启动BootLoader程序。
将串口数据线连接至计算机的RS232接口。
打开意法半导体提供的BootLoader加载程序“Flash Loader Demo”,如图6-3所示。这里,参数设置如下:
● Port Name 为所使用的串口号。
● Parity必须设置为Even,即偶校验。
● Band Rate 即波特率,可以任意选择,最高为 115200。
● Timeout一般设置为5s,可以根据系统配置的高度来适当选择。
单击“Next”按钮,正确认出STM32芯片的Flash容量,如图6-4所示。
图6-3“Flash Loader Demo”软件
图6-4 ARM芯片容量
单击“Next”按钮,正确识别出 STM32 芯片的类型,如图 6-5 所示。其中,各个部分的含义如下:
● Target表示了芯片的类型。
● PID表示了目标ID。
● Version表示了BootLoader的版本号。
● Flash区域表示了各个Flash页的起始地址、结束地址、大小及读写状态等。
单击“Next”按钮,进入主要功能区。这里可以完成固件下载、读取及擦除等操作。其中,各项的含义如下:
● Erase用于擦除STM32的Flash存储器,可以选择全部擦除或者部分擦除
● Download to device 用于下载固件。
● Upload fromdevice 用于读取 STM32 芯片内部的固件程序。
● Enable/Disable Flash protection 用于启用或者禁用 Flash 的读写保护。
● Editoption bytes 用于编辑选项字节。
这里,选择“Download to device”,并选择升级的固件文件,如图6-6所示。固件文件以hex为后缀。
图6-5 硬件类型
图6-6 选择固件文件
单击“Next”按钮,便开始依次执行固件下载和校验,如图6-7所示。在该页面还显示了目标芯片、固件文件名称、固件文件大小、升级进度及升级所使用的时间等。
最后,固件下载完成且校验无误后,显示下载成功,如图6-8所示。
此时,单击“Finish”按钮可以退出固件下载程序。
这时,用户的固件程序便下载到STM32芯片内部。用户重新更改BOOT1=x(x表示任意电平)和BOOT0=0,选择用户Flash闪存为启动区。然后,重新启动电路后便可以运行新的固件程序了。
图6-7 固件下载
图6-8 选择固件文件