你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F40xxx 和 STM32F41xxx Flash 编程手册

[复制链接]
STMCU小助手 发布时间:2022-7-14 18:00
前言
本编程手册介绍了 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 Flash 接口
1.1 简介
Flash 接口可管理 CPU 对 1 MB(64 Kb × 128 位)Flash 进行的 AHB I-Code 和 D-Code 访问。该接口可针对 Flash 执行擦除和编程操作,并实施读写保护机制。
Flash 接口通过指令预取和缓存机制加速代码执行。

1.2 主要特性
Flash 读操作
Flash 编程/擦除操作
读/写保护
I-Code 上的预取操作
I-Code 上的 64 个缓存行(128 位)
D-Code 上的 8 个缓存行(128 位)
1 所示为系统架构内的 Flash 接口连接。





1.3 Flash
Flash 具有以下主要特性:
高达 1 MB 容量
128 位宽数据读取
字节、半字、字和双字数据写入
扇区擦除与批量擦除
存储器构成
Flash 结构如下:
主存储器块,含 4 个 16 KB 扇区、1 个 64 KB 扇区 和 7 个 128 KB 扇区。
系统存储器,器件在系统存储器自举模式下从该存储器自举。
此区域为意法半导体预留,其中包含自举程序,用以通过以下接口之一对 Flash 进行重新编程:USART1、USART3、CAN2、USB OTG FS 设备模式(DFU:设备固件升级)。自举程序由 ST 在器件制造期间编写,用于防止误写/误擦除操作。
— 512 OTP(一次性可编程)字节,用于存储用户数据。
OTP 区域包含 16 个附加字节,用于锁定相应的 OTP 数据块。
选项字节:读写保护、BOR 级别、软件 / 硬件看门狗以及器件在待机或停机模式下的复位。
低功耗模式(有关详细信息,请参见参考手册的“电源控制 (PWR)”部分)


WJGKD(_`P_Z0)HVZ[[R0B{6.png


1.4 读接口
1.4.1 CPU 时钟频率与 Flash 读取时间之间的关系
为了准确读取 Flash 数据,必须根据 CPU 时钟 (HCLK) 频率和器件电源电压在 Flash 存取控制寄存器 (FLASH_ACR) 中正确地编程等待周期数 (LATENCY)。 2 所示为等待周期与CPU 时钟频率之间的对应关系。


注: VOS = ‘0’时,fHCLK 最大值 = 144 MHz

_T1}UE[7$]V@OJ3RQ]SOQ6F.png

复位后,CPU 时钟频率为 16 MHz,FLASH_ACR 寄存器中的等待周期 (WS) 为 0 个。
强烈建议通过以下软件序列来调整在访问 Flash 时所需的等待周期数和 CPU 频率。

需要提高 CPU 频率时的操作步骤
1. 将新的等待周期数编程到 FLASH_ACR 寄存器中的 LATENCY 位。
2. 通过读取 FLASH_ACR 寄存器,检查在访问 Flash 时是否采用了新的等待周期数。
3. 通过改写 RCC_CFGR 寄存器中的 SW 位来修改 CPU 时钟源。
4. 如有需要,可通过改写 RCC_CFGR 中的 HPRE 位来修改 CPU 时钟预分频器。
5. 通过读取 RCC_CFGR 寄存器中相应的时钟源状态(SWS 位)和/或 AHB 预分频值(HPRE 位),检查是否采用了新的 CPU 时钟源和/或新的 CPU 时钟预分频值。

需要降低 CPU 频率时的操作步骤
1. 通过改写 RCC_CFGR 寄存器中的 SW 位来修改 CPU 时钟源。
2. 如有需要,可通过改写 RCC_CFGR 中的 HPRE 位来修改 CPU 时钟预分频器。
3. 通过读取 RCC_CFGR 寄存器中相应的时钟源状态(SWS 位)和/或 AHB 预分频值(HPRE 位),检查是否采用了新的 CPU 时钟源和/或新的 CPU 时钟预分频值。
4. 将新的等待周期数编程到 FLASH_ACR 中的 LATENCY 位。
5. 通过读取 FLASH_ACR 寄存器,检查在访问 Flash 时是否采用了新的等待周期数。

注: CPU 时钟配置或等待周期 (WS) 配置的更改不会立即生效。为了确保当前的 CPU 时钟频率即为所配置的频率,用户可检查 AHB 预分频系数和时钟源状态值。为了确保所编程的 WS数生效,可读取 FLASH_ACR 寄存器的内容来确认。



完整版请查看:附件

DM00023388_ZHV1.pdf

下载

986.69 KB, 下载次数: 562

收藏 评论0 发布时间:2022-7-14 18:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版