搜索
bottom↓
回复: 0

在改进春风电源eeprom存储方式遇到问题

[复制链接]

出0入0汤圆

发表于 2011-10-14 09:27:46 | 显示全部楼层 |阅读模式
春风电源中eeprom存储校验比较简单,我把它改成crc校验 存储3份互相校验更正,但是遇到以下问题,请大家帮忙查看一下 我使用的eeprom是24c02
测试程序/******************************************************************************/
unsigned char temp=0
for(temp=0;temp<78;temp++)
                {
                EepromData[temp]=250;
                }
                EepromWriteBlock (&EepromData[0],(unsigned char *)0x00,78);
存储后,读取全部正确
/******************************************************************************/

改进程序
/******************************************************************************/
s8 num[8];                //这个是全局变量,存储用户设置的值
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[0+M*14] = num[0];
                EepromData[1+M*14] = num[1];
                EepromData[2+M*14] = num[2];
                EepromData[3+M*14] = num[3];
                EepromData[4+M*14] = num[4];
                EepromData[5+M*14] = num[5];
                EepromData[6+M*14] = num[6];
                EepromData[7+M*14] = num[7];
                EepromData[8+M*14] = 0;//备用
        //        EepromData[9+M*14] = shuchuV/256;//高8位
        //        EepromData[10+M*14] = shuchuV%256;//低8位
        //        EepromData[11+M*14] = shuchuA/256;//高8位
        //        EepromData[12+M*14] = shuchuA%256;//低8位
                EepromData[13+M*14] = 0; //预留
                EepromWriteBlock(&EepromData[M*14],(unsigned char *)EepromPage1Addr+M*14,14);
                EepromWriteBlock(&EepromData[M*14],(unsigned char *)EepromPage2Addr+M*14,14);
                EepromWriteBlock(&EepromData[M*14],(unsigned char *)EepromPage3Addr+M*14,14);
        //        CheckWriteCRC((unsigned char *)EepromPage1Addr,EepromPageSize);
        //        CheckWriteCRC((unsigned char *)EepromPage2Addr,EepromPageSize);
        //        CheckWriteCRC((unsigned char *)EepromPage3Addr,EepromPageSize);
        }
/******************************************************************************/
上面的程序有注释部分 不要看
测试后发现,num[0]到num[7]中num[3],num[5]存储后读取错误,其他值正确
请大家看看原因,调试了今天了没头绪,大家帮忙看一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 22:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表