I2C总线

I2C总线

  • Fang XS.
  • [email protected]
  • 记录学习,方便复习。
  • 如果有错误,希望被指出,学习技术的路难免会磕磕绊绊

简介

  • I2C通信是一种半双工,串行,同步通信协议。
  • I2C适用于近距离,低速设备间通信。
  • 硬件只有2跟线:
    • SDA 用于数据传递。
    • SCL 用于时钟同步。
    • 一般2跟数据线都会接上拉电阻,器件内部一般设置为高阻态防止干扰其他器件。
  • 总线上可以挂载多个主机,多个从机,主机有权发起和结束一次通信,从机只能被主机呼叫。
  • 当多个主机同时启用总线,I2C具备冲突检测和总线仲裁的功能。
  • 每个I2C器件都有一个唯一的7位地址。
  • 每个器件都可以作为主机或从机,但是每一时刻只有一个主机。
  • 总线上增加,删除器件不影响其他器件。

I2C起始与终止信号

  • 空闲信号:
    • SDA为高电平,SCL为高电平。
  • 同步信号:
    • SCL为高电平时采样,接收器读数据,要求数据稳定。
    • SCL为低电平,发送器往总线发送数据,允许电平变化。
  1. 起始信号

    • SCL为高电平时,SDA从高变低。
  2. 终止信号

    • SCL为高电平时,SDA从低变高。

字节传送与应答信号

  • 主机发送第一字节地址和数据传递方向,指明从机发送还是接收。
    • 当主机指明从机发送时,从机为发送器,主机为接收器。
    • 当主机指明从机接收时,从机为接收器,主机为发送器。
  • I2C通信时,每个字节是8位,数据传送先发高位后发低位,发送器发送一字节,接收器须发送一位应答,来回应发送器。
  • 应答信号是低电平,没接收到数据或不应答保持高电平。
  • I2C数据传送一帧为9位,8位数据,1位应答信号。

I2C通信过程

  1. 主机发送起始信号启动总线。启动总线后,总线处于占用状态
  2. 主机发送一个字节指明从机地址和数据传送方向。
    • 高七位表示从机地址.
    • 最后一位表示字节传送方向。
      • 主机读 为 1
      • 主机写 为 0
  3. 被寻址的主机应答,回应主机。
  4. 发送器发送一字节数据。
  5. 接收器应答,回应发送器。
  6. 重复步骤4,步骤5…
  7. 通信完毕,主机发送停止信号结束通信。结束通信后,总线处于空闲状态

I2C寻址方式

  • SDA传送的包括数据和地址。
  • 数据传送方向由主机决定。
  • 总线上所有的从机在接收主机发送的一字节数据后,都会跟自己的地址进行比较,如果跟自己的地址相同则认为是被主机呼叫。再通过第8位数据确定自己是发送器还是接收器。

你可能感兴趣的:(嵌入式总线和小知识,单片机,嵌入式硬件)