I2C详解

I2C

        I2C总线(Inter-Integrated Circuit),由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。常用于微控制器与外设之间的连接。

硬件连接

        I2C仅需两根线就可以支持一主多从或者多主连接:

  • SDA(Serial Data Line):串行数据线。
  • SCL(Serial Clock Line):串行时钟线。
    在这里插入图片描述

通信协议

        I2C是串行传输总线,传输是以8位为单元数据传输的,先传输最高位(MSB),主芯片发出start信号之后,然后发出9个时钟传输数据。

  • 开始信号(S):SCL为高电平时,SDA山高电平向低电平跳变,开始传送数据。
  • 结束信号(P):SCL为电平时,sDA由低电平向高电平跳变,结束传送数据。
  • 响应信号(ACK):发送器每发送一个字节,就会在时钟脉冲的第9个脉冲期间释放数据线SDA,然后由接收器反馈一个应答信号给发送器,如果这个应答信号为低电平,就为有效应答位(ACK简称应答位),表示接收器已经成功的接受了了这个字节;如果这个应答信号为高电平,就为非应答位(NACK),一般表示接收器没有成功接受这个字节。具体来说,对于反馈回来的有效应答位(ACK)的要求是:接收器在第9个时钟脉冲之前的低电平期间将SDA拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在他接受的最后一个字节之后,发送一个NACK信号,来通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。
            SDA上传输的数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平期间变化。如图:
    在这里插入图片描述
    写操作
            刚开始主芯片要发出一个start信号,然后发出一个设备地址(用来确定是往哪一个芯片写数据),方向(读/写,0表示写,1表示读)。回应(用来确定这个设备是否存在),然后就可以传输数据,传输数据之后,要有一个回应信号(确定数据是否接受完成),然后再传输下一个数据。每传输一个数据,接受方都会有一个回应信号,数据发送完之后,主芯片就会发送一个停止信号。
    在这里插入图片描述
    读操作
            刚开始主芯片要发出一个start信号,然后发出一个设备地址(用来确定是从哪一个芯片读取数据),方向(读/写,0表示写,1表示读)。回应(用来确定这个设备是否存在),然后就可以传输数据,传输数据之后,要有一个回应信号(确定数据是否接受完成),然后在传输下一个数据。每传输一个数据,接受方都会有一个回应信号,数据发送完之后,主芯片就会发送一个停止信号。
    在这里插入图片描述

总线速度

双向传输总线:

  • 标准模式(Standard-mode):速率高达 100 Kbit/s
  • 快速模式(Fast-mode):速率高达 400 Kbit/s
  • 快速模式+(Fast-mode Plus):速率高达 1 Mbit/s。
  • 高速模式(High-speed mode):速率高达 3.4 Mbit/s

单向传输总线:

  • 超快速模式(Ultra Fast-mode):速率高达 5 Mbit/s
发布了32 篇原创文章 · 获赞 1 · 访问量 4551

猜你喜欢

转载自blog.csdn.net/hezhanran/article/details/104943165
I2C