
本帖最后由 eefishing 于 2019-5-17 19:23 编辑 * n3 m. W: r5 y 前言6 f. A# K; {5 W: D 本编程手册介绍了 STM32F405xx、STM32F407xx、STM32F415xx 和 STM32F417xx 微控制器 Flash 的编程方法。为方便起见,本文档将上述产品统称为 STM32F40x 和 STM32F41x(除非另行声明)。 STM32F40x 和 STM32F41x 嵌入式 Flash 可采用在线编程或在应用中编程两种方式。 在线编程 (ICP) 方式适用于更新 Flash 的所有内容,更新时使用 JTAG、SWD 协议或自举程序将用户应用程序加载到微控制器。ICP 可实现快速而高效的设计迭代,并且避免了不必要的器件封装处理或插接。 与 ICP 方法相比,在应用中编程 (IAP) 可通过微控制器支持的任何通信接口(I/O、USB、CAN、UART、I2C 和 SPI 等)将编程数据下载到存储器。使用 IAP 方式时,可以在应用程序运行期间对 Flash 重新编程。但是,部分应用程序必须事先通过 ICP 方式编程到 Flash。 Flash 接口根据 AHB 协议实施指令访问和数据访问。它将实施可加快 CPU 代码执行速度的预取缓冲器,以及执行 Flash 操作(编程 / 擦除)所必需的逻辑。编程 / 擦除操作可在整个产品电压范围内执行。读写保护和选项字节的设置也通过 FLASH 接口来操作。 1 w0 _; F( V3 C 词汇表 本节简要介绍本文档中所用首字母缩略词和缩写词的定义:3 \! P5 F; X2 y1 {$ k) X" ^ ● CPU 内核集成了两个调试端口:' @" d/ Q' R1 g% \* y4 o; r — JTAG 调试端口 (JTAG-DP) 提供基于联合测试工作组 (JTAG) 协议的 5 引脚标准接口。, o* ^& d) Z% y — SWD 调试端口 (SWD-DP) 提供基于串行线调试 (SWD) 协议的 2 引脚(时钟和数据)接口。9 O: O- G# N+ B 有关 JTAG 和 SWD 协议的信息,请参见《Cortex-M4F 技术参考手册》3 P/ e- ]2 y8 e) o. ]- ]+ o ● 字:32 位数据/指令。) v, Z- ~/ q# I3 W( Z ● 半字:16 位数据/指令。' I' U+ [2 x& I- T ● 字节:8 位数据。1 |- }0 y! h/ S ● 双字:64 位数据。 ● IAP(在应用中编程):IAP 是指可以在用户程序运行期间对微控制器的 Flash 进行重新编程。7 q" g# m2 Q8 _$ X! ]) V) B ● ICP(在线编程):ICP 是指可以在器件安装于用户应用电路板上时使用 JTAG 协议、SWD 协议或自举程序对微控制器的 Flash 进行编程。 ● I-Code:此总线用于将 CPU 内核的指令总线连接到 Flash 指令接口。通过此总线可执行预取操作。 ● D-Code:此总线用于将 CPU 的 D-Code 总线(文字池数据加载和调试访问)连接到 Flash数据接口。 ● 选项字节:存储于 Flash 中的产品配置位。 ● OBL:选项字节加载器。3 Z3 ]4 }) a6 I; k4 X6 M ● AHB:高级高性能总线。5 {. K7 e/ p9 W; [7 M! m5 ` ● CPU:指 Cortex-M4F 内核。 ' P8 e/ a8 C! F D5 a g, I4 C 1 Flash 接口 1.1 简介 Flash 接口可管理 CPU 对 1 MB(64 Kb × 128 位)Flash 进行的 AHB I-Code 和 D-Code 访问。该接口可针对 Flash 执行擦除和编程操作,并实施读写保护机制。1 m. r( y. }( ?+ _, M3 g$ z" C' N5 k, _ Flash 接口通过指令预取和缓存机制加速代码执行。0 `( F& u2 O- o( L0 J! l! A 1.2 主要特性/ z# ~ x4 ~4 P' e M' g( L6 L- ~ ● Flash 读操作 ● Flash 编程/擦除操作 ● 读/写保护: c( U# y# K, D. r% N- ] ● I-Code 上的预取操作 ● I-Code 上的 64 个缓存行(128 位)3 z. i- `! A# H6 L1 x" h/ U8 \4 `: ] ● D-Code 上的 8 个缓存行(128 位)图 1 所示为系统架构内的 Flash 接口连接。& W0 _% B+ ?6 b9 S 图 1. 系统架构内的 Flash 接口连接 ![]() |
点赞 |