IIC通信协议

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    数据有效性

    I²C由两条线组成一条双向串行数据线SDA一条串行时钟线SCL。
    SDA线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变。
    换言之 SCL为高电平时表示有效数据 SDA为高电平表示“ 1”低电平表示“0” SCL为低电平时表示无效数据此时SDA会进行电平切换为下次数据表示做准备。
    在这里插入图片描述

    开始信号和结束信号

    I²C起始信号 S 当SCL高电平时 SDA由高电平向低电平转换
    I²C停止信号 P 当SCL高电平时 SDA由低电平向高电平转换
    在这里插入图片描述

    应答信号

    I²C每次传输的8位数据每次传输后需要从机反馈一个应答位以确认从机是否正常接收了数据。
    当主机发送了8位数据后会再产生一个时钟此时主机放开SDA的控制读取SDA电平 在上拉电阻的影响下
    此时SDA默认为高必须从机拉低 以确认收到数据。
    在这里插入图片描述

    完整传输流程

    1. SDA和SCL开始都为高 然后主机将SDA拉低 表示开始信号
    2. 在接下来的8个时间周期里发送8bit数据主机控制SDA的高低 发送从机地址。 其中第8位如果为0表示接下来是写操作即主机传输数据给从机 如果为1表示接下来是读操作即从机传输数据给主机 另外数据传输是从最高位到最低位因此传输方式为MSB Most Significant Bit。
    3. 总线中对应从机地址的设备发出应答信号
    4. 在接下来的8个时间周期里如果是写操作则主机控制SDA的高低如果是读操作则从机控制SDA的高低
    5. 每次传输完成接收数据的设备 都发出应答信号
    6. 最后在SCL为高时 主机由低拉高SDA 表示停止信号整个传输结束。

    参考文献

    IIC通信过程详解以及底层代码实现

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6