当前位置: 代码迷 >> 单片机 >> I2C 的EEPROM读不同地址却次次读出相同值
  详细解决方案

I2C 的EEPROM读不同地址却次次读出相同值

热度:329   发布时间:2016-04-28 15:06:27.0
I2C 的EEPROM读不同地址却每次读出相同值
大家好:
  我现在使用DSP的I2C读写EEPROM,出现如下问题:

1. 在写的时候 ,感觉相序什么的没问题啊,还有ACK信号。
2. 在读的时候,整个示波器看相序,貌似也很正常,该有ACK的时候有ACK,但问题是我无论读哪个地方的内容,都返回是我最后一次写的内容。
比如:我先往地址0x00中写入0x12,再往地址0x10中写入0x34,之后我无论读哪个地址,出现的都是0x34.搞不清楚这个到底怎么回事。


大侠们帮忙看下。
------解决方案--------------------
这像是没读出来或者没写进去,
假设你的写函数是i2c_writenbyte(addr,char* dat,char cnt)
没写一个就把*dat清零下
然后再看你读的还是不是最后一次写的
怀疑是你根本没读出来,写的时候,读的时候函数的返回地址刚好是你写的时候要写的那个数的地址
------解决方案--------------------
抓波形,读和写的波形贴上来,

在一个start condition  <---->  end condition 中间只能进行 写或者读一种操作


另外,注意结贴率,会影响你代码的bug数
------解决方案--------------------
读最后一个数据后要NAK,再Stop。 要不后面读出的数据会出错。