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

IIC接口协议

I2C(Inter-Integrated Circuit) 是内部整合电路的称呼, 是一种串行通讯总线, 使用多主从架构, 由飞利浦公司在1980年为了让主板、 嵌入式系统或手机用以连接低速周边装置而发展。 I2C的正确读法为"I-squared-C" , 而"I-two-C"则是另一种错误但被广泛使用的读法, 在中国则多以"I方C"称之。 I2C 总线支持任何IC 生产过程(NMOS CMOS、 双极性) 。两线――串行数据(SDA) 和串行时钟 (SCL) 线在连接到总线的器件间传递信息。 每个器件都有一个唯一的地址识别(无论是微控制器——MCU、 LCD 驱动器、 存储器或键盘接口) , 而且都可以作为一个发送器或接收器(由器件的功能决定) 。

在 CPU 与被控 IC 之间、 IC 与 IC 之间进行双向传送, 高速 IIC 总线一般可达 400kbps 以上。

I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号

  1. 开始信号: SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。
  2. 结束信号: SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。
  3. 应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号, CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

IIC的特征

  1. 只要求两条总线线路: 一条串行数据线SDA(因此是半双工的), 一条串行时钟线SCL;
  2. 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址, 主机可以作为主机发送器或主机接收器;
  3. 它是多主机总线, 如果两个或更多主机同时初始化, 数据传输可以通过冲突检测和仲裁防止数据被破坏;
  4. 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s快速模式下可达400kbit/s高速模式下可达3.4Mbit/s
  5. 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制

7位寻址

在7位寻址过程中,从机地址在启动信号后的第一个字节开始传输,该字节的前7位为从机地址,第8位为读写位,其中0表示写1表示读

I2C总线规范规定,标准模式I2C,从机地址为7位长,其次是读/写位。第一个字节的头7位组成了从机地址, 最低位(LSB) 是第8 位, 它决定了传输的方向

第一个字节的第8位是“0”,表示主机会写信息到被选中的从机

第一个字节的第8位是“1” ,表示主机会向从机读信息。

当发送了一个地址后,系统中的每个器件都在起始条件后将头7 位与它自己的地址比较,如果一样,器件会判定它被主机寻址,至于是从机接收器还是从机发送器,都由R/W 位决定。

在起始信号后必须传送一个从机的地址(7位)1~7位为7位接收器件地址第8位为读写位,用“0”表示主机发送数据(W),“1”表示主机接收数据 (R),第9位为ACK应答位,紧接着的为第一个数据字节,然后是一位应答位,后面继续第2个数据字节

IIC的连接

  1. IIC可以接多个主设备,多个从设备(外围 设备)。如下图,存在多个主机、多个从机。

  1. 当多主机会产生总线裁决问题。当多个主机同时想占用总线时,企图启动总线传输数据,就叫做总线竞争。I2C通过总线仲裁,以决定哪台主机控制总线
  2. 上拉电阻一般在4.7k~10k之间,默认拉高

IIC总线最多可以挂多少个设备

由IIC地址决定,8位地址,减去1位广播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件

但是IIC协议没有规定总线上device最大数目,但是规定了总线电容不能超过400pF。管脚都是有输入电容的,PCB上也会有寄生电容,所以会有一个限制。实际设计中经验值大概是不超过8个器件

IIC的高阻态

漏极开路(Open Drain)即高阻状态,适用于输入/输出,其可独立输入/输出低电平和高阻状态,若需要产生高电平,则需使用外部上拉电阻

高阻状态:高阻状态是三态门电路的一种状态。逻辑门的输出除有高、低电平两种状态外,还有第三种状态——高阻状态的门电路。电路分析时高阻态可做开路理解。

为了避免总线信号的混乱,IIC的空闲状态只能有外部上拉, 而此时空闲设备被拉到了高阻态,也就是相当于断路, 整个IIC总线只有开启了的设备才会正常进行通信,而不会干扰到其他设备。

IIC的通信协议流程:

初始(空闲)状态

因为IIC的 SCL 和SDA 都需要接上拉电阻,保证空闲状态的稳定性

所以IIC总线在空闲状态下SCL 和SDA都保持高电平

开始信号

SCL保持高电平,SDA由高电平变为低电平后,延时(>4.7us),SCL变为低电平。

停止信号

停止信号:SCL保持高电平。SDA由低电平变为高电平

数据传输中

在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线;而在停止条件产生后,本次数据传输的主从设备将释放总线,总线再次回归空闲状态

数据有效性

IIC信号在数据传输过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。SCL=1时 数据线SDA的任何电平变换会看做是总线的起始信号或者停止信号。也就是在IIC传输数据的过程中SCL时钟线会频繁的转换电平,以保证数据的传输

据传送格式

SDA线上的数据在SCL时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线SDA上的“高”或“低”状态才可以改变。输出到SDA线上的每个字节必须是8位,数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9)。

当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位ACK, 此时才认为一个字节真正的被传输完成 ,如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

应答信号

每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据,

  1. 应答信号:主机SCL拉高,读取从机SDA的电平,
  2. 应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节;
  3. 应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

应答出现在每一次主机完成8个数据位传输后紧跟着的时钟周期,低电平0表示应答,1表示非应答

http://www.jsqmd.com/news/899395/

相关文章:

  • 2026年昆明地区合规办学的少儿美术培训机构核心能力全景梳理分析 - 云南美术头条
  • 三角洲行动终极技巧:巧用QQ音乐代替OBS“神级”走位,实现完美枪枪锁头!ace-trump-tech DeltaForce-OBS-Locker项目介绍
  • 【ChatGPT决策辅助工具黄金标准】:基于ISO/IEC 23894风险框架的7维可信度评估矩阵(附可下载评分表)
  • 2026年全球道路施工企业环保型沥青搅拌设备选购避坑手册:铁拓机械等品牌全维度对比 - 资讯纵览
  • 2026年Q2昆明区域美术培训行业发展现状与本土优质机构梳理分析 - 云南美术头条
  • 2026实测横评:免费版视频去除水印工具推荐
  • 从零实战:基于BC35-G与AT指令的NB-IoT设备接入OneNET平台全解析
  • DeepSeek 价格下来了,但真正该看重的,是这件事
  • 价值锚点错位,ROI归零!ChatGPT项目90%夭折的根源,及价值主张重构四象限诊断法
  • Python 开发者三分钟接入 Taotoken 调用 OpenAI 兼容 API
  • RL-ARM TCPNET PPP客户端IPCP协议支持解析与工程实践
  • 抖音去水印怎么弄?抖音如何去掉水印?2026年亲测好用的去水印方法全整理 - 爱上科技热点
  • WeChatMsg:微信聊天记录永久保存与智能分析,让数字记忆永不褪色
  • 大模型基础课:模型、参数、训练与推理的深度解析
  • 从过度工程到务实设计:后端架构模式的真实价值
  • ChatGPT风险不再靠经验判断:用这套经ISO/IEC 23894认证的9×9评估矩阵,3步完成自动化风险热力图生成
  • 深入浅出 LoongSuite Python Agent:让你的 AI 应用「透明化」(下篇)
  • 2026毕业季降AI神器红黑榜:4款降AI率工具哪个能精准去除论文AI痕迹! - 我要发一区
  • 如何在5分钟内为你的游戏构建智能匹配系统:TrueSkill实战指南 [特殊字符]
  • 亲测丝滑,体验跃迁|AllData数据模型管理,解锁高效建模新姿势
  • 免费版视频去除水印工具推荐:电脑端手机端实测横评
  • 2026财务分析师岗位必备能力及培养技巧
  • 吉客云与金蝶云星辰业财一体化集成方案
  • 从0到1:一套完整生产落地Agent技术栈,独立开发者/产品必备!
  • AI Agent Harness Engineering 的“寒武纪大爆发”即将到来?
  • (双85测试)温度85℃、相对湿度85% RH 环境可靠性模拟试验
  • JAVA第五课:面向对象入门(类、对象、成员变量、成员方法)
  • “我贡献了70%的代码,项目却挂了别人的名字”:一个测试开发的职场困局与破局
  • 【仅剩83份】ChatGPT企业内训材料生成器(含12个垂直领域微调提示链+GDPR/等保2.0合规标注模块)
  • 企业级AI平台架构范式转变:从技术堆砌到价值驱动的RuoYi-AI实践