I2C总线协议详解:基于IMX6ULL的实践
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控制器等外围设备的通信。
620 浏览量
113 浏览量
2021-10-01 上传
123 浏览量
356 浏览量
208 浏览量
418 浏览量
点击了解资源详情
weixin_38590738
- 粉丝: 8
- 资源: 902
最新资源
- 初级java笔试题-jas497_476:EECS476的最终项目
- 完整版调用外部命令.rar
- 玫瑰花图标下载
- DO_AN_LOD
- Library:生成一个图书馆区,玩家可以在那里轻松获取书籍,并受制于
- MACS:MACS-ChIP-Seq的基于模型的分析
- scrapy_climatempo:Objetivo
- 完整版调整窗口大小.rar
- 抄送缓存
- 可爱大象图标下载
- goit-js-hw-08-gallery:https
- Công Cụ Đặt Hàng Của Long Châu Express-crx插件
- 完整版调整控件大小2.rar
- semiotic-standard:适用于所有商用跨星公用事业升降机和重型运输航天器。 — 2078年4月16日
- 可爱动物头像小图标下载
- guowen.xu.github.io