IIC协议实际使用中比较普遍的一种协议,它具备引脚少,硬件实现简单,可扩展性强等特点。大部分IC之间的通信,都是使用该协议进行。

134724.png

  • 它有两条线路:SDASCL
  • 每个连接到总线的设备,都有一个独立的地址,主机也正是通过这个地址区分不同的从机设备;
  • 多个主机接入总线时,会利用仲裁的方式决定哪个从机设备占用总线;
  • 具有三种数据传输模式:

    1、标准模式 100Kbit/s
    2、快速模式 400Kbit/s
    3、高速模式 3.4Mbit/s(大多数设备不支持该模式)
    
  • 可加入滤波器滤除总线噪声,保证数据的完整;
  • 连接到相同总线的IC数量收到总线的最大电容400pF的限制;

IIC协议:

起始位:SCL为高时,SDA出现下降沿,表示一个起始位,数据传输开始;
终止位:SCL为高时,SDA出现上升沿,表示一个终止位,即数据传输到此结束;
传输数据:SCL为高时,SDA传送数据,SCL为低时,为SDA数据间隙

时序图:
5247.png

通信流程

4658.png

如上图所示:

1、当主机IIC接口传送起始信号 S 时,连接到IIC总线上的所有从机都能收到该信号;

2、起始信号过后,所有的从机都开始等待主机广播地址信号(SLAVE_ADDRESS)。而IIC总线上,所有的从机设备的地址都是唯一的,当主机广播的地址与某设备地址一致时,该从机就被激活(选中),而地址不一致的其他从机设备,则会自动跳过后面的数据信号;

3、RW 是传输方向,为 0 时,表示数据由主机传输至从机,为 1 时,表示主机接收从机数据;

4、当从机接收到与之相匹配的地址之后,主机或者从机会返回一个应答信号,只有在接收到应答信号之后,主机才能继续发送或者接收数据;

举个栗子:主机向从机写:

比如说,主机要向从机写数据,首先发送一个起始信号,总线上所有从机都能接收到这个信号;接着广播地址,当总线上的某个IC/器件地址与广播地址相匹配时,RW=0(写数据),并发送一个应答信号,等待从机应答,若从机正确应答,则主机正式向从机传输数据(DATA),数据包大小为8位。主机每发送完一个数据,都需要发往从机的应答信号正确返回,只有返回了正确的应答信号,下一个数据包才会继续发送。一致循环往复,传输N个数据...当数据传输结束时,主机向从机发送一个停止信号(P),表示数据传输到此结束。

反之同理;

注意:

  • 应答信号A(表示主机向从机传输的信号);
  • 非应答信号/A(表示主机向从机传输的信号);
  • 且在从机向主机传输的过程中,当主机希望终止传输时,主机向从机返回一个非应答信号/A,此时从机会自动停止传输,没有停止信号P;
最后修改:2019 年 09 月 20 日 11 : 43 AM
您的支持就是我持续更新的动力!