视频字幕
I²C通信协议是一种广泛使用的串行通信协议,全称为Inter-Integrated Circuit。它专门设计用于集成电路之间的短距离通信。I²C协议的最大特点是只需要两根信号线:SDA数据线和SCL时钟线,就能实现多个设备之间的通信。它支持多主多从的架构,允许多个主设备和从设备连接到同一总线上。
I²C通信遵循严格的时序协议。首先,总线处于空闲状态,SDA和SCL都保持高电平。当主设备要发起通信时,它会产生起始条件:在SCL保持高电平期间,将SDA从高电平拉低。接下来,主设备发送7位从设备地址和1位读写控制位。每个数据位都在SCL的上升沿被采样。最后,被寻址的从设备会在第9个时钟周期拉低SDA,产生应答信号ACK,表示准备好进行数据传输。
数据传输是I²C通信的核心环节。在写操作中,主设备向从设备发送数据,每传输一个字节后,从设备会发送ACK信号确认接收。在读操作中,从设备向主设备发送数据,主设备发送ACK确认继续接收,当接收完最后一个字节时,主设备发送NACK信号表示传输结束。最后,主设备通过产生停止条件来结束整个通信过程,即在SCL保持高电平时将SDA从低电平拉高,总线回到空闲状态。
I²C协议使用地址寻址机制来识别总线上的不同设备。标准的7位地址模式提供128个地址,其中0x08到0x77是可用的设备地址,0x00到0x07是保留地址,0x78到0x7F是广播地址。每个从设备都有唯一的地址,当主设备发送地址时,只有匹配的从设备会响应。对于需要更多设备的应用,还可以使用10位地址模式来扩展地址空间。地址冲突可以通过硬件配置引脚或软件分配来解决。