飞思卡尔D_Flash读写问题
时间:10-02
整理:3721RD
点击:
飞思卡尔单片机MC9S12XS128的很多D_Flash读写历程中都只能在D_Flash中写入4个数据,请问怎么才能写入更多的数据?/* 向DFLASH写入数据 *//* ADDR16为写入数据的首地址 */
/* a,b,c,d为写入的数据 */
void DFlash_Write(word ADDR16,word a,word b,word c,word d)
{
while(FSTAT_CCIF==0);
if(FSTAT_ACCERR) //判断并清除标志位;
FSTAT_ACCERR=1;
if(FSTAT_FPVIOL) //判断并清除标志位;
FSTAT_FPVIOL=1;
FCCOBIX_CCOBIX=0x00;
FCCOB=0x1110; //写入命令和高位地址
FCCOBIX_CCOBIX=0x01; //地址后16位
FCCOB=ADDR16; //写入低16位地址
FCCOBIX_CCOBIX=0x02; //写入第一个数据
FCCOB=a;
FCCOBIX_CCOBIX=0x03; //写入第二个数据
FCCOB=b;
FCCOBIX_CCOBIX=0x04; //写入第三个数据
FCCOB=c;
FCCOBIX_CCOBIX=0x05; //写入第四个数据
FCCOB=d;
FSTAT_CCIF=1; //写入执行命令
while(FSTAT_CCIF==0); //等待执行完毕
}
/* a,b,c,d为写入的数据 */
void DFlash_Write(word ADDR16,word a,word b,word c,word d)
{
while(FSTAT_CCIF==0);
if(FSTAT_ACCERR) //判断并清除标志位;
FSTAT_ACCERR=1;
if(FSTAT_FPVIOL) //判断并清除标志位;
FSTAT_FPVIOL=1;
FCCOBIX_CCOBIX=0x00;
FCCOB=0x1110; //写入命令和高位地址
FCCOBIX_CCOBIX=0x01; //地址后16位
FCCOB=ADDR16; //写入低16位地址
FCCOBIX_CCOBIX=0x02; //写入第一个数据
FCCOB=a;
FCCOBIX_CCOBIX=0x03; //写入第二个数据
FCCOB=b;
FCCOBIX_CCOBIX=0x04; //写入第三个数据
FCCOB=c;
FCCOBIX_CCOBIX=0x05; //写入第四个数据
FCCOB=d;
FSTAT_CCIF=1; //写入执行命令
while(FSTAT_CCIF==0); //等待执行完毕
}
数据缓存区,只能一次写入四个数据
那如果想要写入更多数据应该怎么办?
同问
很简单啊,再调用一次这个函数就可以多写四个了