微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于MC9S08QG8单片机的EEPROM虚拟技术

基于MC9S08QG8单片机的EEPROM虚拟技术

时间:12-22 来源:互联网 点击:


使用C语言而不是汇编语言编写这个函数是因为C语言表达更清晰,另外目前的C编译器能够产生高效的汇编代码。函数的入口参数cmd为Flash操作命令,具体命令内容及其命令字节如表1所列;ProgAddr为待操作的Flash的地址,若是擦除操作则为Flash页内或者整个Flash内的任意地址;buff-erAddr为缓冲区首地址;buff-ersize为待写入的数据长度。

2.2 存储信息区的设计
存储信息区由5个字节构成。其中第一个字节为长度信息,记录的是空白Flash第一次被写入的数据大小。另外四个字节为写入控制信息,用来记录Flash的写入情况。每次写入成功后,将该信息区按从低到高的顺序将对应的位由1变为0。这里需要提到的一点是:Flash被擦除后,每个字节的数据都变为0xFF,对Flash编程,其实是将Flash中每一位由“1”状态变为“O”状态,或者保持“1”状态。正是利用这一点,控制信息可以记录当前Flash数据的写入情况。例如,若长度信息为16,则会用到控制信息的31位;若长度信息为63,则仅用到低8位,写入8次后,若要进行下一次写入操作,由于该页剩余的长度仅有3字节(512—5—63×8),小于63,所以需要擦除后才能进行。为了减少擦除次数,这里规定每次写入的数组长度不能超过63,同时由于控制信息位数的限制,数字长度至少为16字节。

2.3 虚拟EEPROM的实现流程
使用Flash虚拟EEPROM特性存储数据的接口子例程有2个,分别是写入例程EE_PROG和读出例程EE_READ。相对而言,读出例程的实现较为简单,只需要根据存储信息区的长度信息和位置信息通过简单的计算就可以获得。
EE_PROG函数的流程如图1所示。其中,需要调用擦除/写入函数ProgEraseFlash,以及确定下次向Flash写入的具体位置的GetNextPos函数,该函数也是虚拟EEP—ROM的重要模块。

GetNextPos函数的流程如图2所示,该函数返回下次写入地址信息。

结 语
MC9S08QG8可用手各种便携式设备和独立信息采集存储设备等产品的开发。采用虚拟EEPROM技术,便可以在需要信息存储的设备中无需再加入EEPROM。在江苏畜牧学院“畜牧养殖自动化管控平台研究”项目中,使用电池供电的信息采集模块(如温度、湿度、气压、氨气等模块)中均采用该型号MCU作为主控MCU,信息数据均采用虚拟EEPROM存储,达到了降低功耗和减少元器件的目标。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top