根据给定文件的信息,本文将详细介绍飞思卡尔(Freescale)HCS08系列单片机如何利用其内置的FLASH存储器来模拟EEPROM(电可擦可编程只读存储器)。这种方法不仅可以节省外部EEPROM的成本,还能提高系统的集成度和可靠性。接下来,我们将深入探讨实现这一功能的具体步骤和技术要点。 ### 一、简介 HCS08系列单片机是飞思卡尔半导体公司推出的一款高性能微控制器产品。该系列单片机基于8位HCS08内核,具有丰富的内置资源和强大的处理能力。其中,FLASH存储器作为程序存储的主要载体,在单片机系统中占据着极其重要的地位。本文将介绍如何利用HCS08系列单片机的FLASH存储器模拟EEPROM的功能,以便在无需外部EEPROM的情况下也能实现数据的非易失性存储。 ### 二、FLASH模拟EEPROM的关键技术 #### 1. 块保护寄存器(NVPROT) 为了保护部分程序代码不被意外擦除或改写,可以通过设置块保护寄存器(NVPROT)来实现。NVPROT寄存器用于控制对特定FLASH块的访问权限。例如,若想保护从0xFA00到0xFFFF的代码区域,则需设置NVPROT寄存器中的FPS字段。假设0xF9FF为未保护FLASH区域的最后一个字节的地址,那么NVPROT寄存器的FPS字段应设为0b1111,100。此外,要使块保护功能生效,FPDIS位必须置为0。因此,NVPROT寄存器的值应设为0xF8。 示例代码如下: ```c const volatile unsigned char NVPROT_INIT @0x0000FFBD = 0Xf8; ``` #### 2. FLASH模块时钟设置 为了确保FLASH编程和擦除操作的正确执行,需要合理设置FLASH模块的时钟频率。通常情况下,建议将FLASH模块时钟设置为150kHz至200kHz之间。此频率范围内的时钟信号可以通过对外部总线时钟进行分频得到。 #### 3. 关闭看门狗功能 在进行FLASH模拟EEPROM的过程中,为了避免因看门狗定时器触发而导致的程序异常中断,应该先关闭看门狗功能。 #### 4. FLASH页擦除与字节编程 在模拟EEPROM功能时,首先要对一页(通常是256字节)进行擦除操作,然后再调用字节编程命令对指定地址写入特定数据。这样的操作方式类似于真实的EEPROM工作原理。 ### 三、参考程序实例 下面提供了一段在MC9S08AC16单片机上运行过的参考程序示例,虽然具体的寄存器地址和其他细节可能因不同型号的单片机而异,但基本的编程思路是一致的。 ```c #include <hidef.h> /* for EnableInterrupts macro */ #include "derivative.h" /* include peripheral declarations */ /* NVPROT:FPOPEN=1, FPDIS=1, FPS2=1, FPS1=1, FPS0=1 */ const volatile unsigned char NVPROT_INIT @0x0000FFBD = 0xFF; #define Page_Erase PGM[21] = 0x40; temp = ((unsigned char (*)(unsigned int))(PGM)) #define Program_Byte PGM[21] = 0x20; temp = ((unsigned char (*)(unsigned int, unsigned char))(PGM)) volatile unsigned char PGM[59] = { 0x87, 0xC6, 0x18, 0x25 }; ``` ### 四、总结 通过上述介绍,我们可以看到,利用HCS08系列单片机的FLASH存储器来模拟EEPROM是一种经济高效的方法。它不仅能够满足大多数非易失性存储需求,还能够提高系统的整体性能。开发者可以根据自己的需求灵活调整块保护寄存器、FLASH模块时钟等参数,以达到最佳的工作效果。
- changchengzhenhei2014-04-11恩最近正在做这方面的工作,学习了
- linsenyipian2013-11-25不错的资料,可以参考
- cgx09112014-08-05参考一下,有时间试验一下
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java语言的实用型通知APP设计源码
- 基于Python、HTML、CSS的多语言apiIHRMTest设计源码
- 基于dotnet standard 2.0的SAEA.Socket高性能网络框架设计源码
- SublimeText 3 的 Golang 插件集合,提供代码完成和其他类似 IDE 的功能 .zip
- Sarasa Gothic , 更纱黑体 , 更纱黑体 , 更纱ゴshikku , 사라사 고딕.zip
- 基于Vue的刷脸支付系统及OEM定制设计源码
- tb_image_share_1733150361392.jpg.png
- Ruby 进程监视器.zip
- 基于Python、HTML、JavaScript、CSS的咖啡主题网站设计源码
- SimpleDiskAnalyzer.7z