通信协议——I2C协议/IIC协议解析

article/2025/8/16 21:39:11

目录

I2C协议概述

I2C通信原理

I2C通信时序


I2C协议概述

同步通信 半双工(分时) 串行传输 电平信号

特点:①有两根传输线(时钟线SCL、双向数据线SDA)

  ②主从模式:通信双方为主设备(Master)和从设备(Slave),在总线上的每一个设备都可以作为主设备或从设备,但一个总线上一般只有一个主设备和多个从设备。主设备是用来产生允许传输的时钟信号,并初始化总线的数据传输,所以主设备通常是CPU,而从设备只能被动相应主设备发起的通信请求,所以各种I2C接口芯片作为从设备使用

  ③I2C上每个从设备都有7bit的物理地址(MSB),且该地址是唯一的,固化在芯片上,可以从datasheet中获取。I2C地址中全0为广播地址,所以I2C总线上理论可以有2^7-1个从设备


I2C通信原理

通过对SCL和SDA线高低电平时序的控制,来产生协议信号进行数据的传递。在I2C总线上传递的每一位数据都由一个同步时钟脉冲相对应,即在SCL串行时钟的配合下,数据在SDA上从高位向低位依次串行传送每一位的数据。


I2C通信时序

1)起始位 (主设备发起)

I2C总线在空闲的时候,两根传输线都是高电平(通过上拉电阻变成高电平)。当要开始通信的时候,主设备就发起一个START(S)信号,告诉所有的从设备准备开始通信。当要结束通信的时候,主设备会发起一个STOP(P)信号结束此次通信。

  1. 起始位:当SCL保持高电平时,SDA产生一个下降沿,从而发起一个起始位
  2. 停止位:当SCL保持高电平时,SDA产生一个上升沿,从而发起一个停止位

 

2)读写地址

主设备在第一时序中发起START信号,在第二个时序要紧跟从设备的地址。除了从设备的地址7bit之外,还要加上一位作为读写位(0表示写、1表示读)。所以相当于从设备读地址是为一个字节,高7位是从设备物理地址,最低位表示读写状态。

例如: 0x44<<1 | 1 表示读 0x44<<1 表示写

 

3)应答信号

当主机在总线上传输从设备地址时,各个从设备开始进行地址匹配,如果地址匹配成功,那么从设备将发出ACK应答信号。当主机收到应答信号,则表示通信成功建立,否则表示寻址失败。

地址匹配从设备发送应答信号,在第九个时钟,然后这时候发送端是释放SDA线控制权(注意:这里是主设备内部上拉,不是外部上拉电阻,因为如果是外部,从设备无法下拉电阻,没有控制权),将SDA拉高,由接收方控制。

  1. 若要继续通信,从设备发出ACK应答信号,即是SDA为低电平
  2. 若不要继续通信,从设备发出NAK非应答信号,即是SDA为高电平

 

4)数据位收发

主机收到从设备应答信号之后,开始给从设备发送数据,SDA数据线上的每个字节必须是8位,并且是以MSB方式发送,每次传输的字节数量没有限制,但是每个字节发送完成之后,从机都要发送一个应答信号,代表是否继续通信。

发送数据位的时候,高电平代表数据位为1,低电平代表数据位为0。当传输的数据位发生变化时(由1变为0、由0变为1),此时必须要确保SCL保持低电平。

 

5)主机发送数据流程

  1. 当总线空闲的时候,主机发送一个起始信号S,代表开始通信
  2. 主机接着发送一个从机的物理地址7bit和一位读写控制位(0为写、1为读)
  3. 从机进行地址匹配,匹配成功后发送一个应答信号ACK(低电平为0)
  4. 主机收到应答信号,接着开始发送第一个字节的数据
  5. 从机收到数据后返回一个ACK
  6. 主机收到应答信号后,接着发送下一个字节
  7. 当主机发送完最后一个字节,并且接收到从机的应答信号时,接着发送一个停止信号P结束通信,并且释放总线
  8. 从机收到P信号之后也推出和主机之间的通信

 

6)主机接收数据流程

  1. 当总线空闲的时候,主机发送一个起始信号S,代表开始通信
  2. 主机接着发送一个从机的物理地址7bit和一位读写控制位(0为写、1为读)
  3. 从机进行地址匹配,匹配成功后发送一个应答信号ACK(低电平为0),接着开始发送第一个字节数据
  4. 主机收到数据之后向从机返回一个ACK
  5. 从机收到应答信号后,接着发送下一个字节
  6. 当主机接收完数据之后,向从机发送一个NAK信号,从机收到非应答信号后停止发送数据
  7. 主句发送ACK之后,发送一个停止信号结束通信,并释放总线

 

Ps:主机接收数据的时候,就是Master控制时钟线,当有一个脉冲的时候,从设备就发送一个位的数据。因为是MSB,所以收到一个数据就左移一位,主机收到一个字节的数据后,就给从机发一个应答信号。

典型代表:SHT20温湿度传感器、SHT30温湿度传感器、OLED显示屏、RTC、触摸屏

SHT20温湿度传感器工作原理


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

相关文章

I2C基础

I2C基础 1 基本介绍2 特点3 硬件连接4 通信4.1 控制器4.2 协议 5 SPI VS I2C 1 基本介绍 IC (Inter-Integrated Circuit)。内部集成电路。拥有两根线&#xff0c;一根数据线SDA和一根时钟线SCL。 这两条线都是漏极开路或者集电极开路结构&#xff0c;使用时需要外加上拉电阻&a…

I2C总线协议

1. 简介 I2C (Inter-Integrated Circuit&#xff09;&#xff0c;是一种串行通信总线&#xff0c;用于连接微控制器及其外围设备&#xff0c;实现主控制器和从器件间的主从双向通信&#xff0c;是一种同步半双工通信(两端时钟频率一致&#xff0c;双向通信&#xff0c;但不能同…

I2C协议最细致的讲解

I2C通讯协议(Inter—lntegrated Circuit)是由Phiilps公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性强&#xff0c;不需要USART、CAN等通讯协议的外部收发设备&#xff0c;现在被广泛地使用在系统内多个集成电路(IC)间的通讯。 I2C物理层的特…

沧小海详解面试的必答题——I2C协议

目录 第一部分&#xff1a;I2C协议的概述 第二部分&#xff1a;I2C协议的阐述 第三部分&#xff1a;AT24C04简述 第四部分&#xff1a;基于verilog的程序设计&#xff08;暂无&#xff09; 对于大多从事FPGA行业的应届生来说&#xff0c;在面试过程中很可能会被问到关于I2C…

51单片机模拟I2C协议

什么是I2C 首先需要知道什么是I2C协议。I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息&#xff08;摘自百度百科&#xff09;。I2C主要有两条线&#xff0c;一条SDA数据线&#xff0c;一条SCL时钟线。由…

I2C协议原理讲解

一、物理层&#xff1a; 1、I2C通讯设备之间的常用连接方式&#xff1a; 2、特点&#xff1a; (1) 它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个I2C通讯总线中&#xff0c; 可连接多个I2C通讯设备&#xff0c;支持多个通讯主机及多个通讯从机。 (2) 一个…

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

I2C是什么 I2C总线是由飞利浦在80年代初设计的&#xff0c;以允许位于同一电路板上的组件之间能够轻松通信。其大大简化了电路的设计&#xff0c;早期的电视机中很多地方用到了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 协议 最后代码已上传&#xff01;&#xff01;&#xff01;&#xff01;   代码文章链接    github 代码链接在该文章最后 I2C 简要介绍 I2C 总线&#xff08;I2C bus&#xff0c;Inter-IC bus&#xff09;是一个双向的两线连续总线&#xff0c;提供集成电路&#xf…

通俗易懂的I2C协议

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

I2C 协议图文解析

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

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

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

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

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

I2C协议详解

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

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

【总线】I2C 通信协议

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

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

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

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

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