STM32F030F4 I2C 好神奇

2019-07-21 02:43发布

本帖最后由 flwjn 于 2019-4-18 11:45 编辑

以上省略200字。(感叹之词)

时序寄存器也用官方工具计算配置了。

为啥,START之后,发完从机地址后,紧接着发了个STOP?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
flwjn
2019-07-21 06:57
我能说,我只是把从机地址搞错位了么。

而且,真不知道怎么想的。。我一直以为,START之后,等待从机ACK,然后才发送地址。。。
I2C,我只用过1主1从。从机地址对我来说只是摆设。
所以一直没怀疑地址有问题。
其实这逻辑根本有问题啊,真丢人。。

我从来没用过模拟I2C,都是硬件配置一下完事了,对I2C协议没做过深入了解。

今天本来想买个协议分析仪的,太贵了,要申请。对我来说又不必要。
最快买回来也下周了,根本等不及。(项目不急,性子急。)

人工读了下波形,立刻就愣住了,没读通。
很快判断,START和地址之间有问题。
然后,又从STOP往前读,一读就发现,从机地址,整体左移了1位。

原来,配置的时候脑抽,以为地址是低7位有效,而寄存器的bit0,是10位地址才用的,就左移了一位( <<1)。这个地址,前后都是0,错1位,不按时序看,不容易看出来差别。

其他的轻车熟路,现在已经调试完毕了。

一周热门 更多>