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

引 言
    MC9S08QG8(以下简称QG8)是Freeseale公司于2006年推出的一款HCS08系列MCU。HCS08系列MCU是HC08系列的升级,具有更高的总线频率和更低的工作电压。QG8总线频率可以达到10 MHz,工作电压可以低至1.8 V,尤其是QG系列MCU采用了新型的Flash存储器(HCS08系列MCU的典型型号为MC9S08GB/GT系列MCU,Flash编程擦除可使用2.7 V电压,QG系列MCU工作在1.8 V时即可以对Flash进行操作)。同时低功耗也是QG系列MCU的一大特点。通过降低主频,在总线频率为1 MHz、供电电压2 V、温度125℃的情况下正常工作,典型的芯片电流仅有370μA。而如果进入待机模式,典型的芯片电流则低于1 μA,这些特点使得QG8非常适合使用在电池供电的设备中。
    EEPROM是Flash存储技术成熟之前常用的存储器,它与Flash均可作为程序存储器和数据存储器。但由于EEPROM本身容量和成本的限制,目前大多数MCU都采用Flash作为存储器。用户可以在Flash中存储设置参数、校准参数、保密数据等信息。由于Flash存储区的最小擦除单位是页(QG8一页为512字节),若存储数据长度小于一页,则每次写入或修改数据都必须进行一次页
擦除操作,该页中没有用到的空间就浪费了。相对而言,EEPROM就不存在这个问题,它可以基于字节进行写入和擦除。部分HC08系列MCU(如MC68HC908JL8)为了解决这个问题,在其监控ROM中提供了虚拟EEP一ROM的例程供用户使用。但是QG8不具有监控ROM,也就无法提供类似的功能,本文在QG8擦除/写入Flash的基础上,给出虚拟EEPROM的实现机制和用户接口,实现按字节“写”Flash存储区的功能,提高Flash存储器的使用效率及寿命。

1 设计思路
    使用Flash模拟EEPROM实现按字节读写,其思路是将Flash的一页依据写入数据的长度分为若干相等的部分。为了方便起见,每一部分称为一块,假设划分为N块。在写入前,此页Flash已擦除完毕,第1次写入时将数据写入第1块,当用户对数据修改后重新进行写入时,数据被写入第2块,依次类推,如果进行第N+1次写入,由于该页最多划分为N块,则先执行页擦除,然后将数据写入第1块中。读操作相对于写入操作要简单得多,因为Flash本身支持按字节读操作。
    上述操作是在底层实现的,对于上层开发人员是透明的,上层开发人员只需要调用接口函数EEE_PROG和EEE_READ即可。


2 具体实现
    虚拟EEPROM功能的实现以Flash的擦除/写入为基础。Flash页中包含2部分,一部分是虚拟EEPROM的参数和状态信息,称之为信息区,另外一部分是实际用来存储数据的存储区。信息区中包含EEPROM首次写入的数据长度和控制写入的位置信息;存储区根据数据长度可以划分为N个Flash块,写入第x个块时(x≤N),同时修改信息区的位置信息。进行擦除和写入操作时分别将Flash操作代码放置于RAM中运行。
2.1 FIash擦除/写入的实现
    由于HCS08系列MCU中没有固化ROM,因此也就不具有HC08系列固化的虚拟EEPROM函数或Flash擦除/写入函数,而直接在Flash中执行同一Flash区的操作会引起不稳定的情况。所以借鉴MC68HC908GP32芯片在线编程系统功能的实现机制,将Flash的擦除和写入函数先进行编译,将编译后的二进制代码文件(即S19文件)写入Flash区域。在调用该函数时,先将代码复制到RAM区,然后调用并在RAM区的入口执行相应的Flash操作。为了减少代码量,使用同一函数实现了擦除和写入功能。具体代码如下:


    使用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存储,达到了降低功耗和减少元器件的目标。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

串口作为单片机开发的一个常用的外设,应用范围非常广。大部分时候,串口需要接收处理的数据长度是不定的。那么怎么才能判断一帧数据是否结束呢,今天就以STM32单片机为例,介绍几种接收不定长数据的方法。

关键字: 单片机 串口 STM32

单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段。单片机由以前的1位、4位、8位、16位,发展到现在的32位甚至64位。当前国内MCU厂商已有上百家,对标进口芯片的情况非常严重,导致国内MCU产品将陷入同质化...

关键字: 单片机 MCU 市场

(微控制单元 MCU(Microcontroller Unit),又称单片机,是把中央处理器(CentralProcess Unit; CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、US...

关键字: 单片机 芯片 CPU

在疫情的影响下,出门后、用餐前使用酒精消毒已成了人们的日常,而酒精喷雾机也因此变得十分热销。为了避免交叉感染的风险,自动酒精喷雾器也就应运而生。不同于传统手动喷雾器不美观、手部接触不卫生的bug,此款自动感应酒精喷雾器使...

关键字: 芯岭技术 方案开发 解决方案 单片机

在实际的单片机控制系统中,有时候会使用数字逻辑芯片对单片机和受控元件进行隔离,以保护单片机,或者令单片机更好地对后级进行控制。

关键字: 单片机 数字逻辑芯片 受控元件

MH32F103AVET6使用高性能的32位内核,内置了多达2个高级定时器、10个通用定时器、2个基本定时器、3个12位的ADC、2个12位的DAC,还包含标准和先进的通信接口包括:3个SPI接口、2个I2S接口、2个I...

关键字: 单片机 MCU

最近由于换季,天气突然的转凉,大家也是直呼好冷。天冷了自然是要注意防寒保暖。一个能够当充电宝用的暖手宝会是你最好的陪伴。暖手宝是一种非常便捷易用的发热工具,并且体形小巧,可以随身携带并轻易握在手中,也可以放置在身上的其它...

关键字: 芯岭技术 方案开发 解决方案 单片机

XL32F003 系列微控制器采用高性能的 32 位 ARM®Cortex®- M0+ 内核,宽电压工作范围的MCU。嵌入高达64 Kbytes flash和8 Kbytes SRAM存储器,最高工作频率32 MHz。包...

关键字: 单片机 MCU

电动洗鼻器是一种全新的鼻腔清洁工具,一般是通过水压将生理盐水送进鼻腔,借助于生理盐水的杀菌作用及水流的冲击力,将鼻腔内已聚集的致病菌及污洉排出,从而使鼻腔恢复正常的生理环境,恢复鼻腔的自我排毒功能,达到保护鼻腔的目的。让...

关键字: 芯岭技术 方案开发 解决方案 单片机

大家好,我是小舒,今天我带来了一个开源项目。学习单片机的小伙伴,对J-link一定不会陌生。J-link可以使用JATA和SWD接口进行在线Debug和程序的烧录,曾经一段时间,某宝上J-Link铺天盖地,各种各样,价格...

关键字: 开源项目 J-link 单片机

单片机

21600 篇文章

关注

发布文章

编辑精选

技术子站

关闭