iic通信协议

I2c通信通过两根线来传输数据,一根是scl:控制时钟。另一根是sda:传输数据。Scl时钟掌控在主机手里,数据传输完后要释放掉scli2c可以支持一个多主机传输)。

主机:初始化总线的数据传输并产生允许传输数据的时钟信号的器件。

从机:此时,任何可以被寻址的器件。

(注:当多主机同时初始化时,可以通过仲裁决定让哪个主机拿到控制scl的权限)。

 

规则:1.scl高电平时,采集sda的数据。故sda在低电平变化,高电平时要保持。

           2.在通信开始的时候sclsda都置为高电平,此时为总线空闲时间

              sdascl高电平时产生下降沿,标志总线启动。

              sdascl高点平时产生上升沿,标志总线释放。

           3.ack:每当发送器给接收器发送了8bit的数据后,接收器要给发送器反馈一个低电平表示接收到数据。

 

 

写时序:设备地址 => ack => 寄存器地址 => ack => data => ack

iic通信协议

Pahse1: 写设备地址。(ox42)假设:有一个从机的设备地址为0x42,其中最后一位是用来判断读写方向的,写时0x42,读地址时0x43

Pahse2: 寄存器地址。

Pahse3 data

 iic通信协议

 

读时序:

写设备地址 => ack => 寄存器地址 => ack => 读设备地址=> ack => data =>Na


iic通信协议

 

Pahse1设备地址。(ox42

Pahse2:寄存器地址。

选择完寄存器地址需要再一次给一个启动信号,即在scl为高电平的时候,拉低一次sda

Pahse3设备地址。(ox43)所以第八位为高电平

Pahse4data。NA时主机反馈给从机的一个高电平,表示接收到数据。

iic通信协议


注:写数据的时候高位在前,低位在后。