打印

关于24C64 跨页问题

[复制链接]
1915|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AsmBloke|  楼主 | 2012-9-17 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 AsmBloke 于 2012-9-17 14:40 编辑

24C64 地址0x400~0x42F 单元内容全是0x30
执行下面代码:
for(i=0;i<14;i++)
{        
testbuf
= i;
}
eeprom_addr=(uint32_t)0x41F;
printf("\r\nwrite eeprom_addr=%lx",eeprom_addr);
if( I2C_BUS_OK!=eeprom24c64WriteBuffer(eeprom_addr, testbuf, 14) )
{//写入
printf("\rwrite fail");
eeprom24c64error=1;
}


24C64 地址0x400~0x42F 内容如下:
0x0400:01
0x0401:02
0x0402:03
0x0403:04
0x0404:05
0x0405:06
0x0406:07
0x0407:08
0x0408:09
0x0409:0A
0x040A:0B
0x040B:0C
0x040C:0D
0x040D:30
0x040E:30
0x040F:30
0x0410:30
0x0411:30
0x0412:30
0x0413:30
0x0414:30
0x0415:30
0x0416:30
0x0417:30
0x0418:30
0x0419:30
0x041A:30
0x041B:30
0x041C:30
0x041D:30
0x041E:30
0x041F:00
0x0420:30
0x0421:30
0x0422:30
0x0423:30
0x0424:30
0x0425:30
0x0426:30
0x0427:30
0x0428:30
0x0429:30
0x042A:30
0x042B:30
0x042C:30
0x042D:30
0x042E:30
0x042F:30


这就表示EEPROM 的读写时不能跨页吗?

相关帖子

沙发
zhaoyu2005| | 2012-9-17 15:09 | 只看该作者
本帖最后由 zhaoyu2005 于 2012-9-17 15:11 编辑

写时不能跨页,读时无限制,可以从头读到尾。
上边所示这种现象,我称作卷页(不一定准确),也就是超过一页了,从页头开始覆盖

使用特权

评论回复
板凳
AsmBloke|  楼主 | 2012-9-17 15:22 | 只看该作者
哦,这样哦,我听那个谁说,只要一次写入数量不超过一页数量,就可以跨地址的

使用特权

评论回复
地板
zhaoyu2005| | 2012-9-18 09:41 | 只看该作者
不是的,像24这种芯片,多字节写函数要通用的话,必须判断 起始地址+加数据长度 是否超过当页尾地址,如果超过了,需要进行分页写操作。读不需要判断,但是读到最后地址,也从头开始

使用特权

评论回复
5
AsmBloke|  楼主 | 2012-9-18 10:22 | 只看该作者
好的,感谢,就这样干

使用特权

评论回复
6
apple| | 2012-9-18 13:02 | 只看该作者
读没有限制,一次读整个空间都可以, 写不能跨页,如果数据多于一页,会从页头开始。

使用特权

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

本版积分规则

13

主题

115

帖子

1

粉丝