MC9S12G128 内部flash与eeprom的读写配置
来源:互联网 发布:大数据需求分析文档 编辑:程序博客网 时间:2024/04/30 02:44
因为MC9S12G128 有内部flash和eeprom所以不需要用到 sci来通信。
并且MC9S12G128的flash与eeprom是共同管理的所以存取方式相同,只是地址范围不同。如下表所示
flash module的初始化
void eeprom_Init(){
while(FSTAT_CCIF==0); //等待正在处理的FLASH操作完成
FCLKDIV=0x17; //外部晶振为24M.FLASH时钟不超过1M
while(FCLKDIV_FDIVLD==0); //等待时钟设置成功
}其中FCLKDIV的设置是根据busclock来进行选择的,我用的是24M,其他对照下表
flash module的写入
其中Buffer[4]是一个缓存数据数组。
void eeprom_write(){
while(FSTAT_CCIF==0); //等待正在处理的FLASH操作完成
if(FSTAT_ACCERR) //判断并清除标志位
FSTAT_ACCERR=1;
if(FSTAT_FPVIOL) //判断并清除标志位
FSTAT_FPVIOL=1;
FCCOBIX_CCOBIX=0x00;
FCCOB=0x1100; //写入命令和高位地址
FCCOBIX_CCOBIX=0x01; //地址后16位
FCCOB=0x0400; //写入低16位地址 这个地址就是flash地址的后十六位我这里写死了可以用变量。
FCCOBIX_CCOBIX=0x02; //写入第一个数据
FCCOB=Buffer[0];
FCCOBIX_CCOBIX=0x03; //写入第二个数据
FCCOB=Buffer[1];
FCCOBIX_CCOBIX=0x04; //写入第三个数据
FCCOB=Buffer[2];
FCCOBIX_CCOBIX=0x05; //写入第四个数据
FCCOB=Buffer[3];
FSTAT_CCIF=1; //写入执行命令
while(FSTAT_CCIF==0); //等待执行完毕
}
擦除数据。
void DFlash_Erase()
{
while(FSTAT_CCIF==0);
if(FSTAT_ACCERR) //判断并清除标志位;
FSTAT_ACCERR=1;
if(FSTAT_FPVIOL) //判断并清除标志位;
FSTAT_FPVIOL=1;
FCCOBIX_CCOBIX=0x00;
FCCOB=0x1200; //写入擦除命令和高位地址
FCCOBIX_CCOBIX=0x01;
FCCOB=0x0400; //写入低16位的地址 这个地址就是flash地址的后十六位我这里写死了可以用变量。
FSTAT_CCIF=1; //启动执行命令
while(FSTAT_CCIF==0); //等待执行完成
}
数据的读出只要用指针即可。
- MC9S12G128 内部flash与eeprom的读写配置
- MC9S12G128 内部flash与eeprom的读写配置
- MC9S12G128 内部flash与eeprom的读写配置
- STC89C52RC内部EEPROM的读写
- STC89C52RC内部EEPROM的读写
- FLASH与EEPROM的
- STM32L系列单片机内部EEPROM的读写
- STM32单片机内部EEPROM的读写
- STM8S读写内部EEPROM
- FLASH与EEPROM的不同之处
- FLASH与EEPROM的区别
- STR710的内部Flash读写
- PIC内部EEPROM读写操作
- Mega48/88/128中内部EEPROM的读写
- FLASH ROM与EEPROM的区别
- FLASH ROM与EEPROM的区别
- FLASH与EEPROM的区别(转)
- EEPROM与FLASH
- Material Design 之 CoordinatorLayout + AppBarLayout 实现上滑隐藏ToolBar
- 利用斐波那契数列解决兔子数的算法(java)
- ClassLoader 详解及用途
- JS第11天
- 【C#】C#中的常量和变量
- MC9S12G128 内部flash与eeprom的读写配置
- javascript中callee与caller的用法和应用场景
- mvc 遍历所有符合条件的控制器和Action
- html表单标签
- mrtg使用的 MRTG_lib.pm
- CRT命令
- 滑动关闭页面(完善动画)
- 插入排序法
- Chart控件,chart、Series、ChartArea曲线图绘制的重要属性介绍