5 、flash 存储器(flash)
5.1 简介
flash 存储器连接在 ahb 总线上,由 flash 控制器统一管理,可对存储器执行取指、读取、编程和擦除操作,并具有安全访问机制和读写保护等功能。
沈阳芯硕科技有限公司是华大电子代理商,有技术问题可咨询我们。
5.2flash 主要特性
l 高达 128 kb 的用户存储空间
- 块大小:16 kb
- 页大小:512 字节
l 32-bits 位宽读取/写入
l 支持页擦除、块擦除、批量擦除
l 可配置 3 种读出保护等级(rdp)
l 2 块可配置的代码读出保护区域(pcrop)
l 2 块可配置的写入保护区域(wrp)
l 可配置大小的用户安全存储区域
5.3flash 功能描述
5.3.1flash 存储器组成
flash 存储器按 32-bits 位宽执行读写访问,可存储指令和数据。
flash 存储器的组成如下:
l user flash 区:用于存储用户程序和数据,存储空间为 128kb,分成 8 个
块(block),每个块包含 32 个页(page),每页 512 字节;
l system memory 区:用于存储 bootloader 和算法 api,存储空间为14kb;
l option bytes 区:用于存储外设和存储器保护配置的选项字节;
l engineer 区:用于存储 uid、ts/bgr 校准值;
l otp 区:一次性可编程区域,共 512 字节。
5.3.2flash 读取访问等待周期
flash 存储器连接在 ahb 总线上,读取 flash 时使用 hclk 时钟。当 hclk 的 时钟频率超出 flash 存储器的工作频率时,就会造成数据读取错误,此时需要插入等待周期。 flash 访问控制寄存器(flash_acr)中的 latency[1:0]位域,用于配置 flash 读取访问的等待周期,hclk 时钟频率与 flash 读取访问等待周期的对应关系见 下表。
为保证 flash 读取访问不出现异常或错误,当要改变 hclk 的时钟频率时,必须按照特定步骤进行配置。
l 提高 hclk 频率的配置步骤:
1) 通过配置 flash_acr 寄存器中的 latency[1:0]位域,增大 flash
读取访问的等待周期;
2) 读取 latency[1:0]位域,检查等待周期已配置成功;
3) 提高 hclk 频率,可通过配置 rcc 时钟配置寄存器(rcc_cfg)
中的sysw[2:0]位域,切换更高频率的时钟源,或通过配置hpre[2:0]
位域,减小系统时钟的分频值;
4) 配置 sysw[2:0]位域后,必须对 rcc_cfg 寄存器中的 sysws[2:0]
位域进行检查,确认系统时钟已切换完成。
l 降低 hclk 频率的配置步骤:
1) 降低 hclk 频率,可通过配置 rcc 时钟配置寄存器(rcc_cfg)
中的sysw[2:0]位域,切换更低频率的时钟源,或通过配置hpre[2:0]
位域,增大系统时钟的分频值;
2) 配置 sysw[2:0]位域后,必须对 rcc_cfg 寄存器中的 sysws[2:0]
位域进行检查,确认系统时钟已切换完成;
3) 通过 flash_acr 寄存器中的 latency[1:0]位域,减小 flash 读取
访问的等待周期;
4) 读取 latency[1:0]位域,检查等待周期已配置成功。
5.3.3flash 解锁
为防止 flash 被意外修改,增加了保护措施,必须向特定寄存器写入密钥,才能解锁相关功能的配置权限。
5.3.3.1flash 控制寄存器解锁
复位后,flash 控制寄存器(flash_cr)将处于写保护锁定状态。要配置
flash_cr 寄存器,需首先进行解锁操作。
flash_cr 寄存器的解锁操作,必须严格按照以下步骤顺序执行:
1) 向 flash_crkey 寄存器写入密钥 1:0xe57a 1a85;
2) 向 flash_crkey 寄存器写入密钥 2:0x7c6e 8391;
3) 检查 flash_cr 寄存器中的 lock 位,当该位清 0 时,表明 flash_cr 寄存器已解锁。解锁完成后,才能对 flash_cr 寄存器进行配置。
注意:flash_cr 寄存器中与选项字节相关的控制位(obl_launch 和 optstrt), 必须在 flash 选项字节解锁后才能进行配置。 密钥必须严格按照顺序写入,如果出现以下情况,将产生总线错误同时触发 hardfault 中断,直到再次复位后,才能重新对 flash_cr 寄存器进行解锁:
l 向 flash_crkey 寄存器写入错误的密钥值;
l 解锁顺序错误,先向 flash_crkey 寄存器写入密钥 2:0x7c6e 8391;
l 解锁后继续向 flash_crkey 寄存器写入任意值(包括密钥)。
将 flash_cr 寄存器中的 lock 位重新置 1,能恢复 flash_cr 寄存器的写 保护锁定状态。通过复位,也能使 flash_cr 寄存器恢复成写保护锁定状态。
注意:当 flash_sr 寄存器中的 bsy 位为 1 时,对 flash_cr 寄存器的写入将无效,flash_sr 寄存器中的 peserr 标志将置 1,flash 当前操作将继续正常执行。
5.3.3.2flash 选项字节解锁
复位后,flash 选项字节处于写保护锁定状态,所有的选项字节加载寄存器、
flash_cr 寄存器中的 obl_launch 位和 optstrt 位,都会被写保护。要对选项字节进行更新,就先要进行解锁操作。
flash 选项字节的解锁操作,必须严格按照以下步骤顺序执行:
1) 先解锁 flash 控制寄存器 flash_cr(详见: flash 控制寄存器解锁);
2) 向 flash_optkey 寄存器写入密钥 1:0x6a89 4d7b;
3) 向 flash_optkey 寄存器写入密钥 2:0x7c31 1f5a;
4) 检查 flash_cr 寄存器中的 optlock 位,当该位清 0 时,表明 flash选项字节已解锁。解锁完成后,才能对选项字节加载寄存器及其控制位(obl_launch 和 optstrt)进行配置。
密钥必须严格按照顺序写入,如果出现以下情况,将产生总线错误同时触发
hardfault 中断,直到再次复位后,才能重新对 flash 选项字节进行解锁:
l 向 flash_optkey 寄存器写入错误的密钥值;
l 解锁顺序错误,先向 flash_optkey 寄存器写入密钥 2:0x7c31 1f5a;
l 解锁后继续向 flash_optkey 寄存器写入任意值(包括密钥);
l 在对 flash_cr 寄存器解锁前,向 flash_optkey 寄存器写入任意值
(包括密钥)。 将 flash_cr 寄存器中的 optlock 位重新置 1,能恢复 flash 选项字节的写保护锁定状态。通过复位,也能使 flash 选项字节恢复成写保护锁定状态。当 flash_cr 寄存器恢复成写保护锁定状态时(lock 位置 1),flash 选项字节也会被恢复成写保护锁定状态,optlock 位将自动置 1。
5.3.3.3flash 掉电控制位解锁
复位后,flash 访问控制寄存器(flash_acr)中的 pden 位将处于写保护锁定状态,该位用于控制 flash 的掉电。要配置 pden 位,就要先进行解锁操作。pden 位的解锁操作,必须严格按照以下步骤顺序执行:
1) 先解锁 flash 控制寄存器 flash_cr(详见:flash 控制寄存器解锁);
2) 向 flash_pdkey 寄存器写入密钥 1:0x57d9 3ab6;
3) 向 flash_pdkey 寄存器写入密钥 2:0x9a2d 827c;
4) 检查 flash_cr 寄存器中的 pdlock 位,当该位清 0 时,表明 pden 位已解锁。解锁完成后,可对 pden 位进行配置。密钥必须严格按照顺序写入,如果出现以下情况,将产生总线错误同时触发 hardfault 中断,直到再次复位后,才能重新对 pden 位进行解锁操作:
l 向 flash_pdkey 寄存器写入错误的密钥值;
l 解锁顺序错误,先向 flash_pdkey 寄存器写入密钥 2:0x9a2d 827c;
l 解锁后继续向 flash_pdkey 寄存器写入任意值(包括密钥);
l 在对 flash_cr 寄存器解锁前,向 flash_pdkey 寄存器写入任意值(包括密钥)。 将 flash_cr 寄存器中的 pdlock 位重新置 1,能恢复 pden 位的写保护锁定状态。另外通过复位,也能使 pden 位恢复成写保护锁定状态。当 flash_cr 寄存器恢复成写保护锁定状态时(lock 位置 1),pden 位也会被恢复成写保护锁定状态,pdlock 位将自动置 1。
5.3.4flash 功耗管理
为进一步降低系统功耗,当程序仅在 sram 中运行时,通过将 flash 访问控制 寄存器(flash_acr)中的 pden 位置 1,能使 flash 进入 power down 状态。在配置 pden 位前,要先进行解锁操作,解锁步骤详见:flash 掉电控制位解锁。flash处于power down状态时,可通过配置pden位清0,使flash从power down 状态恢复成上电状态。
注意: flash 恢复成上电状态后,需等待 10μs 才允许对 flash 进行操作。
当进入 stop 或 standby 模式时,flash 将自动进入 power down 状态。如果在进入低功耗模式前,flash 处于上电状态,则在唤醒后 flash 将自动上电。
英飞凌与Picovoice携手合作,将人工智能引入新一代物联网设备
消火栓系统压力控制器的选用
西门子中世华业产品6SL3120-2TE13-0AD0:解读其在智能能源管理中的作用
国内oled龙头企业有哪些?oled显示屏概念股一览
采用DIALOG蓝牙智能芯片,小米手环如虎添翼
华大电子MCU CIU32L061x8存储器(Flash)一
FTTH,FTTH系统结构组成详细介绍
车载式大气走航环境监测站应用解决方案
意法半导体最新推出MasterGaN器件
从摘机电话线获取150mW隔离电源
基于RTD传感器和IC温度传感器的温度测量方法
中国未来5-15年在能源电力领域的走向以及发展!
vb语言程序简单设计实例(5款vb语言设计程序分享)
训练大语言模型带来的硬件挑战
美国银行的大部分工作岗位将会被机器人取代
如何预防NVMe存储的四大问题
码垛机器人在农业生产方面的应用
Google编程风格指南(三)
CPU的核心数、线程数的关系和区别
打破刻板印象,南卡骨传导耳机再铸行业新高度