在改进春风电源eeprom存储方式遇到问题
春风电源中eeprom存储校验比较简单,我把它改成crc校验 存储3份互相校验更正,但是遇到以下问题,请大家帮忙查看一下 我使用的eeprom是24c02测试程序/******************************************************************************/
unsigned char temp=0
for(temp=0;temp<78;temp++)
{
EepromData=250;
}
EepromWriteBlock (&EepromData,(unsigned char *)0x00,78);
存储后,读取全部正确
/******************************************************************************/
改进程序
/******************************************************************************/
s8 num; //这个是全局变量,存储用户设置的值
int shuchuA,shuchuV; //这个是输出的DA值0~4095
#define EepromPageSize 80 //页容量定义
#define EepromPage1Addr 0x00//将eeprom分成3份
#define EepromPage2Addr (EepromPage1Addr + EepromPageSize)
#define EepromPage3Addr (EepromPage2Addr + EepromPageSize)
void WriteEepromData (unsigned char M)
{
unsigned char temp=0;
EepromData = num;
EepromData = num;
EepromData = num;
EepromData = num;
EepromData = num;
EepromData = num;
EepromData = num;
EepromData = num;
EepromData = 0;//备用
// EepromData = shuchuV/256;//高8位
// EepromData = shuchuV%256;//低8位
// EepromData = shuchuA/256;//高8位
// EepromData = shuchuA%256;//低8位
EepromData = 0; //预留
EepromWriteBlock(&EepromData,(unsigned char *)EepromPage1Addr+M*14,14);
EepromWriteBlock(&EepromData,(unsigned char *)EepromPage2Addr+M*14,14);
EepromWriteBlock(&EepromData,(unsigned char *)EepromPage3Addr+M*14,14);
// CheckWriteCRC((unsigned char *)EepromPage1Addr,EepromPageSize);
// CheckWriteCRC((unsigned char *)EepromPage2Addr,EepromPageSize);
// CheckWriteCRC((unsigned char *)EepromPage3Addr,EepromPageSize);
}
/******************************************************************************/
上面的程序有注释部分 不要看
测试后发现,num到num中num,num存储后读取错误,其他值正确
请大家看看原因,调试了今天了没头绪,大家帮忙看一下
页:
[1]