STM32读写24C02遇到的问题

这几天在弄I2C,读取24C02的数据。我默默的敲完了代码,然后仿真。

代码就下面两行,就是写一个字节,然后读取。

I2C_EE_BufferWrite( &write,100, 1);

I2C_EE_BufferRead(&read,100, 1); 

然后就是各种不对,经过跟踪发现程序挂在了读上面。

具体的发现读数据的时候,刚发送了起始信号后就死掉了。

百思不得其解。

然后用历程上的测试代码来试又正常。

和正常的程序对比了,也没问题。各种参数完全正确。

昨天搞了一天,总觉得是哪个地方我拼错了或是参数设错了。然鹅一直到晚上也没找到原因。

今天早上一想,是不是这写和读之间要加点延迟啊(24C02以前操作过一次,写后加点延迟忘了)。写成这样:

I2C_EE_BufferWrite( &write,100, 1);

delay(1000);

I2C_EE_BufferRead( &read,100, 1);

问题解决。。。然后翻了了数据手册,上面是这样写的:

STM32读写24C02遇到的问题_第1张图片

原来我写完一个字节后,立马跟这读。然后24C02内部还在写,然后单片机就发出了起始信号。

然后所有操作在写周期内无效。导致程序卡死在发出起始信号的地方。


好把,记住这个坑,以后不要再掉里面拉。

解决问题后心情好舒畅,来看会I2C协议~~~

2017.8.26


你可能感兴趣的:(STM32)