当前位置: 首页 > news >正文

IIC 通讯详解——以 OSI 模型分析 物理层、数据链路层和应用层

一、IIC 简介

1.1 IIC 简介

I²C (Inter-Integrated Circuit,总线制集成电路) 是由 Philips (现NXP) 在 1980 年代初期提出的一种 串行通信总线标准,用于微控制器与外设芯片之间的短距离通信

它以两根信号线就能连接多个设备,具有结构简单、成本低、扩展方便等优点,是嵌入式系统中最常见的通信接口之一。

1.2 IIC 特性

1.2.1 特性

  • 通讯线数:2 根:SCL (时钟线)、SDA (数据线)
  • 通讯方式:半双工、主从式
  • 电气结构:开漏 (Open-Drain) + 上拉电阻
  • 通讯举例:一般几十厘米以内 (视电容和速率而定)
  • 寻址方式:7 位或 10 位地址,可挂接多个从设备
  • 确认机制:每字节都有 ACK/NACK 确认信号
  • 速率等级:标准模式 100 kbit/s;快速模式:400 kbit/s;高速模式:3.4 Mbit/s;超高速模式:5 Mbit/s (少见)

1.2.1 优点

  • 仅需两根信号线:只用SCL (时钟) 和 SDA (数据) 两条线即可完成通信,极大节省I/O口和布线。
  • 多主多从结构:支持多个主机和多个从机,具备仲裁机制,可以让不同主机共享同一总线。
  • 地址化通信:每个从设备都有唯一的 7 位或 10 位地址,通过地址寻址,扩展性好。
  • 硬件开销小:设备内部只需简单的接口逻辑,不需要复杂的收发电路。
  • 支持应答机制:每个字节传输后都有 ACK/NACK 确认,提高数据可靠性。
  • 支持热插拔:开漏结构+上拉电阻,使得设备插拔时不会造成总线短路。
  • 支持低速和高速模式:标准模式 (100 kHz) 、快速模式 (400 kHz) 、高速模式 (3.4 MHz) 等,可按需求选择。

1.2.2 缺点

  • 通信速率较低:即便是高速模式也只有3.4 Mbps,远低于 SPI 等协议。
  • 总线电容限制传输距离:典型总线长度 < 1 m,线越长电容越大,信号边沿衰减严重。
  • 需要上拉电阻    SCL 和 SDA 均为开漏,需要外接上拉电阻,影响功耗与速率。
  • 协议复杂度比 SPI 高:需要起始位、地址位、应答位等控制信号,主机逻辑实现略复杂。
  • 占用总线风险:若从设备或主机异常 (拉低SDA不放),可能导致总线锁死。
  • 电气特性不兼容:各器件需在相同电平 (3.3 V或5 V) 下工作,否则需电平转换。

二、物理层

2.1 物理层定义

物理层是 OSI 模型的第一层 (最底层),它负责 在物理媒介上发送和接收原始比特流,也就是把 0 和 1 转换成实际可传输的信号。它完全和数据内容无关,只关注 信号如何在介质上传播。

物理层的主要定义有:

  • 电气特性:电压幅度、逻辑电平、信号极性 (高电平/低电平表示 0/1)
  • 传输速率:比特率 (bps) 或以太网的 (Mbps) 等
  • 物理拓扑:点对点 (串口) 、总线 (CAN)、星型 (以太网) 等
  • 传输模式 :单工、半双工、全双工

2.2 连线定义

2.2.1 连线定义

其连线定义非常简单,只需要两根信号线就能实现主从通信。下面详细说明:

引脚名称方向 (相对主机)功能说明
SCL输出时钟线,由主设备产生,用于同步数据传输
SDA双向数据线,在主从设备之间传输数据

2.2.2 拓扑结构

因地址限制,7 位地址模式最多有 128 个设备,保留 7 个地址:

地址范围用途
0x00通用呼叫(General Call)
0x01 ~ 0x02保留(CBUS,HSM)
0x03 ~ 0x07未来规范保留
0x78 ~ 0x7F用于 10-bit 地址扩展

因此在 7 位模式下可用地址约为 112 个,但是在 10 位地址下却有 1024 个地址。

但是 IIC 是开漏总线结构,总线电容 (所有设备 SDA、SCL 并联后的总电容) 会影响通信速度和稳定性。每个器件的 SDA/SCL 引脚大约有 10–20pF 电容,加上线缆、电路板走线电容,总线电容很快就上升,因此较为推荐的从机数量为:

速率模式最大总线电容实际可连接数量(估算)
Standard (100 kHz)400 pF数十个设备 (取决于引脚电容)
Fast (400 kHz)400 pF10~20 个设备较稳
Fast+ (1 MHz)550 pF一般不超过 10 个设备
High Speed (3.4 MHz)550 pF通常 3~5 个设备以内

2.3 通讯波形

2.3.1 起始信号与停止信号

起始信号

停止信号

2.3.2 数据波形

这时候,我们已经把整个写操作时序获取到,这样看肯定不清楚,所以我们可以通过时间档位进行放大。时间档位变为 10us 并通过水平偏移操作,放大波形如下:

S 就是经典的起始信号,当 SCL 线为高电平的时候,SDA 从高电平往低电平跳变 发送起始信号之后便是地址和方向组合的一个字节数据,这里就是0xA0。0xA0的由来可以查看一下IIC实验教程。

第九个时钟脉冲高电平期间便是检测应答信号,这里也是检测 IIC 有没有通信成功的地方。假如看到波形是有低电平,那么就证明从机应答了,否则就是没有应答,这时候你就需要检查第一个字节是不是应该发 0xA0。图中第九个时钟脉冲后,SDA 线出现绿色的小尖峰是由于从机发送完应答信号后,会释放 SDA 线,把总线的主动权交还给主机。这是正常现象。现在继续往后分析波形,通过水平偏移,把波形图整体往左移,如下:

这里传输的便是内存地址,前面也提到为地址 10 处,0xA0 即为 10,这里与你发送的是一致的内容,并且后面也能接收到从机返回的应答信号。继续通过水平偏移,查看剩下的波形内容。

这里传输的就是数据内容,通过波形分析,传输的数据为 0x41。‘A’的ASCII 码值就是 0x41,发送与实际一致。随后便是从机的应答信号,低电平表示应答,最后便是经典的P停止信号,在SCL线为高电平的时候,数据线从低电平往高电平跳变。以上就是分析IIC波形图的过程。

2.3 通讯距离与速率

通信速率模式标准名称典型速率实际稳定距离(估算)应用场景
Standard Mode (SM)标准模式100 kbit/s≈ 0.5 ~ 2 米板内、模块间通信
Fast Mode (FM)快速模式400 kbit/s≈ 0.3 ~ 1 米板内通信、较短排线
Fast Mode Plus (FM+)快速增强模式1 Mbit/s≈ 0.2 ~ 0.5 米传感器模块连接
High Speed Mode (HS)高速模式3.4 Mbit/s    < 0.1 米芯片间高速通信
Ultra Fast Mode (UF)超高速模式(少用)5 Mbit/s< 0.1 米单向高速数据采集

三、的数据链路层

3.1 数据链路层定义

物理层定义了 0 和 1 的信号形式。数据链路层则提供可靠的数据传输,进行帧的封装、错误检测、流量控制。

  • 帧封装:把目标数据封装成一帧 (Frame),加上帧头、帧尾,使接收方能识别帧的起止。
  • 物理寻址:每个链路设备都有一个地址,用于在同一总线中识别发送方和接收方。
  • 差错检测与纠正:CRC、奇偶校验等方式检测 (有时纠正) 比特错误。
  • 流量控制:控制发送速度,防止发送方过快导致接收方缓冲区溢出。
  • 重传控制:通过确认 (ACK) 机制与超时重传,提高传输可靠性。

其中 IIC 在数据链路层提供了帧封装、物理寻址、流量控制、重传控制。

3.2 IIC 的数据格式

3.2.1 IIC 固定格式

一帧固定的 IIC 数据格式如下:

名称符号作用由谁发出
起始条件S通讯开始主机
地址字节A指定目标设备主机
读写位R/W指示方向主机
应答位ACK/NACK确认接收状态从机/主机
数据字节D实际内容从机/主机
停止条件P通信结束主机

3.2.2 写数据

写数据流程如下:

3.2.3 读数据

在读数据中,我们需要先发送一条读命令,其包括我们希望读的寄存器地址。

之后再次发送一个起始位,这时候就是一条新的命令了,此条命令我们选择读数据帧,这时候从机便把我们的需要的数据发过来了。

为什么IIC的读数据会需要使用两条命令,这么奇怪呢?

因为IIC的数据传输方向由主机发出的 R/W 位决定。

也就是说:

  • 当主机发出 写操作 (R/W = 0) 时,数据线 SDA 的驱动权在主机;
  • 当主机发出 读操作 (R/W = 1) 时,SDA 的驱动权交给从机。

所以,当我们发送读数据位后,此时 SDA 的驱动权就交给了从设备 (SDA 是单线双向),主机就不能再发送数据了,所以我们使用重复起始信号,也就是两条 IIC 命令进行一次读操作。这是 IIC 对半双工通讯的一种妥协。

3.3 仲裁

仲裁是指多个主设备 (Master) 在同一时间内争夺总线控制权的过程。

IIC 协议允许多个主机同时连接到总线上,而不需要专门的硬件来分配主控权。但是,若多个主机同时发起通信,必须有一种机制来决定哪一个主机会赢得总线的控制权。‘

在 IIC 的物理层设计中:

SDA 和 SCL 都是 开漏输出 (open-drain) 集电极开路 (open-collector)

这意味着:IIC 器件不能主动输出高电平

此时,如果有两个设备同时竞争总线,率先拉低的设备会获取总线的控制器,如下图所示,DATA1在 ③ 阶段的总线 被 DATA2 拉低了,此时便失去了仲裁,不再发送数据。

四、IIC 的应用层

3.1 应用层定义

http://www.dtcms.com/a/566767.html

相关文章:

  • 如何在百度云上建设网站thinkphp集成wordpress
  • 济南正规的网站制作wordpress文章省略
  • 链表类力扣刷题总结
  • 网站建设工作室怎么开茂名网站开发公司
  • 衡阳建设学校官方网站广东省住房和城乡建设厅证件查询
  • 厦门做网站seo的网站应该如何进行优化
  • 白山商城网站建设wordpress默认原始图片
  • 做质量计量的网站有哪些博乐建设工程信息网站
  • 【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解
  • 东莞网站建设推广方案网站主题设计特色
  • 代做毕业设计网站有哪些网络整合营销推广
  • 嵌入式笔记系列——IIC
  • 网站维护一年一般多少钱视频链接生成器
  • wordpress网站好用吗专业的营销型网站定制
  • 离线推广网站规划书电子商务网站开发相关技术
  • 直接保存pandas DataFrame的内容到Excel文件中
  • excel T检测时[检验类型]参数设置的方法
  • 网站尾部做淘宝客可以有高佣金的网站
  • 成都网站建设四川推来客网络石家庄+外贸网站建设公司
  • 网站开发人员岗位wordpress调查插件
  • Python判断语句
  • 网站如何做微信登录网站顶部代码
  • 织梦网站首页模板路径广告平面设计好学吗
  • app开发网站开发成都较出名的广告公司
  • 可以直接打开网站的方法运城网站推广
  • 站内推广有哪些方式云南测绘公司最新排名
  • 常州便宜的做网站服务seo渠道
  • Linux基础常用命令
  • 西安网站建设产品浙江省建设信息港官网首页
  • VirtualBox 搭建 ubuntu