如何从软硬件层面,理解I2C总线的工作原理
💡
原文中文,约4000字,阅读约需10分钟。
📝
内容提要
I2C总线是一种广泛应用且功能强大的总线,用于主机与从设备通信。它使用开漏输出控制器,在单根数据线上实现双向数据流传输。物理接口由串行时钟线(SCL)和串行数据线(SDA)组成。主机通过发送START标志初始化通讯,发送STOP标志结束通讯。数据位伴随着SCL上的每一个时钟脉冲传输。每一字节后总是伴随着来自接收方的1位ACK位。数据可以写入/读自从机,通过读写从设备内部的寄存器完成。
🎯
关键要点
- I2C总线是一种用于主机与从设备通信的广泛应用的总线。
- I2C总线的物理接口由串行时钟线(SCL)和串行数据线(SDA)组成。
- 主机通过发送START标志初始化通讯,发送STOP标志结束通讯。
- I2C总线使用开漏输出控制器实现双向数据流传输。
- 开漏输出允许将总线拉低或释放总线以允许上拉电阻拉高。
- 每个I2C设备都有独特的设备地址,主机通过地址与从机通讯。
- 数据传输只能在总线空闲时初始化,SDA和SCL在STOP标志后均处于高电平时表示空闲状态。
- 数据位伴随着SCL上的每个时钟脉冲传输,数据以大端在前的方式传输。
- 每个字节后总是伴随着来自接收方的ACK位,表示字节已成功接收。
- 主机可以通过发送START标志初始化通讯,STOP标志结束通讯。
- 从机读取数据的过程需要先发送寄存器地址,然后再发送读操作的设备地址。
- I2C总线控制的设备可以有多个寄存器,主机通过寄存器地址进行读写操作。
➡️