华大电子MCU CIU32L061x8存储器(Flash)一

发布时间:2024-08-13  

5 、Flash 存储器Flash

5.1 简介

Flash 存储器连接在 AHB 总线上,由 Flash 控制器统一管理,可对存储器执行取指、读取、编程和擦除操作,并具有安全访问机制和读写保护等功能。

5.2 Flash 主要特性

l 高达 128 KB 的用户存储空间

- 块大小:16 KB

- 页大小:512 字节

l 32-bits 位宽读取/写入

l 支持页擦除、块擦除、批量擦除

l 可配置 3 种读出保护等级(RDP)

l 2 块可配置的代码读出保护区域(PCROP)

l 2 块可配置的写入保护区域(WRP)

l 可配置大小的用户安全存储区域

5.3 Flash 功能描述

5.3.1 Flash 存储器组成

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.2 Flash 读取访问等待周期

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.3 Flash 解锁

为防止 Flash 被意外修改,增加了保护措施,必须向特定寄存器写入密钥,才能解锁相关功能的配置权限。

5.3.3.1 Flash 控制寄存器解锁

复位后,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 位为 时,对 FLASH_CR 寄存器的写入将无效,FLASH_SR 寄存器中的 PESERR 标志将置 1Flash 当前操作将继续正常执行。

5.3.3.2 Flash 选项字节解锁

复位后,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.3 Flash 掉电控制位解锁

复位后,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.4 Flash 功耗管理

为进一步降低系统功耗,当程序仅在 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 将自动上电。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>