I2C协议初识

在嵌入式系统中,我们常见I2C作为板级通信,那实际情况I2C只能做板级通信吗?本文将从什么是I2C通信,I2C协议的核心规则、I2C协议的主要应用场景三方面展开介绍

一、什么是I2C协议

I2C协议(Inter-Integrated Circuit集成电路总线),是一种串行、半双工、多主多从 的通信协议。

它的核心特点是信号少、硬件实现简单、寻址灵活 ,广泛应用于嵌入式系统中芯片间的短距离通信--这也是常说的"板级通信的简洁性 "。

I2C总线仅需两根信号线就可以完成数据的传输,无需额外的片选线,简化了硬件连接:

名称 作用
SDA(Serial Data Line) 串行数据线,用于传输实际的数据和地址信息
SCL(Serial Clock Line) 串行时钟线,由主设备产生时钟信号,同步数据的收发节奏

两根总线都需要外接上拉电阻,保证总线在空闲状态处于高电平。

二、I2C协议的核心规则

1、数据传输时序

I2C是以字节(8位)为最小传输单元 ,每传输一个字节后必须伴随1位"应答位(ACK/NACK)",这是判断单字节是否传输完成的核心依据,整帧/整会话的完毕则基于主设备发送的"停止信号"或从设备的非应答NACK

名称 含义
起始信号 在SCL保持高电平时,主设备拉齐SDA(即由高电平变为低电平),则意味通信开始
地址与读写位 主设备先发送7位从设备地址,再发送1位读写位(1:读,0:写),从设备匹配地址后返回应答信号(ACK)
数据传输 地址匹配后,主从设备按照字节进行数据传输,每个字节后都需要应答信号确认。
停止信号 主设备在SCL高电平时,拉高SDA,则意味着通信结束。

2、主从架构

设备 作用 常见设备
主设备 负责发起通信、产生始终信号、控制通信的起始和停止 单片机(如STM32)
从设备 拥有唯一的7位或10位地址,被动响应主设备的指令,只能在主设备允许时发送数据 各种低速外围器件(温湿度传感器、存储器芯片(RTC)、显示器控制器(OLED、液晶显示模块))

3、多主多从架构

一条I2C总线上可以挂载多个主设备、多个从设备,当多个主设备同时请求总线时,会通过总线仲裁机制避免冲突,保证通信有序。
总线仲裁是通过检测SDA上自身发送的电平来判断是否发生总线"冲突"

多个主设备对总线实施控制是平等的,没有优先级别

总线控制遵循"低电平优先"的原则(即谁先发送低电平谁就掌握对总线的控制器)

三、主要应用场景

由于简单、灵活、占用引脚少的特点,I2C协议主要 用于同一个电路板上的芯片间短距离通信,但并非只能用于板级通信(板级通信是其最主流、最原生适配场景)。

1、板级通信(<10cm)

在板级I2C稳定、也不需要额外设计场景(直接用两根线+上拉电阻),但是物理层缺陷直接导致I2C板级通信是主战场

原因 解析
传输距离短 原生 I2C(无任何优化)的有效距离通常≤1 米(标准模式下),主要因为两根总线时"开漏输出+上拉电阻"的设计,距离越长,信号衰减、延迟越严重,容易出现时许错乱
抗干扰能力弱 SDA/SCL是普通单端信号线(无查分平衡设计),对电源噪声、电磁干扰(EMI)敏感(板级芯片间距离近--常常几cm,干扰小,能规避这个问题)
总线负载受限 I2C总线的电容负载(设备引脚电容、线缆分布电容)需要控制在100pF以内(标准模式) ,线缆越长,分布电容越大,超过阈值后信号无法正常跳变

2、非板级通信

通过物理层优化、协议适配,I2C也能实现短距离线缆通信(跨板、跨设备)

通信场景 I2C是否可行 关键条件 典型场景
短距离跨板/跨设备通信(1-5m) 可行(需要优化) 选用低电容线缆(eg屏蔽线),减少分布电容;降低通信速率,提升抗干扰能力;必要时添加总线缓冲器(eg:PCA965)扩展总线驱动能力和负载容量 通过屏蔽线连接外置温湿度传感器;工业控制器的主板和扩展板总线互联
中长距离通信(5-100m) 不推荐原生I2C 该用I2C转RS485/CAN;或直接用RS485或CAN 通过专用模块将I2C信号转为485信号,跨设备传输后再转回I2C;使用专门的I2C差分收发器;通过I@C-CAN模块实现协议转换

对于工业距离大于100m,建议优先选用485、CAN、Modbus等工业总线。

综上所述:I2C的核心优势是板级通信,距离过远I2C优势会快速减弱,建议选择远距离/抗干扰设计的总线(RS485、CAN),不要强行使用I2C扩展。

相关推荐
tianyue1003 小时前
STM32G431 ADC 多个channel 采集
stm32·单片机·嵌入式硬件
longson.4 小时前
怎样避免空间碎片而且高效的分配空间
嵌入式硬件·缓存
清风6666664 小时前
基于单片机的水泵效率温差法测量与报警系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
焦糖码奇朵、5 小时前
课设:基于Arduino的无线LED开关控制系统
嵌入式硬件·物联网·arduino·信息与通信·信号处理
z20348315206 小时前
定时器练习报告
单片机·嵌入式硬件
zk006 小时前
内容分类目录
单片机·嵌入式硬件
安生生申6 小时前
STM32 ESP8266连接ONENET
c语言·stm32·单片机·嵌入式硬件·esp8266
广药门徒6 小时前
电子器件烧毁的底层逻辑与避坑指南
单片机·嵌入式硬件
我先去打把游戏先10 小时前
TCP、TLS、HTTP、HTTPS、MQTT、MQTTS几种网络协议的对比与解释
嵌入式硬件·mcu·物联网·网络协议·tcp/ip·http·aws
IT方大同10 小时前
实时时钟RTC
嵌入式硬件·实时音视频