Fork me on GitHub

  I2C是一种只使用两根线的串行通信协议。一根线是串行数据线SDA,另外一种是串行时钟线SCL。

I²C允许相当大的工作电压范围,但典型的电压准位为+3.3V或+5v。

  I²C的参考设计使用一个7比特长度的地址空间但保留了16个地址,所以在一组总线最多可和112个节点通信[a]。常

见的I²C总线依传输速率的不同而有不同的模式:标准模式(100 Kbit/s)、低速模式(10 Kbit/s),但时钟频率可被允

许下降至零,这代表可以暂停通信。而新一代的I²C总线可以和更多的节点(支持10比特长度的地址空间)以更快的

速率通信:快速模式(400 Kbit/s)、高速模式(3.4 Mbit/s)。

  I2C分为主机模式和从机模式,主机通过SDA线发送设备地址(SLAVE_ADDRESS)查找从机,SLAVE_ADDRESS可

以是7位或10位,紧跟着SLAVE_ADDRESS的一个数据位用来表示数据传输方向,即第8位或11位。为0时表示写数据,为

1时表示读数据。

  在我所使用的系统中,I2C可以使用模拟的,也开始使用系统的,模拟的就是只需要配置好I2C的设备信息,就可以直接通过

I2C读写寄存器。系统的就是需要传输数据多的情况下,使用软件队列来进行读写操作。

  I2C调试过程,一般的思路是,先示波器->寄存器打印->收发流程日志确认。

posted on 2017-12-02 15:29  虚生  阅读(894)  评论(0编辑  收藏  举报