深入剖析RX64M/RX71M Group Flash Memory:硬件接口与应用指南

电子说

1.4w人已加入

描述

深入剖析RX64M/RX71M Group Flash Memory:硬件接口与应用指南

在电子工程领域,微控制器(MCU)的闪存(Flash Memory)是至关重要的组成部分,它不仅存储着程序代码,还能保存关键数据。今天,我们将深入探讨Renesas的RX64M Group和RX71M Group闪存的硬件接口,为电子工程师们提供全面的技术指导。

文件下载:R5F571MGCDLK#20.pdf

一、闪存特性与模块配置

1.1 闪存特性

RX64M和RX71M Group的闪存具有多种特性,包括编程/擦除功能、安全功能、保护功能以及中断支持。其专用的闪存序列器(Flash Sequencer)通过内部外设总线6执行编程和擦除操作,还支持编程或擦除的暂停、恢复以及后台操作(BGO)。同时,闪存具备硬件安全功能,可防止数据被非法篡改或读取,以及硬件保护功能,避免错误编程。此外,它还支持序列器处理完成中断和错误中断。

1.2 模块配置

闪存相关模块主要由闪存序列器构成,该序列器由闪存控制单元(FCU)和闪存应用命令接口(FACI)组成。FCU负责闪存的基本控制,FCURAM用于存储控制FCU执行的固件,FACI通过内部外设总线6接收FACI命令并相应地控制FCU操作。在复位时,FACI会将数据从闪存传输到选项设置内存。

二、地址空间与寄存器

2.1 地址空间

使用闪存硬件接口需要访问多个区域,包括硬件寄存器区域、FACI命令发布区域、FCU固件存储区域和FCURAM区域。具体地址和容量信息如下表所示: 区域 地址 容量
硬件寄存器区域 见第4节寄存器部分 见第4节寄存器部分
FACI命令发布区域 007E 0000h 4字节
FCU固件存储区域 FEFF F000h - FEFF FFFFh 4 K字节
FCURAM区域 007F 8000h - 007F 8FFFh 4 K字节
配置设置区域 0012 0040h - 0012 007Fh 64字节

2.2 寄存器

文档中详细介绍了多个寄存器,这些寄存器在使用闪存硬件接口时起着关键作用。以下是部分重要寄存器的介绍:

  • Flash P/E Protect Register (FWEPROR):用于控制代码闪存、数据闪存或选项设置内存的编程和擦除,以及锁定位的编程和擦除,还有空白检查。通过设置FLWE[1:0]位来实现相应的禁止或允许操作。
  • Flash Access Status Register (FASTAT):指示代码闪存或数据闪存访问是否违规,以及闪存序列器是否处于命令锁定状态。包含ECRCT、DFAE、CMDLK和CFAE等标志位。
  • Flash Access Error Interrupt Enable Register (FAEINT):用于启用或禁用闪存访问错误(FIFERR)中断请求,可分别针对不同的错误标志进行设置。
  • Flash Ready Interrupt Enable Register (FRDYIE):启用或禁用闪存准备好(FRDY)中断请求,当闪存序列器完成编程、擦除或空白检查命令处理时,FASTAT.FRDY标志从0变为1,可触发中断。

三、闪存序列器操作模式

闪存序列器有三种操作模式,通过改变FENTRYR寄存器的值来实现模式转换:

  • 读取模式(Read Mode):当FENTRYR寄存器值为0000h时,闪存序列器处于读取模式,此时不接收FACI命令,代码闪存和数据闪存均可读取。
  • 代码闪存编程/擦除模式(Code Flash Memory P/E Mode):当FENTRYR寄存器值为0001h时,闪存序列器进入代码闪存编程/擦除模式,可通过FACI命令对代码闪存进行编程或擦除。在该模式下,若禁用后台操作(BGO),代码闪存不可读取;若启用BGO,代码闪存可读。
  • 数据闪存编程/擦除模式(Data Flash Memory P/E Mode):当FENTRYR寄存器值为0080h时,闪存序列器进入数据闪存编程/擦除模式,可通过FACI命令对数据闪存进行编程或擦除。在该模式下,数据闪存不可读取,但代码闪存可读。

四、FACI命令

4.1 FACI命令列表

FACI命令用于控制闪存的各种操作,包括编程、块擦除、暂停/恢复编程或擦除、清除状态、强制停止、空白检查、配置设置、锁定位读取等。具体命令及其描述如下表所示: FACI命令 描述
编程(Programming) 用于对用户区域和数据区域进行编程,用户区域编程单位为256字节,数据区域编程单位为4字节。
块擦除(Block erase) 用于擦除用户区域、锁定位或数据区域,擦除单位为一个块。
编程/擦除暂停(P/E suspend) 暂停编程或擦除处理。
编程/擦除恢复(P/E resume) 恢复暂停的编程或擦除处理。
状态清除(Status clear) 初始化FSTATR寄存器中的ILGLERR、ERSERR和PRGERR标志,并将闪存序列器从命令锁定状态释放。
强制停止(Forced stop) 强制停止FACI命令处理,并初始化FSTATR寄存器。
空白检查(Blank check) 用于检查数据区域是否为空,空白检查单位为4字节至64 K字节(以4字节为单位指定)。
配置设置(Configuration setting) 用于设置ID、安全功能、选项设置内存和可信内存(TM)功能,设置单位为16字节。
锁定位读取(Lock-bit read) 读取用户区域的锁定位,并将结果存储在FLKSTAT寄存器中,编程单位为1位(一个块的锁定位)。

4.2 FACI命令使用

不同模式下可使用的FACI命令不同,使用前需检查闪存序列器的状态。在代码闪存编程/擦除模式和数据闪存编程/擦除模式下,可使用的命令有所差异。例如,在代码闪存编程/擦除模式下,可使用编程、块擦除、锁定位编程和读取等命令;在数据闪存编程/擦除模式下,可使用编程、块擦除、空白检查和配置设置等命令。

五、安全功能

5.1 软件保护

软件保护通过控制寄存器和锁定位设置来禁用代码闪存的编程和擦除。具体包括:

  • FWEPROR保护:除非FWEPROR.FLWE[1:0]位设置为01b,否则任何模式下都无法进行编程。
  • FENTRYR保护:当FENTRYR寄存器设置为0000h时,闪存序列器进入读取模式,此时不能接受FACI命令,若尝试在读取模式下发出FACI命令,闪存序列器将进入命令锁定状态。
  • 锁定位保护:用户区域的每个块都包含一个锁定位,当FPROTR.FPROTCN位为0时,锁定位设置为0的块禁止编程/擦除;若要对这些块进行编程或擦除,需将FPROTR.FPROTCN位设置为1。

5.2 错误保护

错误保护用于检测非法FACI命令、非法访问和闪存序列器故障。一旦检测到这些错误,闪存序列器将进入命令锁定状态,禁止接受FACI命令。要从命令锁定状态释放,需在FASTAT寄存器中的CFAE和DFAE标志为0时发出状态清除或强制停止命令。

5.3 引导程序保护

用户引导区域通常在正常操作模式和用户引导模式下受到写保护,只有在编程模式(引导模式,适用于SCI或USB接口)下才能被覆盖,可用于安全存储引导程序等程序。

六、使用注意事项

在使用RX64M和RX71M Group闪存时,需要注意以下几点:

  • 避免读取中断区域:编程或擦除中断区域的数据是未定义的,应避免从中获取指令或读取数据,以免导致错误操作。
  • 禁止重复写入:闪存区域不能进行二次写入,若要覆盖已写入的数据,需先擦除该区域。
  • 编程和擦除期间的复位:在编程和擦除期间,若因RES#引脚信号导致复位,需在复位信号断言后,等待至少tRESWF(具体时间见硬件手册),确保工作电压在电气特性规定范围内后,再释放设备的复位状态。
  • 中断和异常向量分配:编程或擦除期间产生的中断或其他异常可能导致从代码闪存中获取向量。若不满足使用后台操作的条件,需将向量获取地址设置为非代码闪存地址。
  • 异常终止处理:若编程/擦除因RES#引脚产生的复位而异常终止,闪存的编程/擦除状态无法验证或检查。对于异常终止的区域,需再次擦除以确保其完全擦除后再使用。
  • 编程和擦除期间的禁止操作:编程和擦除期间,禁止将电源的工作电压超出允许范围,以及改变PCLK/FCLK的频率。

七、电气特性

文档还提供了闪存的电气特性,包括FCURAM数据传输时间、FACI命令设置时间、FACI命令处理时间和强制停止命令时间等。这些特性在特定的电压和时钟频率条件下给出,为工程师在设计电路时提供了重要参考。

总之,Renesas的RX64M和RX71M Group闪存具有丰富的功能和特性,但在使用过程中需要严格遵循相关的操作规范和注意事项。希望本文能为电子工程师们在使用该闪存时提供有益的帮助。你在实际应用中是否遇到过相关问题呢?欢迎在评论区分享你的经验和见解。

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分