I2C总线的基本操作
出处:杨真人 发布于:2008-11-19 14:52:00
I2C总线上只具有SOL(时钟)和SDA(数据)2根信号线。如果是单纯的串行传输,一旦因为某种原因造成引脚的偏差,则可能会造成不能区分总线上传输的是数据还是地址信息的后果。解决上述问题的简单办法就是附加独立于总线的Reset(复位)信号,由主机控制该信号。因为I2C至少利用2根线进行所有的操作,因此在数据传输时,通常当SCL为低电平时,设置下一个数据;当SDA变化后,SCI为高电平,这可以解释为一连串操作的开始/结束。
1. 起始条件
始条件表示一系列操作的开始。图1表示起始条件以及随后数据传输的开始操作。在I2C总线的空闲状态下,SDA及SCL通过上拉电阻都为高电平。在这样的状态下,如果SCL仍保持高电平,而SDA变为低电平,则成为开始指令。

图1 I2C总线的起始条件
由于该状态并不出现于地址及数据的发送与接收过程中,因此,即使在途中发生异常,只要检测出该状态,初始化内部的状态机,就可以使其恢复。
2. 结束条件
在一系列操作的是结束条件。结束条件如图2所示。当SOL为高电平时,一旦SDA由低电平变化为高电平,即成为结束条件,主机与器件之间的通信将停止,器件恢复为空闲状态。进行写操作时的结束状态是开始进行EEPROM内部单元写操作的指示标志。

图2 I2C总线的结束条件
结束前所传输的数据是ACK/NoACK的状态位,如果是ACK,则该状态位为低电平。但如果发生某种错误时,则表示为NoACK的高电平。读操作时的字节是主机向器件返回NoˉACK信息,所以SDA为高电平。这样就不能形成结束条件所需要的SDA的上升沿,因此在结束之前需要加入哑元“0”数据位作为解决办法。
在终数据的ACK NoACK之后,主机通过下述的流程,形成结束条件,如下所述:
①SCL变为低电平;
②SDA变为低电平;
③SOL变为高电平(发送哑元数据);
④SDA变为高电平(结束条件)。
3. 数据传输
数据传输的流程如图3所示。除去开始与结束条件,在传输包含地址指定等数据时,能够使SDA发生变化的条件只能是在SOL为低电平时。因此,总线操作以如下的步骤进行:
①SCL变为低电平;
②为SDA设置数据(主机或者器件);
③SCL变为高电平。
进行数据读操作时,主机在SOL恢复为高电平之前读取数据。

图3 I2C总线的数据传输
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
上一篇:I2C总线与串行EEPROM
下一篇:I2C总线的写操作的流程
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- ARM技术架构与应用开发实践指南2026/1/6 10:40:19
- 嵌入式实时操作系统(RTOS)选型与移植技术指南2025/12/31 10:42:31
- 工业嵌入式系统:通信接口技术选型与抗干扰设计实践2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:开启异核通信新时代2025/7/22 16:27:29
- 一文快速了解OPENWRT基础知识2025/7/14 16:59:04









