[请教列位]为什么对EEPROM进行页写操作,要先进行单字节读写才能成功?

_eaz 2012-11-19 05:53:26
敝菜鸟在程序模拟I2C对EEPROM进行操作时遇到了下面的问题——

现象1:首次进行页写操作时,EEPROM反应异常,写第0-3个字节时能够收到ACK,但第4个字节就一直收不到ACK;
现象2:先对EEPROM进行单字节读写操作,反过来再进行页写操作,就完全正常,写入值经验证也正确,而且之后的多次页写也正确。

还望诸位大神多多指点,敝菜鸟万分感谢~
...全文
3714 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsoyy 2012-11-22
  • 打赏
  • 举报
回复
时序。看时序。
_eaz 2012-11-22
  • 打赏
  • 举报
回复
问题已解决,时序搞错,连读和STOP时多发了ACK,EEPROM内部地址自动变化,导致其他指令没有正确反应,多谢大家不吝赐教,敝菜鸟分值比较少,见者有份,主要还是2楼和20楼前辈命中率较高,所以……
woshi_ziyu 2012-11-21
  • 打赏
  • 举报
回复
引用 5 楼 estronix 的回复:
更新现象—— 目前确认,只有EEPROM的第0页会出现此问题,其他页均表现正常~
哪个型号 手册上有没有介绍第0页和其他页不同的地方
_eaz 2012-11-21
  • 打赏
  • 举报
回复
引用 6 楼 wangfan027 的回复:
换一个牌子的EEPROM就知道了
感谢回复,话说这种事情不是我能左右的撒,几年后倒是可以考虑,呵呵~
_eaz 2012-11-21
  • 打赏
  • 举报
回复
引用 7 楼 shinerise 的回复:
需要确认一下你的EEPROM每页的size是多少,因为我用过的24CXX系列EEPROM,按页写数据时,如果地址跨过了页边界,会自动回卷到该页的首地址处,而不是自动跨到下一页的地址上(它的手册上会有详细说明)。应该还是自己控制的问题。
首先表示感谢,不过我用过的几种EEPROM也是页内覆盖的……
shinerise 2012-11-21
  • 打赏
  • 举报
回复
需要确认一下你的EEPROM每页的size是多少,因为我用过的24CXX系列EEPROM,按页写数据时,如果地址跨过了页边界,会自动回卷到该页的首地址处,而不是自动跨到下一页的地址上(它的手册上会有详细说明)。应该还是自己控制的问题。
lbing7 2012-11-20
  • 打赏
  • 举报
回复
LZ这说的像是EEPROM的状态机没完全复位一样 要不你,先求助一下你的供应商,确认是不是EEPROM的IIC状态机有BUG 如果这个没有问题 那么,看看EEPROM的上电和电源管脚有没有处理好 实在不行的话,在初始化EEPROM的时候,人为的给一个STOP信号,让它的IIC状态机完整各复位 其它的再看。。。
dsoyy 2012-11-20
  • 打赏
  • 举报
回复
没有遇到过这样的问题,你可以把查询ack,换成延时,几个 i++即可
dceacho 2012-11-20
  • 打赏
  • 举报
回复
换一个牌子的EEPROM就知道了
_eaz 2012-11-20
  • 打赏
  • 举报
回复
更新现象—— 目前确认,只有EEPROM的第0页会出现此问题,其他页均表现正常~
_eaz 2012-11-20
  • 打赏
  • 举报
回复
引用 2 楼 lbing7 的回复:
LZ这说的像是EEPROM的状态机没完全复位一样 要不你,先求助一下你的供应商,确认是不是EEPROM的IIC状态机有BUG 如果这个没有问题 那么,看看EEPROM的上电和电源管脚有没有处理好 实在不行的话,在初始化EEPROM的时候,人为的给一个STOP信号,让它的IIC状态机完整各复位 其它的再看。。。
首先表示感谢,只是改过后没有什么变化,还是收不到ACK,另外补充一点,第0-3个字节写入时,虽然看似写成功了,但是读出来的时候却与原有内容无异~
_eaz 2012-11-20
  • 打赏
  • 举报
回复
引用 1 楼 dsoyy 的回复:
没有遇到过这样的问题,你可以把查询ack,换成延时,几个 i++即可
首先表示感谢,不过刚试过了,不能成功写入,里面的内容和写之前没有变化~

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧