为什么说由于是模拟I2C,为读取数据更准确 ,读取之前最好禁止中断呢

为什么说由于是模拟I2C,为读取数据更准确 ,读取之前最好禁止中断呢

用 IO 模拟I2C,需要程序设置CLK,DAT IO的高低电平并各延时一段时间。在操作IO的期间,如果有中断触发,就会打断I2C的读写操作。会有可能影响模拟I2C的时序波形。多数情况下中断是不影响 I2C的读写。在一些极端情况下,可能多个中断的叠加使中断时间过长就会影响I2C的操作了。

中断可能会改变时序,假设在传数据位时,单片机本来时要数据线拉高,但是由于中断的原因,导致没能及时拉高拉低,导致读取的数据不是正确的,1读成0,0读成1了。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^