2013 年 03 月 DocID17066 第 5 版 1/37
AN3155
应用笔记
STM32™ 自举程序中
使用的 USART 协议
前言
本应用笔记将介绍 USART 协议在 STM32 微控制器自举程序中的应用,还将详细介绍支持
的每个命令。要详细了解器件自举程序的 USART 硬件资源和要求,请参见“STM32 系统存
储器自举模式”(应用笔记 AN2606)。
相关文档
可从 www.st.com 下载:
AN2606“STM32 系统存储器自举模式”
表 1. 适用的产品
类型 料号
微控制器
– STM32F050x4、STM32F050x6、STM32F051x4、STM32F051x6、
STM32F051x8
– STM32F1 主流产品
– STM32F2 高性能系列
– STM32F302xx、STM32F303xx、STM32F313xx、STM32F372xx、
STM32F373xx、STM32F383xx
– STM32F405xx、STM32F407xx、STM32F415xx、STM32F417xx、
STM32F427xx、STM32F437xx
– STM32L1 系列
www.st.com
目录 AN3155
2/37 DocID17066 第 5 版
目录
1USART 自举程序代码序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 选择 USARTx 波特率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1 最小波特率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 最大波特率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 自举程序命令集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 器件相关的自举程序参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Get 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Get Version & Read Protection Status 命令 . . . . . . . . . . . . . . . . . . . . . . . 10
3.4 Get ID 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
3.5 Read Memory 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.6 Go 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.7 Write Memory 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.8 Erase Memory 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.9 Extended Erase Memory 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.10 Write Protect 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.11 Write Unprotect 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.12 Readout Protect 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.13 Readout Unprotect 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4 自举程序协议版本演化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
DocID17066 第 5 版 3/37
AN3155 表格索引
3
表格索引
表 1. 适用的产品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
表 2. USART 自举程序命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
表 3. 自举程序协议版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
表 4. 文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
图片索引 AN3155
4/37 DocID17066 第 5 版
图片索引
图 1. 使用 USART 的 STM32 自举程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
图 2. Get 命令:主机端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
图 3. Get 命令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
图 4. Get Version & Read Protection Status 命令:主机端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
图 5. Get Version & Read Protection Status 命令:器件端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
图 6. Get ID 命令:主机端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
图 7. Get ID 命令:器件端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
图 8. Read Memory 命令:主机端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
图 9. Read Memory 命令:器件端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
图 10. Go 命令:主机端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
图 11. Go 命令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
图 12. Write Memory 命令:主机端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
图 13. Write Memory 命令:器件端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
图 14. Erase Memory 命令:主机端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
图 15. Erase Memory 命令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
图 16. Extended Erase Memory 命令:主机端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
图 17. Extended Erase Memory 命令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
图 18. Write Protect 命令:主机端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
图
19. Write Protect 命令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
图 20. Write Unprotect 命令:主机端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
图 21. Write Unprotect 命令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
图 22. Readout Protect 命令:主机端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
图 23. Readout Protect 命令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
图 24. Readout Unprotect 命令:主机端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
图 25. Readout Unprotect 命令:器件端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
DocID17066 第 5 版 5/37
AN3155 USART 自举程序代码序列
36
1 USART 自举程序代码序列
图 1. 使用 USART 的 STM32 自举程序
当配置 STM32 微控制器为自举启动,系统将进入自举程序模式(有关详细信息,请参见应
用笔记 AN2606“STM32 系统存储器自举模式”),自举程序代码将立即扫描 USARTx_RX
引脚,等待接收 0x7F 数据帧:一个起始位,0x7F 数据位,偶校验位和一个停止位。
此数据帧的持续时间由 SysTick 定时器测量。之后,该定时器的计数值用于计算关于当前系
统时钟的相应波特率因子。
随后,代码将相应初始化串行接口。通过计算出的波特率,发送确认字节 (0x79) 返回主机,
表示 STM32 已准备好接收命令。
86$57[5[
ᓩ㛮Ϟ
ᬊࠄ
[)
ㄝᕙҸ
*(7
Ҹᑣ
DL
᠔䗝86$57[
㞾ࡼ⊶⡍⥛ᑣ߫
থ䗕
$&.
ᄫ㡖
⽕ℶՓ⫼䆒
5'
Ҹᑣ
˄ৃ䗝˅
5$0
ࡴ䕑ⱘ
ᑣ
*2
Ҹᑣ
-3WRB$GGUHVV
*2Ҹ
ᬊⱘҸ
*(7Ҹ