I2C总线协议

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

1. 简介

      I2C (Inter-Integrated Circuit),是一种串行通信总线,用于连接微控制器及其外围设备,实现主控制器和从器件间的主从双向通信,是一种同步半双工通信(两端时钟频率一致,双向通信,但不能同时进行数据收发)。

2. 原理

      I2C通信属于串行通信,具有两根串行信号线:数据线(SDA),时钟线(SCL)。如下图所示,主控制器与从器件(一个或多个)都通过两根信号线连接,信号线上主机和从机都可以扮演发送器和接收器的角色。为确保传输过程的指向准确性,每个接到I2C总线上的器件都有唯一的地址(7位从器件专用地址码),可实现制定从机的定向传输与群发传输。
图1,I2C总线物理拓扑图

2.1 信号类型

      同时,为确保传输稳定,所有连接在同一I2C总线上的设备共用一个时钟。I2C 总线在传送数据过程中共有以下几种类型信号:
(1) 开始信号/结束信号

  • SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
  • SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
    在这里插入图片描述在这里插入图片描述

(2) 应答信号/非应答信号

  • IIC 总线协议规定,每传送一个字节数据后(8bit),都要有一个应答信号以确定数据传送是否被对方收到。即一个字节传输的8个时钟过后的第9个时钟期间,接收器必须回一个ACK应答信号给发送器,这样才能进行数据传输。
  • 应答信号由接受设备产生,在SCL为高电平期间,接受设备将SDA拉低为低电平,表示数据传输正确,产生应答(ACK),SDA拉高则表示数据传输失败,产生非应答位(NACK)。
    在这里插入图片描述

(3) 闲置状态/被占用状态

  • 在主机发送起始信号后,且未发送终止信号期间,总线处于被占用状态。
  • 发送终止信号后,总线处于闲置状态,SCL与SDA同时为高电平。
    在这里插入图片描述

2.2 总线读写流程

      I2C总线进行数据传送时,SCL时钟信号为高电平期间,SDA数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 当一个字节按数据位从高位到低位的顺序传输完后,紧接着从机将拉低SDA线,回传给主设备一个应答位ACK, 此时才认为一个字节真正的被传输完成 ,如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。
I2c总线写通信过程:

  • 主机在检测到总线空闲的状况下,首先发送一个START信号掌管总线;
  • 发送一个地址字节(8 bit),其中bit0-6位为从机地址,存放从机唯一地址;bit7位为读写位(R/W),0表示write主机 ->从机,1表示read 从机->主机;
  • 主机发送地址时,总线上每个从机都会将7位地址与自己的地址进行比较,若相同,则将匹配成功,发送应答信号(ACK),确定发送器和接收器;
  • 主机收到ACK后开始发送第一个字节(Command),对应从机中要写入的寄存器;
  • 从机接收到Command后,从机发送ACK;
  • 主机收到ACK后开始发送第一个数据字节:bit0-7(8bit数据,高到低),从机收到数据后,发送应答ACK;
  • 继续发送数据,n帧;
  • 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;
    *ps 丛机寻址方式除了常规的7位寻址外,还有10位寻址方式,通过两个字节发送,并在第一个字节高位添加固定标志数据以坐区分寻址方式。
    图2,I2C总线写通信过程
    I2c总线读通信过程:
  1. 主机产生START信号,随后发送从机地址(7bit)+0(Write);
    *方向仍然是写,待接收到从机发送的ACK应答后,配对成功。
  2. 主机接收到ACK后,发送8bit内存地址(Command对应从机相应寄存器地址),从机接收到后,内部寻址并提取数据,返回ACK;
  3. 主机接收到ACK后,重新产生START信号,再一次发送从机内存地址,(7bit)+1(Read),从机接收到后返回ACK;
    *方向设置为读,主机设置为接收模式
  4. 主机接收到ACK后,做好接收从机信息的准备,现在即可接收1bit的数据。
    *主机不向从机发送应答信号,接收完毕后直接发起终止信号。
  5. 主机接收全部数据后,产生STOP信号,终止通信,总线变为闲置状态。
    图3, I2C总线读通信过程

3. 应用实例:I2C控制温感IC

以温度传感器MAX1617A为例,对照手册可查找到以下数据:

  • Command 寄存器对照表如下,可根据Command表查找从机对应寄存器地址。
    图6, MAX1617A Command 寄存器对照表

  • 温度数据返回格式如下所示:图7, MAX1617A 数据格式

通过以上数据,我们即可有思路,对照写入读写过程:

  • 写入时,输入Command 使用: 0x0B,0x0C 写入温度上限与下限值;
  • 读取时,输入Command使用:0x00,0x05,0x06 读当前温度,与前面设置的温度上限与下限值;

逻辑分析仪数据采样如下所示:

  • 写入过程:
    在这里插入图片描述
    0x30为 从机地址0x18<<1 + 读写位(0);
    0x0B为 Command,对应从机寄存器存放地址;
    0x00位 将写入的数据;
    波形如下所示:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 读取过程:
  1. 读当前温度
    在这里插入图片描述
    读过程中,方向先为写入,后为读取
    0x31,为 从机地址0x18<<1 + 读写位(1);
    0x1A,为返回温度值,换算得到正好是小编当前温度26度。
    在这里插入图片描述
    在这里插入图片描述

  2. 读温度上限:

       在这里插入图片描述
       在这里插入图片描述

       在这里插入图片描述

3.读温度下限:
       在这里插入图片描述
       在这里插入图片描述

       在这里插入图片描述


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

相关文章

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…

奇安信SSL VPN详细配置步骤

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

防火墙之IPSec VPN实验

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