1. I2C特点介绍
IIC总线只需要两根总线(串行数据线SDA,串行时钟线SCK)就可以完成读写操作,而且通信协议简单,一条总线上可以挂载多个设备,因此被广泛使用。但是IIC总线有一个缺点,就是传输速率比较低。SDA负责数据传输,SCL负责时钟同步。
1.1 I2C设备驱动的概述
这里简单地将I2C设备驱动的层次分为设备层、总线层。重点是理 解 4 个数据结构(i2c_driver、i2c_client、i2c_algorithm、i2c_adapter)。 i2c_driver、2c_client 属于设备层;i2c_algorithm、i2c_adapter 属于总线层。值得注意的是一个系统中可能有多个总线层, 也就包含多个总线控制器;也可能有多个设备层,包含不同的I2C设备。
2.总线架构介绍
i2c设备驱动层组件(i2c-dev.c)给用户提供调用接口,众所周知,用户实现策略,驱动实现的是机制。
而i2c核心层起到承上启下的作用,如下
2.1 核心层(i2c-core.c)
struct bus_type:
struct bus_type i2c_bus_type = {
.name = "i2c",
.dev_attrs = i2c_dev_attrs,
.match = i2c_device_match,
.uevent = i2c_device_uevent,
.probe = i2c_device_probe,
.remove = i2c_device_remove,
.shutd