PM0081
编程手册
STM32F40xxx
和
STM32F41xxx
Flash
编程手册
前言
本编程手册介绍了
STM32F405xx、STM32F407xx、STM32F415xx
和
STM32F417xx
微控制
器
Flash
的编程方法。为方便起见,本文档将上述产品统称为
STM32F40x
和
STM32F41x
(除非另行声明)。
STM32F40x
和
STM32F41x
嵌入式
Flash
可采用在线编程或在应用中编程两种方式。
在线编程
(ICP)
方式适用于更新
Flash
的所有内容,更新时½用
JTAG、SWD
协议或自举程
序将用户应用程序加½½到微控制器。ICP 可实现快速而高效的设计迭代,并且避免了不必要
的器件封装处理或插接。
与
ICP
方法相比,在应用中编程
(IAP)
可通过微控制器支持的任½通信接口(I/O、USB、
CAN、UART、I
2
C
和
SPI
等)将编程数据下½½到存储器。½用
IAP
方式时,可以在应用程
序运行期间对
Flash
重新编程。½是,部分应用程序必须事先通过
ICP
方式编程到
Flash。
Flash
接口根据
AHB
协议实½指令访问和数据访问。它将实½可加快
CPU
代码执行速度的
预取缓冲器,以及执行
Flash
操½(编程
/
擦除)所必需的逻辑。编程
/
擦除操½可在整个产
品电压范围内执行。读写保护和选项字节的设½也通过
FLASH
接口来操½。
2011
年
09
月
文档
ID 018520
第
1
版
1/25
www.st.com
目½
PM0081
目½
1
Flash
接口
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1
1.2
1.3
1.4
简介
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
主要特性
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
读接口
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1
1.4.2
CPU
时钟频率与
Flash
读取时间之间的关系
. . . . . . . . . . . . . . . . . . . . . . 8
自适应实时存储器加速器
(ART Accelerator™) . . . . . . . . . . . . . . . . . . . . 9
1.5
擦除和编程操½
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5.1
1.5.2
1.5.3
1.5.4
1.5.5
Flash
控制寄存器解锁
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
编程/ 擦除并行½数
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
擦除
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
编程
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
中断
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6
选项字节
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6.1
1.6.2
1.6.3
1.6.4
关于用户选项字节的说明
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
用户选项字节编程
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
读保护
(RDP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
写保护
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.7
1.8
一次性可编程字节
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Flash
接口寄存器
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
Flash
访问控制寄存器
(FLASH_ACR) . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Flash
密钥寄存器
(FLASH_KEYR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Flash
选项字节密钥寄存器
(FLASH_OPTKEYR) . . . . . . . . . . . . . . . . . 19
Flash
状态寄存器
(FLASH_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Flash
控制寄存器
(FLASH_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Flash
选项控制寄存器
(FLASH_OPTCR) . . . . . . . . . . . . . . . . . . . . . . . 22
Flash
接口寄存器映射
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2
版本历史
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2/25
文档
ID 018520
第
1
版
PM0081
表格索引
表格索引
表
1.
表
2.
表
3.
表
4.
表
5.
表
6.
表
7.
表
8.
Flash
模块构成
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CPU
时钟
(HCLK)
频率对应的等待周期数
(VOS = ‘1’) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
编程
/
擦除并行½数
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
选项字节构成
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
关于选项字节的说明
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
OTP
区域构成
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Flash
寄存器映射与复½值
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
文档版本历史
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
文档
ID 018520
第
1
版
3/25
3
图片索引
PM0081
图片索引
图
1.
图
2.
图
3.
系统架构内的
Flash
接口连接
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
32
½连续指令的执行
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
RDP
级别
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4/25
文档
ID 018520
第
1
版
PM0081
词汇表
本节简要介绍本文档中所用首字母缩略词和缩写词的定义:
●
CPU
内核集成了两个调试端口:
—
—
JTAG
调试端口
(JTAG-DP)
提供基于联合测试工½组
(JTAG)
协议的
5
引脚标准
接口。
SWD
调试端口
(SWD-DP)
提供基于串行线调试
(SWD)
协议的
2
引脚(时钟和数
据)接口。
有关
JTAG
和
SWD
协议的信息,请参见《Cortex-M4F 技术参考手册》
●
●
●
●
●
●
●
●
●
●
●
●
字:32 ½数据
/
指令。
半字:16 ½数据
/
指令。
字节:8 ½数据。
双字:64 ½数据。
IAP(在应用中编程):IAP
是指可以在用户程序运行期间对微控制器的
Flash
进行重
新编程。
ICP(在线编程):ICP
是指可以在器件安装于用户应用电路板上时½用
JTAG
协议、
SWD
协议或自举程序对微控制器的
Flash
进行编程。
I-Code:此总线用于将 CPU
内核的指令总线连接到
Flash
指令接口。通过此总线可执行
预取操½。
D-Code:此总线用于将 CPU
的
D-Code
总线(文字池数据加½½和调试访问)连接到
Flash
数据接口。
选项字节:存储于
Flash
中的产品配½½。
OBL:选项字节加½½器。
AHB:高级高性½总线。
CPU:指 Cortex-M4F
内核。
文档
ID 018520
第
1
版
5/25
24
评论