I2C总线协议详解:基于IMX6ULL的实践

1 下载量 125 浏览量 更新于2024-08-28 收藏 532KB PDF 举报
上升沿时数据线上的数据必须稳定,而在下降沿时数据可以改变。这意味着数据的传输是在时钟的高电平期间完成的。 b.起始和停止条件 起始条件是由主机在时钟线SCL为高电平时将数据线SDA从高电平拉低形成的。而停止条件则相反,是在SCL为高电平时SDA线由低电平变为高电平。这两个条件是I2C通信的开始和结束标志。 c.数据传输 数据传输由7位或10位的从机地址开始,接着是读写方向位(R/W位)。如果是写操作,主机随后发送数据;如果是读操作,主机首先发送一个空的ACK位,然后从从机接收数据。 d.应答机制 每次数据传输后,接收方必须通过在SCL为高电平时保持SDA线低电平来确认接收到的数据。这被称为ACK(Acknowledgement)位。如果接收方没有响应(SDA保持高电平),则视为NACK(Not Acknowledged),表明通信错误。 e.总线仲裁 在多主机系统中,当多个主机尝试同时控制总线时,会进行总线仲裁。仲裁规则是,如果一个主机在SCL为高时试图拉低SDA,而另一个主机保持SDA为高,那么SDA线将保持高电平,未拉低SDA的主机将失去对总线的控制,从而避免数据冲突。 f.错误处理 I2C协议中存在几种错误类型,包括超时错误、数据不匹配错误和总线竞争错误。这些错误通常通过检测ACK位、时钟同步和数据线状态来识别,并可能导致通信重试或终止。 g.时钟同步 I2C总线的时钟由主机提供,确保所有设备都能按照相同的节奏进行通信。时钟同步对于确保数据正确传输至关重要。 h.从机地址 每个连接到I2C总线的设备都有一个7位或10位的唯一地址,允许最多128个7位地址设备或1024个10位地址设备。地址位可以是固定的或者可以编程设置。 I2C总线是一种高效且灵活的通信协议,尤其适用于低速外设的连接。其物理层特性如半双工、地址配置、多主机支持和传输速率限制了其在特定场景的应用,而协议层的细节如数据有效性、起停条件、应答机制和总线仲裁则确保了通信的可靠性和效率。在IMX6ULL这样的微处理器中,I2C总线常用于与传感器、实时时钟、LCD控制器等外围设备的通信。