0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

沈阳芯硕科技 来源:jetson024 作者:jetson024 2023-03-14 09:33 次阅读

5.3.5User flash区擦除操作

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

l页擦除(512字节)

l块擦除(16KB)

l批量擦除(128KB)

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

5.3.5.1User 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.2User 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.3User 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.4User flash区擦除错误

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

lFlash操作序列错误标志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.6User flash区编程操作

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

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

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

5.3.6.1User 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.2User 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.4Option bytes区操作说明

5.4.1选项字节组成

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

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

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

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

lFLASH_OPTR1:选项字节寄存器 1

lFLASH_OPTR2:选项字节寄存器 2

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

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

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

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

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

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

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

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

lFLASH_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区,可获取更新后的选项字节值。但是更新后的选项字节此时并未生效,如果读取选项字节加载寄存器,获得的仍将是最近一次已加载生效的选项字节值。在对选项字节进行更新的过程中,可能会出现以下错误标志:

lFlash操作序列错误标志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.5Flash安全保护机制

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

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

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

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

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

许取指和读取操作。

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

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

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

5.5.1Flash读出保护

5.5.1.1RDP保护权限

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中断。

沈阳芯硕科技有限公司是华大电子专业代理商,有技术问题可咨询芯虎论坛.

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16240

    浏览量

    345533
  • FlaSh
    +关注

    关注

    10

    文章

    1573

    浏览量

    147005
  • 存储器
    +关注

    关注

    38

    文章

    7240

    浏览量

    162566
收藏 人收藏

    评论

    相关推荐

    EEPROM与Flash存储器的区别

    电子技术和计算机系统中,存储器是不可或缺的组成部分,其类型和功能繁多。EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦除
    的头像 发表于 05-23 16:35 1087次阅读

    STM32L053如何在FLASH程序存储器模式下将程序烧录成功?

    用的是STM32L053芯片,自举模式为FLASH程序存储器模式,此时如何烧录程序?
    发表于 03-25 06:09

    CW32L052 FLASH存储器

    CW32L052内部集成了64KB嵌入式FLASH供用户使用,可用来存储应用程序和用户数据。芯片支持对 FLASH 存储器的读、擦除和写操作,支持擦写保护和读保护。芯片内置
    的头像 发表于 02-28 17:43 534次阅读
    CW32L052 <b class='flag-5'>FLASH</b><b class='flag-5'>存储器</b>

    浅谈flash存储器的特点和优缺点

    Flash存储器的写操作具有特殊性,它只能将数据位从1写成0,而不能从0写成1。因此,在对存储器进行写入操作之前,必须先执行擦除操作,将预写入的数据位初始化为1。
    的头像 发表于 02-19 11:37 1560次阅读
    浅谈<b class='flag-5'>flash</b><b class='flag-5'>存储器</b>的特点和优缺点

    stm32 flash写数据怎么存储

    stm32 flash写数据怎么存储的  STM32是一款广泛应用于嵌入式系统开发的微控制器,它的Flash存储器是其中一个重要的组成部分。在本文中,我将详细介绍STM32
    的头像 发表于 01-31 15:46 1437次阅读

    使用MCU的辅助存储器来记录ADC电压读数,当程序进入cy_flash_WriteRow () 时会出现双重锁定错误并自动终止的原因?

    我们正在尝试使用 MCU 的辅助存储器来记录 ADC 电压读数,以便日后检索。 在之前在 main () 中调用了 systemInit () 之后,我写了一个 for 循环来滚动浏览数组值(之前
    发表于 01-31 08:18

    如何通过DAP协议访问内部存储器

    我想使用 DAP 协议对 TC38x 系列 MCU 的 pFlash/DFlash 进行编程。 是否有任何记录了 DAP 协议详细信息的相关文档? 如何通过 DAP 协议访问内部存储器? 提前谢谢了!
    发表于 01-23 07:51

    如何充分利用单片机(MCU)的非易失性存储器呢?

    需要在设计和开发过程中遵循一些最佳实践。本文将详细介绍如何最大限度地利用MCU的NVM。 1.选择适当的存储器类型: MCU的NVM通常有多种类型可供选择,例如闪存(Flash)、EE
    的头像 发表于 12-15 10:10 684次阅读

    简单认识闪速存储器

    闪速存储器Flash Memory)简称闪存器或闪存,是一种非易失性存储器(Non-volatile Memory, NVM)。目前常用的两种闪存器是或非闪存器 (NOR Flash
    的头像 发表于 11-23 09:36 1683次阅读
    简单认识闪速<b class='flag-5'>存储器</b>

    怎么使用AT32 MCU的SPIM作为外部存储器的扩展功能

    AT32 SPIM Application Note描述了怎么使用AT32 MCU的SPIM作为外部存储器的扩展功能。
    发表于 10-24 08:03

    AT32 MCU如何设定启动存储器为主存扩展

    AT32 MCU如何设定启动存储器为主存扩展
    的头像 发表于 10-18 17:50 363次阅读
    AT32 <b class='flag-5'>MCU</b>如何设定启动<b class='flag-5'>存储器</b>为主存扩展

    NAND Flash存储器的基础知识

    随着信息技术的飞速发展,数据存储需求日益增长。作为一种新型的非易失性存储器,NAND Flash因其高容量、低功耗、高密度等优势,在各个领域得到了广泛应用。本文将对NAND Flash
    发表于 09-27 18:26 2330次阅读

    NAND Flash和NOR Flash存储器的区别

    摘要:本文主要对两种常见的非易失性存储器——NAND Flash和NOR Flash进行了详细的比较分析。从存储容量、性能、成本等方面进行了深入探讨,以帮助读者更好地理解这两种
    发表于 09-27 17:46 832次阅读

    如何使用Flash模拟EEPROM存储参数?

    MCU的使用中,经常遇到需要存储参数或掉电保持数据等功能。其中,Flash和EEPROM是常见的非易失性存储器
    的头像 发表于 09-21 09:14 1012次阅读

    Flash存储器的工作原理和基本结构

      Flash存储器是一种非易失性存储器,即使在供电电源关闭后仍能保持片内信息。
    发表于 09-09 16:22 3943次阅读