5、Flash存储器(Flash)
5.1简介
Flash存储器连接在AHB总线上,由Flash控制器统一管理,可对存储器执行取指、读取、编程和擦除操作,并具有安全访问机制和读写保护等功能。
沈阳芯硕科技有限公司是华大电子代理商,有技术问题可咨询我们。
5.2Flash主要特性
l高达128 KB的用户存储空间
-块大小:16 KB
-页大小:512字节
l32-bits位宽读取/写入
l支持页擦除、块擦除、批量擦除
l可配置3种读出保护等级(RDP)
l2块可配置的代码读出保护区域(PCROP)
l2块可配置的写入保护区域(WRP)
l可配置大小的用户安全存储区域
5.3Flash功能描述
5.3.1Flash存储器组成
Flash存储器按32-bits位宽执行读写访问,可存储指令和数据。
Flash存储器的组成如下:
lUser flash区:用于存储用户程序和数据,存储空间为 128KB,分成8个
块(Block),每个块包含32个页(Page),每页512字节;
lSystem memory区:用于存储 Bootloader和算法API,存储空间为14KB;
lOption bytes区:用于存储外设和存储器保护配置的选项字节;
lEngineer区:用于存储UID、TS/BGR校准值;
lOTP区:一次性可编程区域,共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将自动上电。
审核编辑黄宇
-
mcu
+关注
关注
146文章
17370浏览量
352997 -
寄存器
+关注
关注
31文章
5377浏览量
121398 -
FlaSh
+关注
关注
10文章
1644浏览量
148868 -
存储器
+关注
关注
38文章
7534浏览量
164489
发布评论请先 登录
相关推荐
闪速存储器属于RAM还是ROM,闪速存储器一般用来做什么的
SK海力士计划减产NAND Flash存储器以应对市场下滑
AN-881: 通过LIN—协议4进行Flash/EE存储器编程
![AN-881: 通过LIN—协议4进行<b class='flag-5'>Flash</b>/EE<b class='flag-5'>存储器</b>编程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EE-302:ADSP-BF53x Blackfin处理器与NAND FLASH存储器的接口
![EE-302:ADSP-BF53<b class='flag-5'>x</b> Blackfin处理<b class='flag-5'>器</b>与NAND <b class='flag-5'>FLASH</b><b class='flag-5'>存储器</b>的接口](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
MX60LF8G18AC-XKI 3V, 8G-bit NAND Flash 存储器 IC
使用SD Flash为TMS320C28x器件编程外部非易失性存储器
![使用SD <b class='flag-5'>Flash</b>为TMS320C28<b class='flag-5'>x</b>器件编程外部非易失性<b class='flag-5'>存储器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用低内存MSP430™ MCU的带备份存储器的外部RTC
![使用低内存MSP430™ <b class='flag-5'>MCU</b>的带备份<b class='flag-5'>存储器</b>的外部RTC](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
铁电存储器和Flash的区别
带备份存储器的独立RTC,带低成本MSP430 MCU应用说明
![带备份<b class='flag-5'>存储器</b>的独立RTC,带低成本MSP430 <b class='flag-5'>MCU</b>应用说明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论