2016 年 6 月 DocID13801 Rev 1 [English Rev 24] 1/221
1
AN2606
应用笔记
STM32 微控制器系统存储器自举模式
前言
自举程序存储在 STM32 器件的内部自举 ROM 存储器 (系统存储器)中。在芯片生产期间
由 ST 编程。其主要任务是通过一种可用的串行外设(USART、CAN、USB、I
2
C 等)将应
用程序下载到内部 Flash 中。每种串行接口都定义了相应的通信协议,其中包含兼容的命令
集和序列。本文档适用于
表
1 中所列产品。这些产品在整个文档中称为 STM32。
自举程序的主要功能如下:
• 使用嵌入式串行接口按照预定义的通信协议下载代码 .
• 可传送并更新 Flash 代码、数据和向量表部分。
本应用笔记介绍了自举程序的一般概念。说明了使用 STM32 器件的自举程序时支持的外设
以及需要考虑的硬件要求。不过,支持的每种串行外设的低层级通信协议规范在单独的文档
中进行了介绍 (参见
第
1
节:
相关文档
)。
表 1. 适用产品
类型 料号或产品系列
微控制器
STM32L0 系列:STM32L031xx、 STM32L041xx、 STM32L051xx、
STM32L052xx、 STM32L053xx、 STM32L062xx、
STM32L063xx、 STM32L07xxx、 STM32L08xxx
STM32L1 系列。
STM32L4 系列:STM32L476xx、 STM32L486xx
STM32F0 系列:STM32F03xxx、 STM32F04xxx、 STM32F05xxx、
STM32F07xxx、 STM32F098xx
STM32F1 系列。
STM32F2 系列。
STM32F3 系列:STM32F301xx、 STM32F302xx、 STM32F303xx、
STM32F318xx、 STM32F328xx、 STM32F334xx、
STM32F358xx、 STM32F373xx、 STM32F378xx、
STM32F398xx
STM32F4 系列:STM32F401xx、 STM32F405xx、 STM32F407xx、
STM32F410xx、 STM32F411xx、 STM32F412xx、
STM32F415xx、 STM32F417xx、 STM32F427xx、
STM32F429xx、 STM32F437xx、 STM32F439xx、
STM32F446xx、 STM32F469xx、 STM32F479xx
STM32F7 系列:STM32F74xxx、 STM32F75xxx
www.st.com
目录 AN2606
2/221 DocID13801 Rev 1 [English Rev 24]
目录
1 相关文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 词汇表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 通用自举程序描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1 自举程序激活 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 自举程序标识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 硬件连接要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4 自举程序存储器管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4 STM32F03xx4/6 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5 STM32F030xC 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6 STM32F05xxx 和 STM32F030x8 器件自举程序 . . . . . . . . . . . . . . . . . . . . 33
6.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7 STM32F04xxx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8 STM32F070x6 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
DocID13801 Rev 1 [English Rev 24] 3/221
AN2606 目录
9
8.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9 STM32F070xB 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
9.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
9.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
10 STM32F071xx/72xx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
10.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
10.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
10.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
11 STM32F09xxx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
11.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
12 STM32F10xxx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
12.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
12.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
12.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
13 STM32F105xx/107xx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
13.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
13.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
13.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
13.3.1 如何识别 STM32F105xx/107xx 自举程序版本 . . . . . . . . . . . . . . . . . . . . 56
13.3.2 日期代码小于 937 的 STM32F105xx/STM32F107xx 器件上
自举程序不可用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
13.3.3 USART 自举程序 Get-Version 命令返回 0x20
而不是 0x22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
13.3.4 插入 USB 线缆时, PA9 功耗过大
(在自举程序 V2.0 中) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
14 STM32F10xxx 超大容量器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
14.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
14.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
目录 AN2606
4/221 DocID13801 Rev 1 [English Rev 24]
14.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
15 STM32F2xxxx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
15.1 自举程序 V2.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
15.1.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
15.1.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
15.1.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
15.2 自举程序 V3.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
15.2.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
15.2.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
15.2.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
16 STM32F301xx/302x4(6/8) 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . 68
16.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
16.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
16.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
17 STM32F302xB(C)/303xB(C) 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . 71
17.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
17.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
17.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
18 STM32F302xD(E)/303xD(E) 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . 74
18.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
18.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
18.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
19 STM32F303x4(6/8)/334xx/328xx 器件自举程序 . . . . . . . . . . . . . . . . . . . . 78
19.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
19.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
19.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
20 STM32F318xx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
20.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
20.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
20.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
DocID13801 Rev 1 [English Rev 24] 5/221
AN2606 目录
9
21 STM32F358xx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
21.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
21.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
21.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
22 STM32F373xx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
22.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
22.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
22.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
23 STM32F378xx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
23.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
23.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
23.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
24 STM32F398xx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
24.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
24.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
24.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
25 STM32F40xxx/41xxx 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
25.1 自举程序 V3.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
25.1.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
25.1.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
25.1.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
25.2 自举程序 V9.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
25.2.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
25.2.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
25.2.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
26 STM32F401xB(C) 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
26.1 自举程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
26.2 自举程序选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
26.3 自举程序版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
27 STM32F401xD(E) 器件自举程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
评论0