Linux上的I2C基础知识

Linux上的I2C基础知识

什么是I2C

 

       I2C(Inter-Integrated Circuit,eye-squared-C),也称为 I2C 或 IIC,是一种同步、多控制器/多目标(主/从)、分组交换、单端、串行通信总线,发明于 1982 年飞利浦半导体公司。

它广泛用于在短距离板内通信中将低速外围 IC 连接到处理器和微控制器。

  I2C协议可以工作在以下5种速率模式下,不同的器件可能支持不同的速率。结合目前使用的情况来看,现在的设备一般都支持400kbps,设备树中一般也都是400kbps。

  • 标准模式(Standard):100kbps
  • 快速模式(Fast):400kbps
  • 快速模式+(Fast-Plus):1Mbps
  • 高速模式(High-speed):3.4Mbps
  • 超快模式(Ultra-Fast):5Mbps(单向传输)

        Adapter(Master、Controller、bus)

  Client (slave、Device)

  SDA:数据,双向
  SCL:“时钟”

    主要由Adapter驱动,有时也由Client驱动(时钟拉伸)

 1. 起始条件

    当时钟线SCL保持高电平,SDA数据线从高到低,此时达成I²C达成起始条件

 2. Adapter 发送:客户端地址(7位)+ 方向(R/W)

 3. 客户端发送ACK(成功收到之后)

 4. 客户端发送数据

 5. Adapter发送ACK

 6. 停止条件  

    当时钟线SCL保持高电平,SDA数据线从低到高,此时达成I²C达成停止条件

   

 

Linux 驱动模型中的 I²C

 

 

未完待续

 

参考:

posted on 2023-01-16 16:32  Ctrl攻城狮  阅读(264)  评论(0编辑  收藏  举报