APPLIED 0120-92848
APPLIED0120-92848MC9S08QG8(以下简称QG8)是Freeseale公司于2006年推出的一款HCS08系列MCU。HCS08系列MCU是HC08系列的升级,具有更高的总线频率和更低的工作电压。QG8总线频率可以达到10MHz,工作电压可以低至1.8V,尤其是QG系列MCU采用了新型的Flash存储器(HCS08系列MCU的典型型号为MC9S08GB/GT系列MCU,Flash编程擦除可使用2.7V电压,QG系列MCU工作在1.8V时即可以对Flash进行操作)。同时低功耗也是QG系列MCU的一大特点。通过降低主频,在总线频率为1MHz、供电电压2V、温度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.1FIash擦除/写入的实现由于HCS08系列MCU中没有固化ROM,因此也就不具有HC08系列固化的虚拟EEPROM函数或Flash擦除/写入函数,而直接在Flash中执行同一Flash区的操作会引起不稳定的情况。所以借鉴MC68HC908GP32芯片在线编程系统功能的实现机制,将Flash的擦除和写入函数***行编译,将编译后的二进制代码文件(即S19文件)写入Flash区域。在调用该函数时,先将代码***到RAM区,然后调用并在RAM区的入口执行相应的Flash操作。为了减少代码量,使用同一函数实现了擦除和写入功能。具体代码如下:ABBProcontic07AA60R1ABBProcontic07AA61R1ABBProcontic07AA62R1ABBProcontic07AA63ABBProcontic07AA65R1ABBProcontic07AA80ABBProcontic07AB200ABBProcontic07AB60R1ABBProcontic07AB61R1ABBProcontic07AB67R1ABBProcontic07AB90-SABBProcontic07AE83ABBProcontic07AI91ABBProcontic07AS82ABBProcontic07BA60R1ABBProcontic07BE60R1ABBProcontic07BE62R1ABBProcontic07BE64R1ABBProcontic07BR60R1ABBProcontic07BR61R1ABBProcontic07BT60R1ABBProcontic07BT62R1ABBProcontic07BV60R1ABBProcontic07CS61ABBProcontic07DC91ABBProcontic07DS85ABBProcontic07EA200ABBProcontic07EA60R1ABBProcontic07EA61R1ABBProcontic07EA62R1ABBProcontic07EA65R1ABBProcontic07EA80ABBProcontic07EA90-SABBProcontic07EB200ABBProcontic07EB61R1ABBProcontic07EB62R1ABBProcontic07EB90-SABBProcontic07EI60ABBProcontic07ET83AABBProcontic07GS40R1ABBProcontic07KP60R101ABBProcontic07KP62ABBProcontic07KP64ABBProcontic07KP93ABBProcontic07KR228ABBProcontic07KR240R1ABBProcontic07KR264dR1ABBProcontic07KT228ABBProcontic07KT240DR1ABBProcontic07KT31ABBProcontic07KT60R101ABBProcontic07MK62ABBProcontic07NG60R1ABBProcontic07NG61R1ABBProcontic07NG61R2ABBProcontic07NG63R1ABBProcontic07NG63R2ABBProcontic07NG66R1ABBProcontic07NG66R2ABBProcontic07NG68R1ABBProcontic07NG81ABBProcontic07NG82ABBProcontic07PA85ABBProcontic07PG200R1ABBProcontic07PG201ABBProcontic07PG85ABBProcontic07PR62R1ABBProcontic07PR62R2ABBProcontic07PS60R1ABBProcontic07PS61R1ABBProcontic07PS62R1ABBProcontic07PS62R2ABBProcontic07PS62R3ABBProcontic07PS63R2ABBProcontic07PS63R3ABBProcontic07PS85ABBProcontic07PT40bABBProcontic07SA93ABBProcontic07SK90R1ABBProcontic07SV60R1ABBProcontic07TA60ABBProcontic07TI80ABBProcontic07TR85ABBProcontic07WP84R302ABBProcontic07XS80ABBProcontic07YS80ABBProcontic07YS81ABBProcontic07YS86ABBProcontic07ZB60ABBProcontic07ZB69R1ABBProcontic07ZB69R2ABBProcontic07ZE60R201ABBProcontic07ZE60R302ABBProcontic07ZE61R101ABBProcontic07ZE61R201ABBProcontic07ZE61R302ABBProcontic07ZE62R101ABBProcontic07ZE62R201ABBProcontic07ZE62R302ABBProcontic07ZE63R302ABBProcontic07ZE82ABBProcontic07ZE85ABBProcontic07ZE88ABBProcontic07ZG60R1ABBProcontic07ZW80ABBProcontic070070634-210ABBProcontic07300-0691-0001ABBProcontic74409ABBProcontic74413ABBProcontic74429ABBProcontic74435ABBProcontic74471ABBProcontic078566-1017ABBProcontic78691ABBProcontic07BE61R1ABBProcontic07NG41ABBProcontic07PS42ABBProcontic07PS43ABBProcontic07PT40ABBProcontic07TI40EABBProcontic07XS40EABBProcontic07YS40EABBProcontic07ZE40EABBProcontic10024/I/IABBProcontic1007064719-103ABBProcontic1060-751ABBProcontic1060-763ABBProcontic1060-798ABBProcontic1070044305-115ABBProcontic1070046088-507ABBProcontic1070047961-107ABBProcontic1070047961-108ABBProcontic07AE83ABBProcontic07AS82ABBProcontic07ET83AABBProcontic07GS40R1ABBProcontic07PT40bABBProcontic07SV60R1ABBProcontic07TI80ABBProcontic07ZE82ABBProcontic07PT40ABBProcontic35FB9007AA60R1GJV3074365R107AA61R1GJV3074366R107AA62R1GJV3074307AA63GJV3074368R107AA65R1GJV3074307AA80GJR5230010R000107AB200GJV3072413R107AB60R1GJV3074360R107AB61R1GJV3074361R107AB67R1GJV3074364R107AB90-SGJR5250800R010107BA60R1GJV3074397R107BE60R1GJV3074304R107BE62R1GJV3074306R107BR60R1GJV3074375R107BR61R1GJV3074376R107BT60R1GJV3074301R107BT61R1GJV3074302R107BT62R1GJV3074303R107BV60R1GJV3074370R107CS61GJR5240300R020207CS61E07CS61C07CS61D07DS8507DS85R1GJR5219300R0001/907507EA200GJV3072418R107EA60R1GJV3074350R107EA61R1GJV3074351R107EA62R1GJV3074352R107EA65R1GJV3074359R107EA80GJR5230207EA90-SGJR5251200R010107EB200GJV3072411R107EB61R1GJV3074341R107EB62R1GJV3074342R107EB90-SGJR5250900R010107EI60GJV3074357R107KP60R101GJV3074360R10107KP62GJR5240400R10507KP64GJR5240600R010107KR228GJV3072401R107KR228R107KR2401GJV3072402R107KR240b)
厦门渤格电气技术有限公司
业务 QQ: 1982497648