春华的点点滴滴    电子产品设计与开发 https://passport2.21ic.com/?609753 [收藏] [复制] [RSS]

日志

使用飞思卡尔MC9S08LL8的经验三:用FLASH模拟EEPROM(原创)

已有 1322 次阅读2010-11-4 05:10 |个人分类:Freescale|系统分类:单片机| flash, eeprom, LL8, 飞思卡尔

     MC9S08LL8是双FLASH模式,2KFLASH A8K FLASH B,总共有10K FLASH可用。对于一般的产品开发足够用了。数据手册里面都有对FLASH操作的详细说明,这里面需要注意的是:由于FLASH编程是高压操作,所以这时从FLASH中取指令会不安全,而对FLASH操作的指令代码确又存储在FLASH中,因此需要在对FLASH编程或者擦除之前,将操作FLASH的这部分指令代码拷贝到RAM中运行,等执行完这部分指令后又回到FLASH中取指令。这个过程也就实现了FLASH模拟EEPROM,如图1.6所示。






                                                    图1.6  flash模拟EEPROM过程


     一开始我从网上下载了一篇作者是师英写的《在HCS08上使用Flash模拟EEPROM.pdf》,参考里面写的代码没有成功,主要是里面对FLASH操作的关键代码是用指令代码写的,看得比较晕,也不知道那边错了。不过我发现他里面的对EERPOM交替写的思路挺好。但是那个遍历的不是很适用,因为它的存储需要遍历,而我认为存储到EERPOM是不需要遍历的,读取的时候需要遍历,遍历完的地址保存起来,给需要存储时用。


   后来在飞思卡尔代理商威健的应用工程师帮助下,最终我实现了FLASH模拟EEPROM。在此表示感谢!!当然是换了一种方法。采取的措施是:


   先编译这段需要拷贝到RAM运行的代码,看他所占用FLASH的大小Cx,然后分配一个RAM空间大于等于Cx给这段代码用,最后作为一个库给LL8调用。这里面需要注意几个问题:


    RAM的分配


    ROM的分配


    FLASH操作的频率控制在150kHz~200kHz内。


没有模拟成功的最大问题是RAMROM的分配不正确。个人建议,先理解模拟EEPROM的整个过程,才能很快找出自己程序的问题所在。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)