news 2026/8/5 17:58:44

嵌入式通信协议-- I²C 协议篇(IIC)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式通信协议-- I²C 协议篇(IIC)

目录

总述:

1.1主机和从机

1.2发送器和接收器

1.3总结

2.1 I²C 通信过程

第一步:主机发送起始信号:

第二步:主机发送从机地址(寻址):

第三步:从机应答信号:

第四步:发送器发送数据:

第五步:接收器发送应答信号:

第n步:循环步骤4、5

最后一步:主机发送停止信号:

3 时钟同步

4.三种经典时序

4.1主机向从机发送数据

4.2.从机向主机发送数据

4. 3主机先向从机发送数据,然后从机再向主机发送数据


总述:

I²C半双工总线(可以互相发送接收,但不能同时进行) ,串行通信(每次发送一个bit),可以连续发送多个字节(使用同一个时钟),主要用于近距离、低速的芯片之间的通信;I²C支持多个主设备和多个从设备连接在同一总线上每个设备都有一个唯一的地址,用于区分不同的设备

1.1主机和从机

I²C总线是一种多主机总线,连接在I²C总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;

1.2发送器和接收器

发送器:发送器是指在特定时刻向总线上发送数据的设备,主机在发送数据时充当发送器,而从机在回应主机请求时也可以充当发送器。

接收器:接收器是指在特定时刻接收数据的设备。类似于发送器,当主机请求数据时,从机成为接收器;而当从机需要将数据发送给主机时,主机则成为接收器。

1.3总结

主机和从机的区别在于谁发起通信和控制总线,而发送器和接收器的区别在于当前正在进行的数据传输方向

2.1 I²C 通信过程

第一步:主机发送起始信号

主机通过在数据线(SDA)上产生一个特定的起始信号,启用I²C总线。这表示通信的开始。

SCL为高电平时,SDA由高变低表示起始信号

SCL为高电平时,SDA由低变高表示停止信号

第二步:主机发送从机地址(寻址)

主机接着发送一个字节,包含目标从机的地址和读/写方向的指示(高7位通常为地址,低位表示方向)。这个地址使从机识别出自己是目标设备。

这里需要注意的是:总线上所有的从机接收到主机发送的字节都会进行与自己地址匹配,如果相同,则被确认被主机寻址,然后根据最低为0或者1来确定自己是发送器还是接收器。

最低位'0'表示主机发送数据,'1'表示主机接收数据;

从左至右,前七位数据,最后一位读写位

第三步:从机应答信号

被寻址的从机会在收到地址后,发送一个应答信号(ACK),通知主机它已准备好进行通信。

第四步:发送器发送数据

发送器(可以是主机或从机)发送一个字节的数据到总线上。

第五步:接收器发送应答信号

接收器(可以是主机或从机)在接收到数据后,发送一个应答信号(ACK)给发送器,确认收到数据。

发送器发送完一个字节数据后,接收器必须发送1位应答位来回应发送器即一帧共有9位.

第n步:循环步骤4、5

以上步骤会重复进行,直到所有需要传送的数据字节都完成。

最后一步:主机发送停止信号

通信完成后,主机发送一个停止信号,释放总线,使其他设备能够使用总线。

3 时钟同步

在SCL为低电平时,SDA线上的信号可以变化,发送器可以将数据位置于SDA线上。(发送1bit数据)

当SCL变为高电平时,接收器读取SDA线上的数据,此时SDA线的数据必须保持不变。(读取1bit数据)

4.三种经典时序

灰色为主机,白色为从机

如果从机没有响应,就会返回:

  • A̅(NACK)

可能原因:

  • 地址不存在
  • 从机忙
  • 从机未上电

4.1主机向从机发送数据

主机结束通信两种情况:主机向从机发送完数据,从机不再应答或者主机发送完不想发了。

4.2.从机向主机发送数据

主机结束通信两种情况:从机向主机发送完数据,主机不再应答或者从机发送完不想发了。

4. 3主机先向从机发送数据,然后从机再向主机发送数据

主机向从机发送数据,从机应答或者不应答,主机restart 建立通信,省略掉了stop的步骤,变为从从机器接收数据,知道最终主机结束通信

参考文献:主动光式颜色传感器技术详解. 感为智能科技. [2024-04-17]&创客学院技术文档

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 17:57:59

SwiftUI-Flow RTL支持详解:轻松构建多语言适配界面

SwiftUI-Flow RTL支持详解:轻松构建多语言适配界面 【免费下载链接】SwiftUI-Flow Flow Layout implemented in SwiftUI 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftUI-Flow SwiftUI-Flow是一个强大的SwiftUI布局框架,提供了灵活的流式布…

作者头像 李华
网站建设 2026/8/5 17:55:51

从重庆网上商城网站建设到生意爆发:中小老板必须知道的实战避坑指南与流量密码

说句掏心窝子的话,在这个电商红海拼杀的年代,如果你还觉得搞个淘宝店或者抖音小店就是做全网生意了,那可能真要落后一大截。很多老板,尤其是咱们重庆这一带做生意的兄弟伙,手里头有好产品,甚至是有源头供应链的优势,但就是缺一个能长期沉淀、完全掌握在自己手里的阵地。…

作者头像 李华
网站建设 2026/8/5 17:53:38

3步解决中文字体难题:PingFangSC苹方字体Web集成实战指南

3步解决中文字体难题:PingFangSC苹方字体Web集成实战指南 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在构建现代Web应用时,中…

作者头像 李华
网站建设 2026/8/5 17:51:19

深度解析海原县建设局网站:获取最新住建政策、工程审批进度与民生服务指南一站式平台

在这个数字化飞速发展的时代,政府服务已经不再仅仅是坐在办公室里盖章签字的那点事儿,它更像是一扇窗,一面镜子,直接映射出一座城市的治理能力和服务温度。对于咱们宁夏海原县的父老乡亲们,或者是打算在海原扎根发展的企业老板来说,想要了解家乡是怎么建设的,想要办理房…

作者头像 李华
网站建设 2026/8/5 17:51:04

BilibiliSponsorBlock:基于社区协作的视频内容智能过滤系统架构解析

BilibiliSponsorBlock:基于社区协作的视频内容智能过滤系统架构解析 【免费下载链接】BilibiliSponsorBlock 一款跳过小电视视频中恰饭片段的浏览器插件,移植自 SponsorBlock。A browser extension to skip sponsored segments in videos, ported from t…

作者头像 李华