iic集成电路总线,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任何时刻只能有一个主机。
iic有两条总线线路,一条是串行数据线SDA,一条是串行时钟线SCL(iic是半双工)
每个连接到总线的期间都可以通过唯一的地址和其他器件通信。
iic可以在通讯过程中改变主机,如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防止总线数据被破坏。
iic协议:
- 数据的有效性:在时钟的高电平后走期内,SDA线上的数据必须保持稳定,数据线仅可以在时钟SCL为低电平时改变。
- 起始条件:当SCL为高电平的时候,SDA线上由高到低的跳变
- 结束条件:当SCL为高电平的时候,SDA线上由低到高的跳变
起始和终止信号都是由主机发出的。总线在起始条件之后视为忙状态;在停止条件之后被视为空闲状态
- 应答:每当主机向从机发送完一个字节的数据,主机都要等待从机给出一个应答信号,以确认从机是否成功接收到了数据,从机应答主机所需要的时钟仍是主机提供的,应答出现在每一次主机完成8个数据位传输后紧跟着的时钟周期,低电平0表示应答,1表示非应答
- 数据格式:iic总线上传送的数据信号既包括地址信号,又包括真正的数据信号。(1)在起始信号后必须传送一个7位从机地址,第8位是数据的传送方向位,“0”表示主机发送数据,“1”表示主机接收数据。数据传送总是由主机产生的终止信号结束,如果主机希望继续占用总线进行新的数据传送,可以不产生这个终止信号,马上再次发出起始信号对另一从机进行寻址。