zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Linux系统驱动之I2C系统的重要结构体

2023-04-18 14:41:47 时间

资料下载

coding无法使用浏览器打开,必须用git工具下载:

git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看

百问网驱动大全

I2C系统的重要结构体

参考资料:

  • Linux驱动程序: drivers/i2c/i2c-dev.c
  • I2CTools: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/

1. I2C硬件框架

2. I2C传输协议

  • 写操作
  • 读操作

3. Linux软件框架

4. 重要结构体

使用一句话概括I2C传输:APP通过I2C Controller与I2C Device传输数据。

在Linux中:

  • 怎么表示I2C Controller
    • 一个芯片里可能有多个I2C Controller,比如第0个、第1个、……
    • 对于使用者,只要确定是第几个I2C Controller即可
    • 使用i2c_adapter表示一个I2C BUS,或称为I2C Controller
    • 里面有2个重要的成员:
      • nr:第几个I2C BUS(I2C Controller)
      • i2c_algorithm,里面有该I2C BUS的传输函数,用来收发I2C数据
    • i2c_adapter

5. 内核里怎么传输数据

使用一句话概括I2C传输:

  • APP通过I2C Controller与I2C Device传输数据
  • APP通过i2c_adapter与i2c_client传输i2c_msg
  • 内核函数i2c_transfer
    • i2c_msg里含有addr,所以这个函数里不需要i2c_client