大家好,我在用MSP430和AT24C02IIC读写操作时,发现读取的数据都是0xFF。感觉上是写入的问题。以下时读写时示波器抓取的图像,请大家帮我看看问题出在哪里了?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好,我在用MSP430和AT24C02IIC读写操作时,发现读取的数据都是0xFF。感觉上是写入的问题。以下时读写时示波器抓取的图像,请大家帮我看看问题出在哪里了?
谢谢大家的回复。问题已经解决。具体是怎么解决的我也闹不明白。我最后的操作是这个样子的。本来我的程序是先连续在0X01 和0X02连个地址中,然后读取当前地址的值,也就是0X02地址的数值。数据读取不成功。后来我把写0X02的语句注释掉,想着单独写一个数试试。发现读写0X01地址变得正常了。然后我去掉0X02的注释,读取0X01的数据和0X02的数据,发现0X02数据读取还是0XFF。再后来我试了试0X03和0X04已经其他的。发现只有0X01的数据写入正常。接着0X00和0X01后发现,里面这两个地址的数据读写正常,最后再试着写入其他地址数据,奇怪的发现所有地址读写正常。最终我也没想明白里面的原因是那个?
I2C的协议规定,必须加上拉电阻的,你加外部上拉试试。你这个一半的哪个波形,很有可能就被认为是低电平了。为什么只有0x01可以呢,怀疑是因为只写了一次高电平,所以成功了。
IIC确实没有加上拉电阻。半电平的位置实际上是出现在430拉低时钟,此时EEROM回复ACK位,但是程序里430还没有释放总线造成的。后来我程序修改了这一块。问题当时还是没有解决。最后问题解决的莫名其妙。实在弄不清吃到底问题出在哪里,解决的时候好像问题突然就又消失了一样。