您的位置 首页 新能源

ADuCM3027/ADuCM3029 Flash EEPROM仿真

简介非易失性数据存储器是许多嵌入式系统的必备元件。诸如自举配置、校准常数和网络相关信息之类的数据,一般存储在电子可擦除可编程只读存储器(EEPROM)上。采用EEPROM存储这种数据的好处是可

  简介

  非易失性数据存储器是许多嵌入式体系的必备元件。比如自举装备、校准常数和网络相关信息之类的数据,一般存储在电子可擦除可编程只读存储器(EEPROM)上。选用EEPROM存储这种数据的优点是能够重写或更新EEPROM器材上的单个字节,而不会影响其他方位中的内容。

  ADuCM3027/ADuCM3029是集成闪存的超低功耗微控制器单元(MCU)。若在集成闪存上仿真EEPROM,则规划中可省去EEPROM,然后下降BOM本钱。一起,软件复杂性也会下降。

  布景

  闪存一般由页阵列组成。ADuCM3027中的一页为2 kB。写入数据之前有必要擦除页面内容。擦除操作适用于整个页面,而读或写操作可针对单一可寻址方位(字节或字)履行。

  对单一可寻址方位履行读或写操作有如下应战:

  ● 字节宽数据的读和写操作。

  ● 应能擦除或更新恣意方位的数据,一起其他方位的数据坚持不变,因为闪存擦除是对整页进行的。

  本运用笔记阐明运用ADuCM3027/ADuCM3029器材和内置闪存仿真EEPROM的软件,如图1所示。

  Figure 1. ADuCM3027/ADuCM3029 Internal Flash and EEPROM System Overview

  图1.ADuCM3027/ADuCM3029内置闪存和EEPROM体系概览

  图2.ADuCM3027/ADuCM3029 Flash EEPROM仿真软件结构

  作业原理

  EEPROM仿真需求闪存的一个专用部分。大都EEPROM能够在一个写指令中更新一个字节。但是,只要在两次写操作之间履行擦除序列,闪存器材便能写入多个字节并相应地更新数据。为了在闪存中仿真可读写字节的EEPROM,有必要履行读取、更改、写入序列,这与EEPROM操作类似。

  本部分介绍的程序运用两个闪存页面(可扩展到两个以上的页面),然后将其划分为多个扇区并用标签加以辨认。这种扇区标签供给关于当时正在处理的扇区的信息,以及写入该扇区的数据字节数。留意,每个扇区的最终一个方位保存用于扇区标签,其巨细与闪存数据总线的巨细相同。扇区巨细和一个闪存页面中的扇区数取决于仿真的EEPROM巨细。

  EEPROM

  EEPROM写入和读取函数涉及到运用程序代码输入的处理,如EEPROM数据和地址信息等。EEPROM运用程序编程接口(API)担任依据闪存接口的要求处理和供给数据与地址信息。

  写入EEPROM

  图3显现了EEPROM写操作流程图。EEPROM写操作的进程如下:

  1. 运用find_current_sector()函数调用找到当时扇区。此查找根据扇区标签和对应的扇区标签值;回来值为当时扇区开始地址(其为闪存中的一个物理方位)。

  2. 凭借当时扇区开始地址将EEPROM地址转换为闪存地址。因为ADuCM3027/ADuCM3029闪存具有64位宽数据总线,仿真EEPROM具有8位数据总线,所以软件运用EEPROM地址确认所需的移位次数。

  3. 在所取得的闪存地址处读取数据;假如此数据等于0xFF,则屏蔽这些位以创立最低有用位(LSB)和最高有用位(MSB) 32位数据包,并对EEPROM数据履行左移位操作以构成待写入闪存的64位宽数据集。

  4. 调用write_flash()函数,对闪存控制器履行写指令。此函数的输入参数为闪存地址及LSB和MSB数据包。

  5. 对闪存成功履行写操作之后,调用update_tag()函数以更新当时扇区的扇区标签。

  假如所取得的闪存地址中已存在数据,则数据读取函数不回来0xFF。这种情况下,通过调用move2nextsector()函数将所取得闪存地址之前或之后的数据移入下一或相邻扇区。将已转换为LSB和MSB数据包的EEPROM数据写入下一扇区上的新闪存地址。这样,每次对EEPROM的一个已写方位履行写操作时,该数据就被移动到下一扇区,其方位中包括修改后的数据。

  假如新扇区坐落下一页,则调用erase_flash(page_number)函数履行闪存页面擦除指令,在数据移动之后擦除前一页。一切地址寄存器均通过move2nextpage()函数更新。

  关于write_eeprom(uint16_t addr_eeprom, uint8_t data_eeprom)函数的详细信息,请参阅表1。

  读取EEPROM

  图4显现了EEPROM读操作流程图。EEPROM读操作的进程如下:

  1. 调用read_eerprom(addr)函数以读取地址方位处存储的EEPROM值。

  2. 在运用程序代码宣布的EEPROM读恳求中,软件首要确认当时扇区,其间包括最新数据。运用EEPROM地址和当时扇区开始地址取得闪存地址。

  3. 运用所取得的闪存地址调用read_flash()函数以履行读指令。

  4. 处理从闪存地址接收到的64位宽数据;然后屏蔽、右移此地址的各位,并将其供给给运用程序代码。

  关于read_eeprom(uint16_t addr_eeprom)函数的详细信息,请参阅表2。

  图3.EEPROM写操作

  图4.EEPROM读操作

  擦除EEPROM

  图5显现了EEPROM擦除操作流程图。EEPROM擦除操作的进程如下:

  1. 调用erase_eeprom()函数以擦除闪存中分配的整个EEPROM空间。

  图5.EEPROM擦除操作

  闪存中专门用于EEPROM仿真的一切页面均被擦除。因而,在运用程序代码中运用此操作时有必要当心。

  关于erase_eeprom()函数的详细信息,请参阅表3。

  闪存

  ADuCM3027/ADuCM3029处理器包括128 kB和256 kB嵌入式闪存,可通过闪存控制器加以拜访。嵌入式闪存具有72位宽数据总线,每次拜访供给两个32位字的数据和一个对应的8位纠错码(ECC)字节。闪存组织成页面方式,每页2 kB,还有256字节保存用于ECC。

  闪存写入

  擦除闪存时,各方位1;写入数据(编程)时,挑选性地将相关位清0。没有写操作能将任何位从0置1。因而,一般写拜访有必要前置一个擦除操作。

  锁眼写操作是一种直接写操作,其间用户代码将方针地址和数据值写入存储器映射寄存器,然后指令闪存控制器在后台履行写操作。闪存控制器仅支撑通过锁眼写操刁难闪存进行写拜访。对写拜访的这种束缚使得闪存控制器能够确保写操作作为原子式双字(64位)操作正确履行。

  运用EEPROM数据创立的LSB和MSB数据包供给给锁眼数据寄存器。写指令置位后,闪存控制器发动对给定闪存地址的64位双字写操作。

  留意:不支撑字(32位)、半字(16位)和字节(8位)写操作。

  关于write_flash(uint32_t addr, uint32_t lower_data, uint32_t upper_data)函数的详细信息,请参阅表4。

  闪存读取

  只要通过原子式初始化进程之后,才干读取闪存。读取闪存的结果是回来64位双字。

  闪存地址信息供给给闪存控制器,后者回来读取的数据。此数据由EEPROM接口进一步处理以完成EEPROM值。

  关于read_flash(uint32_t addr)函数的详细信息,请参阅表6。

  闪存擦除

  若在写入EEPROM期间有页面改变,则调用erase_flash(page)函数以对前一页履行页面擦除指令。擦除页面之前会产生数据移动,如上文所述。

  关于erase_flash(uint8_t PAGE)函数的详细信息,请参阅表5。

  约束

  在实践EEPROM中,若更新一个方位,只会计数一个擦除周期,然后对该特定地址履行写操作,而其他方位坚持不变。

  在这个仿真EEPROM中,更新一个方位会引起数据从当时扇区移动到下一扇区,这会耗费数目为EEPROM巨细的写周期。因而,每次更新一个方位时,数据便移动到下一扇区;假如该扇区坐落下一页,则会产生页面擦除操作。这种行为会削减闪存的有用运用期限。

  为了战胜这些约束,

  ● 挑选用于仿真的EEPROM巨细时应当心。小EEPROM可削减数据移动期间的写周期数,直接添加闪存的运用期限。

  ● 防止不必要的EEPROM写操作。这样能够添加闪存的有用运用期限。例如,体系仅在电源毛病序列期间才需求履行写操作。正常作业期间可运用RAM缓冲器存储数据。留意,软件可处理一些对仿真EEPROM的不必要的写操作。例如,若要写入的数据为0xFF,且该特定方位的当时数据为0xFF,则不对闪存履行写操作。

  结语

  本运用笔记旨在运用ADuCM3027/ADuCM3029比对EEPROM和闪存的差异。仿真EEPROM与实践EEPROM类似,而且消除了与硅面积、输入/输出总线资源、制作本钱等相关的问题。

  本运用笔记为用户供给了一个较大仿真EEPROM(64字节至1024字节)。仿真EEPROM的巨细与闪存运用期限是一对对立,主张用户挑选恰当的巨细以增强硬件功率。除了这种办法之外,软件也能处理一些对ADuCM3027/ADuCM3029闪存的不必要的写操作,然后有用添加运用期限。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/187805.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部