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

发布时间:2024-08-13  

5.3.5 User flash 区擦除操作

User flash 区支持以下擦除方式:

l 页擦除(512 字节)

l 块擦除(16KB)

l 批量擦除(128KB)

Flash 存储器在执行擦除操作时,不能同时进行读取操作,需要等待存储器完成 擦除操作后,读取操作才能正常进行,擦除完成后的 Flash 数据为全 1。

5.3.5.1 User flash 区页擦除步骤

对 User flash 区进行页擦除操作(512 字节),可遵循以下步骤:

1) 检查 Flash 状态寄存器(FLASH_SR)中的 BSY 标志,以确认当前没有正在执行的 Flash 操作;

2) 检查 FLASH_SR 寄存器,确认错误标志均已清除;

3) 解锁 Flash 控制寄存器(FLASH_CR),使 LOCK 位清 0;(详见:Flash 控 制寄存器解锁)

4) 配置 FLASH_CR寄存器中的 ER_MODE[1:0]位域为 01,进入页擦除模式;

5) 配置 FLASH_CR 寄存器中的 PNB[7:0]位域,选择待擦除区域的页号;

6) 配置 FLASH_CR 寄存器中的 ERASE 位置 1,启动 Flash 擦除,同时 BSY 标志将自动置 1;

7) 查询并等待 BSY 标志清 0,表明擦除操作已完成,此时 ERASE 位也将自 动清 0;

8) 如果要对多个页执行擦除操作,可重复执行步骤 5 到 7;

9) 配置 FLASH_CR 寄存器中的 ER_MODE[1:0]位域为 00,退出擦除模式;

10) 配置 FLASH_CR 寄存器中的 LOCK 位置 1,恢复 FLASH_CR 寄存器的写保护锁定状态。

5.3.5.2 User flash 区块擦除步骤

对 User flash 区进行块擦除操作(16KB),可遵循以下步骤:

1) 检查 Flash 状态寄存器(FLASH_SR)中的 BSY 标志,以确认当前没有正在执行的 Flash 操作;

2) 检查 FLASH_SR 寄存器,确认错误标志均已清除;

3) 解锁 Flash 控制寄存器(FLASH_CR),使 LOCK 位清 0;(详见:Flash 控制寄存器解锁);

4) 配置 FLASH_CR寄存器中的 ER_MODE[1:0]位域为 10,进入块擦除模式;

5) 配置 FLASH_CR 寄存器中的 PNB[2:0]位域,选择待擦除区域的块号;

6) 配置 FLASH_CR 寄存器中的 ERASE 位置 1,启动 Flash 擦除,同时 BSY 标志将自动置 1;7) 查询并等待 BSY 标志清 0,表明擦除操作已完成,此时 ERASE 位也将自动清 0;

8) 如果要对多个块执行擦除,可重复执行步骤 5 到 7;

9) 配置 FLASH_CR 寄存器中的 ER_MODE[1:0]位域为 00,退出擦除模式;

10) 配置 FLASH_CR 寄存器中的 LOCK 位置 1,恢复 FLASH_CR 寄存器的写保护锁定状态。

5.3.5.3 User flash 区批量擦除步骤

批量擦除用于擦除整个 User flash 区域(128KB),可遵循以下步骤:

1) 检查 Flash 状态寄存器(FLASH_SR)中的 BSY 标志,以确认当前没有正在执行的 Flash 操作;

2) 检查 FLASH_SR 寄存器,确认错误标志均已清除;

3) 解锁 Flash 控制寄存器(FLASH_CR),使 LOCK 位清 0(详见:Flash 控制寄存器解锁);

4) 配置 FLASH_CR 寄存器中的 ER_MODE[1:0]位域为 11,进入批量擦除模式;

5) 配置 FLASH_CR 寄存器中的 ERASE 位置 1,启动 Flash 擦除,同时 BSY标志将自动置 1;

6) 查询并等待 BSY 标志清 0,表明擦除操作已完成,此时 ERASE 位也将自动清 0;

7) 配置 FLASH_CR 寄存器中的 ER_MODE[1:0]位域为 00,退出擦除模式;

8) 配置 FLASH_CR 寄存器中的 LOCK 位置 1,恢复 FLASH_CR 寄存器的写保护锁定状态。

5.3.5.4 User flash 区擦除错误

在对 User flash 区执行擦除操作的过程中,可能会出现以下错误标志:

l Flash 操作序列错误标志 PESERR:

- 在 ERASE 位被置 1 的同时,如果 ER_MODE[1:0] 位域为 00,则不会

启动擦除操作,错误标志 PESERR 将置 1;

- 在 ERASE 位被置 1 的同时,如果待擦除的区域(PNB[7:0])超出了

Flash 的有效空间,则不会启动擦除操作,错误标志 PESERR 将置 1;

- 当有错误标志(PESERR、PROGERR、SIZERR、PGAERR、WRPERR)

未被清除时,配置 ERASE 位置 1,则不会启动擦除操作,错误标志PESERR 将置 1;

- ERASE、OPTSTRT、OBL_LAUNCH 中任意 2 个以上控制位同时置 1,

则不会启动对应的操作,错误标志 PESERR 将置 1。

l 写保护错误标志 WRPERR:

- 如果要擦除的区域受到安全保护机制的影响,包含有受保护的区域,

则不会启动擦除操作,FLASH_SR 寄存器中的 WRPERR 标志将置 1。

5.3.6 User flash 区编程操作

对 Flash 存储器执行编程操作,每次能写入的数据长度固定为 32bits(字),不支持其他长度的数据写入。

FLASH 存储器在执行编程操作时,不能同时进行读取操作,需要等待存储器完成编程操作后,读取操作才能正常进行。

与 Flash 擦除操作类似,编程操作也会受到安全保护机制的影响:

5.3.6.1 User flash 区编程操作步骤

对 User flash 区进行编程操作,可遵循以下步骤:

1) 检查 Flash 状态寄存器(FLASH_SR)中的 BSY 标志,以确认当前没有正在执行的 Flash 操作;

2) 检查 FLASH_SR 寄存器,确认错误标志均已清除;

3) 解锁 Flash 控制寄存器(FLASH_CR),使 LOCK 位清 0(详见:Flash 控制寄存器解锁);

4) 配置 FLASH_CR 寄存器中的 PG_MODE 为 1,进入 Flash 编程模式;

5) 向 Flash 目标地址写入 32bits 数据,写入后 BSY 标志将自动置 1;

6) 查询并等待 BSY 标志清 0,表明编程操作已完成;7) 如果要对多个地址进行编程,可重复步骤 5 和 6;

8) 配置 FLASH_CR 寄存器中的 PG_MODE 位为 0,退出 Flash 编程模式;

9) 配置 FLASH_CR 寄存器中的 LOCK 位置 1,恢复 FLASH_CR 寄存器的写保护锁定状态。

5.3.6.2 User flash 区编程错误

在对 User flash 区进行编程操作的过程中,可能会出现以下错误标志:

l 编程错误标志 PROGERR:

- 当 Flash 地址内的数据不是 0xFFFF FFFF 时,表明该地址已经执行过

编程操作,向该地址写入数据,则写入的数据会被忽略,不会启动编

程操作,错误标志 PROGERR 将置 1;

- 当 PG_MODE 位为 0 时,向 Flash 地址写入数据,则写入的数据会被

忽略,不会启动编程操作,错误标志 PROGERR 将置 1;

- 当有错误标志(PESERR、PROGERR、SIZERR、PGAERR、WRPERR)

未被清除时,向 Flash 地址写入数据,则写入的数据会被忽略,不会启动编程操作,错误标志 PROGERR 将置 1。

l 编程位宽错误标志 SIZERR:

- 如果向 Flash 地址写入字节或半字,则写入的数据会被忽略,不会启

动编程操作,错误标志 SIZERR 将置 1。

l 编程地址未对齐错误标志 PGAERR:

- 如果编程操作的目标地址没有按字对齐(地址 2 位不为 b00),则

写入的数据会被忽略,不会启动编程操作,错误标志 PGAERR 将置 1。

l 写保护错误标志 WRPERR:

- 如果要编程的区域受到安全保护机制的影响,处于受保护的状态,向

该区域中的地址写入数据,则写入的数据会被忽略,不会启动编程操

作,错误标志 WRPERR 将置 1。

5.4 Option bytes 区操作说明

5.4.1 选项字节组成

选项字节存放于 Flash 存储器的 Option bytes 区,用于保存与芯片硬件功能相关的配置项,用户可根据应用对选项字节进行配置,以实现特定的硬件功能。

为了校验选项字节的正确性,在 Option bytes 区的每个字(32bits)被拆分成两

部分,低 16bits 存放选项字节,高 16bits 存放选项字节的反码。

复位后,硬件会自动将 Option bytes 区中的内容,加载到寄存器里,这些寄存器被称为选项字节加载寄存器,选项字节中各控制位的作用,可查看以下寄存器的详细描述:

l FLASH_OPTR1:选项字节寄存器 1

l FLASH_OPTR2:选项字节寄存器 2

l FLASH_PCROP1AS:代码读出保护区 1A 起始地址寄存器

l FLASH_PCROP1AE:代码读出保护区 1A 结束地址寄存器

l FLASH_PCROP1BS:代码读出保护区 1B 起始地址寄存器

l FLASH_PCROP1BE:代码读出保护区 1B 结束地址寄存器

l FLASH_WRP1AS:写保护区 A 起始地址寄存器

l FLASH_WRP1AE:写保护区 A 结束地址寄存器

l FLASH_WRP1BS:写保护区 B 起始地址寄存器

l FLASH_WRP1BE:写保护区 B 结束地址寄存器

l FLASH_SECR:用户安全配置寄存器

5.4.2 选项字节更新

Option bytes 区与 User flash 区不同,用户不能直接对 Option bytes 区执行擦除或编程操作,而是要通过对应的选项字节加载寄存器进行更新。

对选项字节的更新遵循以下步骤:

1) 检查 Flash 状态寄存器(FLASH_SR)中的 BSY 标志位,以确认当前没有正在执行的 Flash 操作;

2) 检查 FLASH_SR 寄存器,确认错误标志均已清除;

3) 解锁 Flash 选项字节的写保护,使 Flash 控制寄存器(FLASH_CR)中的

OPTLOCK 位清 0(详见:Flash 选项字节解锁);

4) 配置 FLASH_CR 寄存器中的 PG_MODE 为 1,进入 Flash 编程模式;

5) 配置选项字节加载寄存器;

6) 将 FLASH_CR 寄存器中的 OPTSTRT 位置 1,启动选项字节的更新,同时BSY 标志将自动置 1;

7) 查询并等待 BSY 标志清 0,表明选项字节已更新完成,此时 OPTSTRT 位也将被自动清 0;

8) 配置 FLASH_CR 寄存器中的 PG_MODE 位为 0,退出 Flash 编程模式;

9) 配置 FLASH_CR 寄存器中的 OPTLOCK 位置 1,恢复选项字节的写保护锁定状态;

10) 此时 FLASH_CR 寄存器处于解锁状态,可根据需要配置 FLASH_CR 寄存器中的 LOCK 位置 1,将其恢复成写保护锁定状态。

在启动选项字节更新后,将对 Option bytes 区进行擦除,并自动生成选项字节的反码,随后会将选项字节及其反码更新到 Option bytes 区。

在完成对选项字节的更新后,直接读取 Option bytes 区,可获取更新后的选项字节值。但是更新后的选项字节此时并未生效,如果读取选项字节加载寄存器,获得的仍将是最近一次已加载生效的选项字节值。在对选项字节进行更新的过程中,可能会出现以下错误标志:

l Flash 操作序列错误标志 PESERR:

- 在 OPTSTRT 位被置 1 的同时,如果 PG_MODE 位为 0,则不会启动

选项字节更新,错误标志 PESERR 将置 1;

- 当有错误标志(PESERR、PROGERR、SIZERR、PGAERR、WRPERR)

未被清除时,配置 OPTSTRT 位置 1,则不会启动选项字节更新,错误

标志 PESERR 将置 1;

- ERASE、OPTSTRT、OBL_LAUNCH 中任意 2 个以上控制位同时置 1,

则不会启动对应的操作,错误标志 PESERR 将置 1。

5.4.3 选项字节加载

要使 Option bytes 区中选项字节生效,可通过以下方式对选项字节进行加载:

l 以下复位将触发加载:

- POR/PDR 复位

- 退出 Standby 模式复位

l 配置 FLASH_CR 寄存器中 OBL_LAUNCH 位为 1 启动加载,加载执行时BSY 标志将自动置 1,加载完成后该标志将自动清 0 并触发系统复位。

如果 ERASE、OPTSTRT、OBL_LAUNCH 中任意 2 个以上控制位同时置 1,则不会启动对应的操作,错误标志 PESERR 将置 1。

在选项字节加载过程中,将自动对选项字节及其反码进行校验,如果出现错误,将维持复位状态不再执行任何操作,直到发生 POR/PDR 复位。

当选项字节加载生效后,Option bytes 区中的选项字节将被自动复制到对应的加载寄存器。读取选项字节加载寄存器,获得的总是加载生效后的选项字节值。

5.5 Flash 安全保护机制

Flash 存储器支持以下安全保护机制:

l Flash 读出保护(RDP):通过配置不同 RDP 保护等级,对存储器的操作权限进行限制。

l Flash 代码读出保护(PCROP):禁止对受保护的区域执行读取、编程或擦

除操作,仅允许取指操作。

l Flash 写入保护(WRP):禁止对受保护的区域执行编程或擦除操作,但允

许取指和读取操作。

l Flash 用户安全区域:在复位后,用户安全区域处于未保护状态,可执行

取指、读取、编程和擦除操作。当安全区域使能后,该区域不可见,禁止

对该区域执行任何操作,直到重新复位。

5.5.1 Flash 读出保护

5.5.1.1 RDP 保护权限

Flash 读出保护(RDP),共有三种保护等级:

RDP0:

l 从 User flash/SRAM 启动

- User flash 区:允许取指、读取、编程、擦除

- System memory 区:仅允许取指

- Option bytes 区:允许读取、更新(通过选项字节加载寄存器)

- OTP 区:允许读取、编程(每个字仅可编程一次)

- 备份寄存器:允许读取、写入

l 从 Bootloader 启动

- User flash 区:允许取指、读取、编程、擦除

- System memory 区:允许取指、读取

- Option bytes 区:允许读取、更新(通过选项字节加载寄存器)

- OTP 区:禁止执行任何操作

- 备份寄存器:禁止执行任何操作

l 调试接口

- User flash 区:允许取指、读取、编程、擦除

- System memory 区:仅允许取指

- Option bytes 区:允许读取、更新(通过选项字节加载寄存器)

- OTP 区:允许读取、编程(每个字仅可编程一次)

- 备份寄存器:允许读取、写入

注意:从 Bootloader 启动时,禁用调试接口。

RDP1:

l 从 User flash 启动

- User flash 区:允许取指、读取、编程、擦除

- System memory 区:仅允许取指

- Option bytes 区:允许读取、更新(通过选项字节加载寄存器)

- OTP 区:允许读取、编程(每个字仅可编程一次)

- 备份寄存器:允许读取、写入

l 从 Bootloader 启动

- User flash 区:仅允许取指

- System memory 区:允许读取、取指

- Option bytes 区:允许读取、更新(通过选项字节加载寄存器)

- OTP 区:禁止执行任何操作

- 备份寄存器:禁止执行任何操作

l 禁止从 SRAM 启动

l 禁用调试接口

RDP2:

l 从 User flash 启动

- User flash 区:允许取指、读取、编程、擦除

- System memory 区:仅允许取指

- Option bytes 区:仅允许读取-

OTP 区:允许读取、编程(每个字仅可编程一次)

- 备份寄存器:允许读取、写入

l 禁止从 Bootloader 启动

l 禁止从 SRAM 启动

l 禁用调试接口

对于 Flash 存储器,当 Flash 控制器检测到无权限的非法操作时,FLASH_SR 寄 存器中的 ACERR 错误标志将立刻置 1,非法操作会被立刻终止,并产生总线访 问错误,触发 HardFault 中断。

对 Option bytes 区的更新,必须通过相应的选项字节加载寄存器来完成。当保护等级为 RDP2 时,不允许更新该区域,此时如果 FLASH_CR 寄存器中的

OPTSTRT 位被置 1,则 FLASH_SR 寄存器中的 ACERR 错误标志将置 1,wo 对 Option bytes 区的操作将被终止,并产生总线访问错误,触发 HardFault 中断。


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

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

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

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

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

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

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

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