IIC协议实际使用中比较普遍的一种协议,它具备引脚少,硬件实现简单,可扩展性强等特点。大部分IC之间的通信,都是使用该协议进行。
- 它有两条线路:SDA 和 SCL;
- 每个连接到总线的设备,都有一个独立的地址,主机也正是通过这个地址区分不同的从机设备;
- 多个主机接入总线时,会利用仲裁的方式决定哪个从机设备占用总线;
具有三种数据传输模式:
1、标准模式 100Kbit/s 2、快速模式 400Kbit/s 3、高速模式 3.4Mbit/s(大多数设备不支持该模式)
- 可加入滤波器滤除总线噪声,保证数据的完整;
- 连接到相同总线的IC数量收到总线的最大电容400pF的限制;
IIC协议:
起始位:SCL为高时,SDA出现下降沿,表示一个起始位,数据传输开始;
终止位:SCL为高时,SDA出现上升沿,表示一个终止位,即数据传输到此结束;
传输数据:SCL为高时,SDA传送数据,SCL为低时,为SDA数据间隙
通信流程
如上图所示:
1、当主机IIC接口传送起始信号 S 时,连接到IIC总线上的所有从机都能收到该信号;
2、起始信号过后,所有的从机都开始等待主机广播地址信号(SLAVE_ADDRESS)。而IIC总线上,所有的从机设备的地址都是唯一的,当主机广播的地址与某设备地址一致时,该从机就被激活(选中),而地址不一致的其他从机设备,则会自动跳过后面的数据信号;
3、RW 是传输方向,为 0 时,表示数据由主机传输至从机,为 1 时,表示主机接收从机数据;
4、当从机接收到与之相匹配的地址之后,主机或者从机会返回一个应答信号,只有在接收到应答信号之后,主机才能继续发送或者接收数据;
举个栗子:主机向从机写:
比如说,主机要向从机写数据,首先发送一个起始信号,总线上所有从机都能接收到这个信号;接着广播地址,当总线上的某个IC/器件地址与广播地址相匹配时,RW=0(写数据),并发送一个应答信号,等待从机应答,若从机正确应答,则主机正式向从机传输数据(DATA),数据包大小为8位。主机每发送完一个数据,都需要发往从机的应答信号正确返回,只有返回了正确的应答信号,下一个数据包才会继续发送。一致循环往复,传输N个数据...当数据传输结束时,主机向从机发送一个停止信号(P),表示数据传输到此结束。
反之同理;
注意:
- 应答信号A(表示主机向从机传输的信号);
- 非应答信号/A(表示主机向从机传输的信号);
- 且在从机向主机传输的过程中,当主机希望终止传输时,主机向从机返回一个非应答信号/A,此时从机会自动停止传输,没有停止信号P;
版权属于:编码书生
本文链接:https://codess.cc/archives/15.html
所有原创文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
除特别注明,您可以自由的转载和修改,但请务必注明文章来源且不可用于商业目的。