I2C多主机与多从机的工作原理
多主机模式: I2C总线上可以有多个主设备,在任何时刻,只有一个主设备控制总线,发起数据传输,其他主设备需要等待当前传输完成后才能接管总线。多从机模式: I2C总线上可以有多个从设备,每个从设备有唯一的地址。当一个主设备发起通信时,所有从设备都监听总线,只有地址匹配的从设备会响应。
仲裁过程透明,不影响其他设备通信,且仲裁失败的主机不会干扰总线。 主机发送起始条件和从机地址(写操作)。
从机接收到地址后,会发送一个应答信号(ACK)表示已接收。
主机开始发送数据,每发送一个字节,从机都会发送一个 ACK 进行确认。
主机发送停止条件(SCL 为高电平时,SDA 从低电平变为高电平)结束通信。 响应主机请求,提供或接收数据,通过唯一地址识别。 最终,只有一个主机能够成功控制总线,继续进行数据传输。 若多个从设备地址相同,总线将无法正常通信 通过额外的引脚配置从机地址 SDA线采用“线与”连接,所有主机同时发送数据时,SDA线最终表现为各主机发送逻辑的“与”结果。 允许多个主机共享总线,需通过总线仲裁避免冲突。 I2C总线可以连接多个从机,每个从机都有唯一的7位或10位地址,用于在总线上寻址。 所有从机地址唯一,或通过硬件跳线 配置。 在多从机系统中,主机可以通过发送不同的从机地址来与不同的从机进行通信。每个从机都会监听总线上的地址,只有当接收到自己的地址时才会响应主机的请求。 主机发送从机地址,从机通过比较地址来决定是否响应。 当主机想要发起通信时,会在 SCL 为高电平时将 SDA 从高电平拉到低电平,产生起始条件。如果多个主机同时产生起始条件,它们会继续发送数据。 主机通过向总线发送从机的地址来选择特定的从机进行通信。从机设备通过监视总线上的地址来判断是否需要响应。 I²C总线能够高效支持多主机与多从机协同工作 虽然I2C本身是串行协议,但可以通过时间片分配实现多个从机的并行访问效果 总线电容应小于400pF,否则需缩短布线或增加驱动能力。 I2C通信协议内置了冲突检测机制,以避免多个主机同时进行传输时的冲突。如果发生冲突,总线上的主机将停止发送数据以避免冲突。 I2C使用时钟来同步数据的传输。数据在每个时钟周期的边沿上进行采样和推送,确保数据的可靠传输。
页:
[1]
2