MC68HC908QY4单片机FLASH模拟EEPROM的方法原理与程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MC68HC908QY4单片机FLASH模拟EEPROM的方法原理

与程序设计

【进入博客】【进入论坛】更新时间:2009年07月17日浏览次数:102 作者:来

源:

MC68HC908QY4单片机FLASH模拟EEPROM的方法(网摘)

刘玉宏发表于 2005-9-26 16:29:00

日志标题:MC68HC908QY4单片机FLASH模拟EEPROM的方法(网摘)

发表时间:2005-8-17 17:09:17

MC68HC908QY4单片机FLASH模拟EEPROM的方法

MC68HC908QY4单片机FLASH模拟EEPROM的方法

田云锋

MC68HC908QY4是飞思卡尔半导体针对车身控制低端市场推出的低成本高性能的一

款单片机。它有4K FLASH,128字节RAM,2通道16位具有输入捕捉,输出比较以及PWM功能的定时器,内部晶振,4通道8位AD转换,具有低电压禁止功能,看

门狗,大电流I/O端口,键盘中断,13路双向I/O端口以及1路输入端口。它有

16引脚DIP,SOIC,TSSOP三种封装形式。

MC68HC908QY4主要应用于车身控制,比如对天窗,雨刮,电动车窗,后视镜的控

制。由于越来越多的汽车厂商针对车身控制大量采用LIN总线,所以MC68HC908QY4常常用来做LIN网络中的一个从节点。用户可以用定时器来模拟串口实现LIN通讯功能。飞思卡尔也提供了针对QY系列的LIN驱动程序。用户可到飞思卡尔网站上

下载LIN驱动程序。

在实际的应用中,用户经常会遇到在程序运行过程中保存一些数据,比如天窗的行程,后视镜的位置等。这些数据在工作中经常会变化,所以需要及时地进行存储。

存储这些数据常用的办法是用EEPROM。MC68HC908QY4虽然本身不带EEPROM,但是却可以用FLASH来模拟EEPROM,这样不仅简化了设计,而且降低了成本。

MC68HC908QY4的FLASH写入10个字节,仅需1ms,是EEPROM的10倍。它的擦除

时间为4ms。它的擦写次数为1万次。

MC68HC908QY4的FLASH是以页为单位,每页64字节。它允许写入单个字节,但是擦除时,必须整页擦除。在一页内,可以依次将数据写入FLASH,当写满一页后,再全部擦除整页。比如每次写入4字节数据块,一页可以写16个数据块,写满后,再全部擦除。这样在某个页内对数据块的擦写次数可以提高16倍,即16万次。数据块的大小最好是2的n次方,并且小于32字节。这样可以一页64字节就可以全部利用。如果大于32字节,每写一次,就要擦除整页。

一般的要想对FLASH在应用编程,必须将FLASH的擦写程序拷贝到RAM中执行,但是由于MC68HC908QY4的RAM只有128字节,而且FLASH空间也有限,所以飞思卡尔把对FLASH擦写的程序在出厂前固化到了监控ROM区中。用户如需对FLASH进行编程,只需调用这几个函数即可。

----------------------------------------------------------------------------------------------------------

ERARNGE 0x2806 //擦除函数入口地址

PGRRNGE 0x2809 //编程函数入口地址

表1 固化在ROM内的函数的入口地址

------------------------------------------------------------------------------------------------------------

调用编程函数时,这些函数需要访问几个固定RAM区,因此需要先对这几个RAM区赋值。如图2所示。注意:用户的应用程序中的变量不要放在这个区域内。在调用PGRRNGE时,需要编程的FLASH的起始地址需要放在变址寄存器H:X中,所以不需要在RAM区来存储。

------------------------------------------------------------------------------------------------------------

入口参数 RAM地址字节数用途

CTRLBYT $88 1 控制位

CPUSPD $89 1 总线速度(单位:0.25MHz)

LSTADDR $8A-8B 2 FLASH中数据块的末尾地址

BFRSTRT $8C => 数据块的大小数据缓冲区即要编程的数据

表2 固化在ROM内的函数用到的RAM区的地址

------------------------------------------------------------------------------------------------------------

另外需要注意的是CTRLBYT用来告诉擦除函数时页擦除,还是整体擦除。这里因为用户程序需要保留,所以应该选择页擦除。CPUSPD要告诉这两个函数总线的速度,以保证这些函数在执行时延时准确。在调用这两个函数时,要禁止所有的中断,在调用结束后,再打开中断。下面代码是使用示例,编程环境为codewarriorHC08 V3.1。

------------------------------------------------------------------------------------------------------------

#i nclude /* for EnableInterrupts macro */

#i nclude /* include peripheral declarations */

#define FBUS 3200000 //总线速度

相关文档
最新文档