DSP

I2C读写问题

2019-07-13 17:12发布

a.完全不能进行读写: (1) 通信协议不正确:有很多的I2C设备,并不支持所有的I2C协议,同时也不是一个比较标准的I2C设备;软件的通信时序不正确。 (2)I2C设备地址不正确:有很多的I2C设备的地址是可以通过硬件设定的;也有器件资料提供的数据是错误的。 (3)I2C通信线上没有加上拉电阻:由于I2C的从设备的SDA,SCL的PIN是输出开漏的,所以必须加上拉电阻,同时根据I2C设备的数量上拉电阻的大小也会不同。从1K~10K以上,当然不能太大,也不能太小。 (4)I2C设备损坏:有时我们会经常遇到问题时总是认为我们自己在软件上是不是有问题,是不是电路上没有焊接好,实际上都不是,而是器件是坏的。 b.读写失败,不能正确的读写某个地址的数据: (1)电路干扰:在I2C设备的电源入口处没有加滤波电路,一般入口处加10nF或 0.1uF电容;SDA,SCL线上干扰,没有滤波处理,线上串一几十ohm电阻,对地加几十pF电容;千万别小看这几颗小小的电容! (2)通信时序:读写是有速度过快,例如在写24C02时,当你用一个字节的方式去写EEPROM时,如果速度过快,前面的数据是不会被写入>15H->00H。 此文谨献给初级的软硬件工程师,希望在设计使用I2C设备时少走弯路,希望大家补充