什么是I2C
I2C是一条PCB内部集成电路的总线,用于CPU和各类芯片(PMICs, GPIO 扩展器, 视频传感器等等)的低速传输交流。
I2C总线仅需要两根线:数据线(SDA,Serial Data Line)和时钟线(SCL,Serial Clock Line)。数据以串行方式传输,SDA线上的数据在SCL线上的时钟信号同步。
I2C总线上的设备没法被CPU检测,也不支持热插拔,只能由设备树在启动时提供给CPU设备信息。
I2C也可以被称为IIC, TWI, TWSI, 取决于不同的生产商。
I2C上的主设备和从设备
- 主设备(Master)
- 也被称为Adapter, Controller
- 通常一条总线上只有一个,负责发起传输
- 没有地址
- 从设备(Slave)
- 也被称为Client, Device
- 一条总线上可以由多个,负责响应主设备发起的传输
- 每个硬件由7-bit的地址(也可以扩展到10-bit),并且该地址是设置在硬件里的,不会被动态分配
I2C在Linux驱动模型里是如何实现的
这部分还没仔细看,就先记录到这吧。