I2C协议原理讲解

article/2025/8/16 21:40:36

一、物理层:

1、I2C通讯设备之间的常用连接方式:
在这里插入图片描述
2、特点:
(1) 它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个I2C通讯总线中, 可连接多个I2C通讯设备,支持多个通讯主机及多个通讯从机。

(2) 一个I2C总线只使用两条总线线路,一条双向串行数据线(SDA) , 一条串行时钟线 (SCL)。数据线即用来表示数据,时钟线用于数据收发同步。

(3) 每个连接到总线的设备都有一个独立的地址, 主机可以利用这个地址进行不同设备之间的访问。

(4) 总线通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态, 而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。

(5) 多个主机同时使用总线时,为了防止数据冲突, 会利用仲裁方式决定由哪个设备占用总线。

(6) 具有三种传输模式:标准模式传输速率为100kbit/s ,快速模式为400kbit/s , 高速模式下可达 3.4Mbit/s,但目前大多I2C设备尚不支持高速模式。

(7) 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制。

二、协议层

1、I2C的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。

2、SCL–控制线—时钟线:
SDA线—双向的数据线:
I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

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

这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

SCL\SDA是2C总线的信SDA是双向数据线SCL是时钟线SCL在2C总线上传送数据首先送最高位由主机发出启动信SDA在SCL高电平期间由高电平跳变为低电平然后由主机发送个字节的数据数据传送完毕由主机发出停止信号,SDA在SCL高电平期间由低电平跳变为高电平。

所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是漏极开路(OD)输出或集电极开路(OC)输出。设备上的串行数据线SDA接口电路应该是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。
而串行时钟线也应是双向的,作为控制总线数据传送的主机,一方面要通过SCL输出电路发送时钟信号,另一方面还要检测总线上的SCL电平,以决定什么时候发送下一个时钟脉冲电平。

3、通讯过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上图表示的是主机和从机通讯时,SDA线的数据包序列。

其中S表示由主机的I2C接口产生的传输起始信号(S),这时连接到I2C总线上的所有从机都会接收到这个信号。

起始信号产生后,所有从机就开始等待主机紧接下来广播 的从机地址信号 (SLAVE_ADDRESS)。在I2C总线上, 每个设备的地址都是唯一的,当主机广播的地址与某个设备地址相同时,这个设备就被选中了,没被选中的设备将会忽略之后的数据信号。 根据I2C协议,这个从机地址可以是7位或10位。

在地址位之后,是传输方向的选择位,该位为0时,表示后面的数据传输方向是由主机传输至从机,即主机向从机写数据。该位为1时,则相反,即主机由从机读数据。

从机接收到匹配的地址后,主机或从机会返回一个应答(ACK)或非应答(NACK)信号,只有接收到应答信号后,主机才能继续发送或接收数据。

三、数据传输协议

主设备和从设备进行数据传输时遵循以下协议格式。数据通过一条SDA数据线在主设备和从设备之间传输0和1的串行数据。串行数据序列的结构可以分为,开始条件,地址位,读写位,应答位,数据位,停止条件。如下图:

在这里插入图片描述

1、开始条件

当主设备决定开始通讯时,需要发送开始信号,需要执行以下动作;

先将SDA线从高压电平切换到低压电平;
然后将SCL从高电平切换到低电平;

在主设备发送开始条件信号之后,所有从机即使处于睡眠模式也将变为活动状态,并等待接收地址位。

2、地址位

通常地址位占7位数据,主设备如果需要向从机发送/接收数据,首先要发送对应从机的地址,然后会匹配总线上挂载的从机的地址;

I2C还支持10位寻址;

3、读写位

该位指定数据传输的方向;

如果主设备需要将数据发送到从设备,则该位设置为 0;
如果主设备需要往从设备接收数据,则将其设置为 1 。

4、ACK / NACK

主机每次发送完数据之后会等待从设备的应答信号ACK;

在第9个时钟信号,如果从设备发送应答信号ACK,则SDA会被拉低;
若没有应答信号NACK,则SDA会输出为高电平,这过程会引起主设备发生重启或者停止;

5、数据块

传输的数据总共有8位,由发送方设置,它需要将数据位传输到接收方。

发送之后会紧跟一个ACK / NACK位,如果接收器成功接收到数据,则设置为0。否则,它保持逻辑“ 1”。

重复发送,直到数据完全传输为止。

6、停止条件

当主设备决定结束通讯时,需要发送开始信号,需要执行以下动作;

先将SDA线从低电压电平切换到高电压电平;
再将SCL线从高电平拉到低电平;

欢迎关注技术公众号,获取更多硬件学习干货!
在这里插入图片描述
我们能为你提供什么?

技术辅导:C++、Java、嵌入式软件/硬件

项目辅导:软件/硬件项目、大厂实训项目

就业辅导:就业全流程辅导、技术创业支持

对接企业HR:培养输送优质性人才


http://chatgpt.dhexx.cn/article/lAtVGg9C.shtml

相关文章

一文搞懂I2C协议-硬件基础

I2C是什么 I2C总线是由飞利浦在80年代初设计的,以允许位于同一电路板上的组件之间能够轻松通信。其大大简化了电路的设计,早期的电视机中很多地方用到了I2C这种通信方式。飞利浦半导体于2006年迁移到了NXP。I2C名称翻译为“ Inter IC”。有时&#xff0…

I2C协议+实现源码

文章目录 摘要I2C通信协议简介补充空闲状态start和stop信号应答信号数据有效性规定数据传输延时 I2C协议的实现源码硬件说明头文件sys.h 主函数初始化I2C产生开始和停止信号等待应答信号产生或不产生应答I2C写操作I2C读操作 对24C02操作24C02的时序图头文件初始化IIC接口写数据…

学习笔记8-I2C协议

目录 一、关于I2C二、硬件结构三、I2C协议3.1、I2C的三种状态3.2、数据有效性3.3、应答信号3.4、总线时序3.5、读写时序3.5.1、读3.5.2、写 3.6、死锁3.7、仲裁 四、软件I2C&硬件I2C五、AT24C02六、代码编写6.1、I2C初始化6.2、开始信号6.3、ACK/NACK信号6.4、发送1byte数据…

I2C 协议 代码详解

I2C 协议 最后代码已上传!!!!   代码文章链接    github 代码链接在该文章最后 I2C 简要介绍 I2C 总线(I2C bus,Inter-IC bus)是一个双向的两线连续总线,提供集成电路&#xf…

通俗易懂的I2C协议

关注v-x-公-众-号:【嵌入式基地】 后-台-回-复:【电赛】 即可获资料 回复【编程】即可获取 包括有:C、C、C#、JAVA、Python、JavaScript、PHP、数据库、微信小程序、人工智能、嵌入式、Linux、Unix、QT、物联网、算法导论、大数据等资料 I2C总…

I2C 协议图文解析

转自:https://blog.csdn.net/EastonWoo/article/details/52712826 i2c协议注意几点就很好的使用它: 1)由一个主设备,一个或多个从设备组成,所有的信号发起都是由主设备发起,从设备根据这些信号做一些应答。…

I2C协议---I2C时序图解析

一、I2C协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地 使用在系统内多个集成…

I2C协议——物理层和协议层

I2C协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)…

I2C协议详解

I2C协议详解 一、I2C协议简介 I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件…

I2C协议概述

目录 IntroductionFeaturesStandard-mode, Fast-mode and Fast-mode Plus I2C-bus protocols1. SDA and SCL signals2. SDA and SCL logic levels3. Data validity4. START and STOP conditions5. Byte format6. Acknowledge (ACK) and Not Acknowledge (NACK)7. Clock synchro…

I2C协议(详细)

I2C通讯协议(Inter-Integrated Circuit)引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。实现I2C需要两根信号线完成信息交换&#xff…

【总线】I2C 通信协议

目录 I2C 总线协议概述 参数总结 I2C 的工作原理 寻址 读/写位 数据帧 I2C数据传输的步骤 具有多个从机的单个主机 具有多个从机的多个主机 I2C的优缺点 优点 缺点 文章参考 I2C 总线协议概述 I2C 总线广泛应用在 OLED 显示器、气压传感器或陀螺仪/加速度计模块的…

【数字IC】深入浅出理解I2C协议

深入浅出理解I2C协议 一、什么是I2C协议二、I2C,SPI,UART协议的区别三、I2C的信号线四、I2C的连接方式4.1 单主设备,单从设备4.2 单主设备,多从设备4.3 多主设备,多从设备 五、I2C的数据传输格式5.1 空闲位5.2 起始位5.3 地址位与读写控制5.4…

I2C协议靠这16张图彻底搞懂(超详细)

文章目录 背景硬件层数据传输协议实际上如何工作?单个主设备连接多个从机多个主设备连接多个从机如何编程?总结 背景 IC(Inter-Integrated Circuit),中文应该叫集成电路总线,它是一种串行通信总线&#xf…

奇安信SSL VPN详细配置步骤

1、网络接口配置(GE2接口配置,GE1调试接口) 2、静态路由配置(网络配置-网络路由-IPv4路由) 3、NC的IP地址池添加(SSL-VPN-应用设置-IP地址池-虚拟地址池添加) 4、用户和组的添加 5、NC设置 6、…

防火墙之IPSec VPN实验

防火墙IPSec VPN实验 原理概述: 指采用IPSec协议来实现远程接入的一种VPN技术,IPSec全称为Internet Protocol Security,是由Internet Engineering Task Force (IETF) 定义的安全标准框架,在公网上为两个私有网络提供安全通信通道,通过加密通道…

如何使用Xshell7连接学校虚拟机(保姆级)

如何使用Xshell7连接学校虚拟机(保姆级) 文章目录 如何使用Xshell7连接学校虚拟机(保姆级)一、前言二、连接学校VPN三、使用学校平台建立虚拟环境四、配置OpenVPN客户端五、使用Xshell连接虚拟机1、新建会话2、设置新建会话属性2、…

密码应用体系建设(政务方向)

一、背景 密码是保障网络与信息安全的核心技术和基础支撑,是解决网络与信息安全问题最有效、最可靠、最经济的手段。《密码法》的颁布实施,从法律层面为开展商用密码应用提供了根本遵循,《国家政务信息化项目建设管理办法》的颁布实施&#…

OSI七层网络协议

在前一篇博客运维往事 一次负载均衡坏点检测事故中我提到了在生产环境中在第四层和第七层做healthCheck,这个第四层和第七层到底是什么意思呢?除了第四层第七层之外,其他的几层到底是什么?这几层到底做了啥?   OSI把…

网络七层协议,五层协议概述

一、七层协议: 1、应用层: 针对特定应用的协议(如:电子邮件协议E-mail、远程登录协议SSH,文本传输协议FTP、网络请求协议HTTP) 2、表示层: 信息的语法语义以及它们的关联,如加密…