打印

eeprom读写存在差异,求助各位大神

[复制链接]
602|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我利用的eeprom是24c16,按照指南者教程进行了更改,读写没问题,但是在做其他东西上出现以下问题,主要是读和写入的数据不一致,而且读取的数据特别长,希望得到各位大神指导。
下面是串口打印结果:
需要写入的数据:
A = 0.006376
A = 0.064232
A = -0.001700

写入首地址:
W_usAddr:35

写入的字节:
W_pWriteBuf[0]=72
W_pWriteBuf[1]=50
W_pWriteBuf[2]=171
W_pWriteBuf[3]=119
W_pWriteBuf[4]=184
W_pWriteBuf[5]=29
W_pWriteBuf[6]=122
W_pWriteBuf[7]=63
W_pWriteBuf[8]=219
W_pWriteBuf[9]=78
W_pWriteBuf[10]=91
W_pWriteBuf[11]=35
W_pWriteBuf[12]=130
W_usAddr:48
W_pWriteBuf[13]=113
W_pWriteBuf[14]=176
W_pWriteBuf[15]=63
W_pWriteBuf[16]=95
W_pWriteBuf[17]=7
W_pWriteBuf[18]=206
W_pWriteBuf[19]=25
W_pWriteBuf[20]=81
W_pWriteBuf[21]=218
W_pWriteBuf[22]=91
W_pWriteBuf[23]=191

读取首地址
R_usAddr:35

读取字节:
_pReadBuf[0]=89
_pReadBuf[1]=18
_pReadBuf[2]=191
_pReadBuf[3]=210
_pReadBuf[4]=251
_pReadBuf[5]=1
_pReadBuf[6]=1
_pReadBuf[7]=224
_pReadBuf[8]=7
_pReadBuf[9]=1
_pReadBuf[10]=1
_pReadBuf[11]=23
_pReadBuf[12]=39
_pReadBuf[13]=218
_pReadBuf[14]=91
_pReadBuf[15]=191
_pReadBuf[16]=95
_pReadBuf[17]=7
_pReadBuf[18]=206
_pReadBuf[19]=25
_pReadBuf[20]=81
_pReadBuf[21]=1
_pReadBuf[22]=1
_pReadBuf[23]=0

读取的结果:
A =-28504578599448948000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
A = -0.001700
A = 0.000000

使用特权

评论回复

相关帖子

沙发
yllqabz| | 2020-5-4 10:05 | 只看该作者
请问能指教我一下你是如何跨页读写的吗?我只能正常读写前16个地址

使用特权

评论回复
板凳
ayb_ice| | 2020-5-11 14:10 | 只看该作者
本帖最后由 ayb_ice 于 2020-5-11 14:17 编辑
yllqabz 发表于 2020-5-4 10:05
请问能指教我一下你是如何跨页读写的吗?我只能正常读写前16个地址

读不存在页的问题,页就是高地址的意思,比如页大小为16,意思就是最低的4位地址循环从00~15变化,而高地址保持不变
假如从地址0x32开始连续写,高地址保持0x30不变,低地址从0x02开始累加,到0x0f后变成0了,哪怕你连续写100个数据。。。

所以真正的任意写,其实是完成连续的多个页写功能,第一个和最后一个页写可能不是完整的页写。。。

使用特权

评论回复
地板
ayb_ice| | 2020-5-11 14:18 | 只看该作者
    //循环写
    while(1)
    {
        u16 usTmp = EEPROM_PAGE_SIZE - (usAddr % EEPROM_PAGE_SIZE);
        u16 usThis = (usNumber >= usTmp)? usTmp:usNumber;
        if (!AT24C64_WritePage(usAddr, pSrc, usThis))
        {
            return 0;
        }
        usNumber -= usThis;
        if (!usNumber)
        {
            break;
        }
        usAddr += usThis;
        pSrc   += usThis;
    }

    return 1;

使用特权

评论回复
5
elecbugkage| | 2020-5-17 10:02 | 只看该作者
仔细看规格书,看时序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

376

主题

377

帖子

0

粉丝