理解I2C总线规范

前言:

I2C 总线,也可写作IIC总线(Inter-Integrated Circuit),是一种非常流行且功能强大的总线,用于主设备(或多个主设备)与单个或多个从设备之间的通信。图 1 说明了有多个不同的外设可以共享一条仅通过 2 根信号线(还需要一个参考地线)连接到处理器的总线,这是 I2C 总线与其他接口相比可以提供的最大优势之一。
本文解释I2C 总线规范的工作原理。
图 1 显示了嵌入式系统的典型 I2C 总线,其中使用了多个从设备。微控制器代表 I2C 主机,并控制 IO 扩展器、各种传感器、EEPROM、ADC/DAC等。所有这些都仅由主机的 2 个引脚控制。
I2C 总线示例

图1 I2C总线示例

1. 电气特性

I2C 使用漏极开路或集电极开路,在同一条线路上有一个输入缓冲器,允许单条数据线用于双向数据流。

1.1 用于双向通信的漏极开路

漏极开路是指一种输出类型,它可以将总线拉低到电压(在大多数情况下是接地),也可以“释放”总线并使其被上拉电阻拉起。如果总线被主机或从机释放,线路上的上拉电阻 (RPU) 负责将总线电压拉至电源轨。由于任何设备都不能在线路上强制高电平,这意味着总线永远不会遇到通信问题,即一个设备可能尝试传输高电平,而另一个设备传输低电平,从而导致短路(电源轨对地)。I2C 要求,如果多主机环境中的主设备传输高电平,但看到线路为低电平(另一个设备正在将其拉下),则由于另一个设备正在使用总线而停止通信。推挽式接口不允许这种自由度,这是 I2C 的一个优势。

SDA/SCL线的基本内部结构

图2 SDA/SCL线的基本内部结构

图2显示了SDA/SCL线路上从器件或主器件内部结构的简化视图,该结构由一个用于读取输入数据的缓冲器和一个用于传输数据的下拉FET组成。器件只能将总线线拉低(提供对地短路)或释放总线线(对地高阻抗),并允许上拉电阻提高电压。在处理 I2C 设备时,这是一个需要实现的重要概念,因为任何设备都不能将总线保持在高电平。此属性允许进行双向通信。

1.1.1开漏拉低

如上一节所述,漏极开路设置可能仅将总线拉低,或“释放”总线并让电阻器将其拉高。图3显示了将总线拉低的电流。想要传输低电平的逻辑将激活下拉 FET,这将提供对地短路,从而将线路拉低。

通过漏极开路接口将总线拉低

图3 通过漏极开路接口将总线拉低

1.1.2 开漏释放总线

当从机或主机希望传输逻辑高电平时,它只能通过关闭下拉FET来释放总线。这会使总线悬空,上拉电阻会将电压拉至电压轨,这将被解释为高电平。图4显示了通过上拉电阻的电流,该电阻将总线拉高。

释放具有漏极开路接口的总线

图4 释放具有漏极开路接口的总线

2. I2C 接口

2.1 常规 I2C 操作

I2C 总线是一种标准的双向接口,它使用控制器(称为主控制器)与从设备进行通信。除非主设备已寻址,否则从设备不得传输数据。I2C 总线上的每个设备都有一个特定的设备地址,用于区分同一 I2C 总线上的其他设备。许多从属设备在启动时需要配置以设置设备的操作。这通常在主设备访问从设备的内部寄存器映射时完成,这些映射具有唯一的寄存器地址。设备可以有一个或多个寄存器,用于存储、写入或读取数据。

物理 I2C 接口由串行时钟 (SCL) 和串行数据 (SDA) 线路组成。SDA 和 SCL 线路都必须通过上拉电阻连接到 VCC。上拉电阻的大小由 I2C 线路上的电容量决定。仅当总线处于空闲状态时,才能启动数据传输。如果 SDA 和 SCL 线路在 STOP 条件后均为高电平,则总线被视为空闲。

主设备访问从设备的一般过程如下:

  1. 假设主节点想要向从节点发送数据:
    主发送器发送START条件并寻址从接收器
    主发送器向从接收器发送数据
    主发射器以 STOP 条件终止传输
  2. 如果主站想要从从站接收/读取数据:
    主接收机发送 START 条件并寻址从发器
    主接收机发送请求的寄存器以读取到从发机
    主接收机从从发机接收数据
    主接收方以 STOP 条件终止传输

2.1.1 START 和 STOP 条件

与此器件的 I2C 通信由发送 START 条件的主设备启动,并由发送 STOP 条件的主机终止。当 SCL 为高电平时,SDA 线路上的高到低转换定义了 START 条件。当 SCL 为高电平时,SDA 线上的低电平到高电平转换定义了 STOP 条件。
START 和 STOP 条件示例

图5 START 和 STOP 条件示例

2.1.2重复启动条件

重复的 START 条件类似于 START 条件,用于代替背靠背的 STOP 然后 START 条件。它看起来与 START 条件相同,但与 START 条件不同,因为它发生在 STOP 条件之前(当总线未空闲时)。当主站希望开始新的通信,但不希望在STOP条件下让总线处于空闲状态时,这很有用,因为主站有可能失去对另一个主机的总线的控制(在多主机环境中)。

2.2 数据有效性和字节格式

在 SCL 的每个时钟脉冲期间传输一个数据位。一个字节由 SDA 线上的 8 位组成。字节可以是设备地址、寄存器地址,也可以是写入或从从站读取的数据。数据首先传输最高有效位 (MSB)。在START和STOP条件之间,可以从主设备传输任意数量的数据字节。SDA线路上的数据在时钟周期的高电平期间必须保持稳定,因为当SCL为高电平时数据线的变化被解释为控制命令(START或STOP)。

SDA线稳定,而SCL线高电平

在这里插入图片描述

字节: 1010 1010 ( 0xAAh )
图6 单字节数据传输示例

2.3 确认 (ACK) 和不确认 (NACK)

每个数据字节(包括地址字节)后面跟着一个来自接收器的 ACK 位。ACK位允许接收器与发送器通信,表明该字节已成功接收,并且可以发送另一个字节。

在接收器发送 ACK 之前,发射器必须释放 SDA 线路。要发送 ACK 位,接收方应在 ACK/NACK 相关时钟周期(周期 9)的低相位下拉 SDA 线,以便 SDA 线在 ACK/NACK 相关时钟周期的高电平期间保持稳定的低电平。必须考虑设置和保持时间。
当 SDA 线在 ACK/NACK 相关时钟周期内保持高电平时,这被解释为 NACK。有几种情况会导致 NACK 的产生:

1.接收器无法接收或发送,因为它正在执行一些实时功能,并且没有准备好开始与主站通信。

2.在传输过程中,接收方会收到它不理解的数据或命令。

3. 在传输过程中,接收方无法接收更多的数据字节。

4. 主接收器完成读取数据,并通过 NACK 向从设备指示数据。

在这里插入图片描述

数据字节N ( 0xAAh )
图7 NACK 波形示例

3. I2C 数据

数据必须从属设备发送和接收,但实现此目的的方式是从属设备中的寄存器读取或写入寄存器。
寄存器是从机内存中包含信息的位置,无论是配置信息,还是要发送回主站的一些采样数据。主设备必须将信息写入这些寄存器,以便指示从设备执行任务。

虽然在 I2C 从设备中具有寄存器是很常见的,但请注意,并非所有从设备都有寄存器。有些器件很简单,只包含 1 个寄存器,可以通过在从地址之后立即发送寄存器数据而不是寻址寄存器来直接写入寄存器。单寄存器器件的一个例子是 8 位 I2C 开关,它通过 I2C 命令进行控制。
由于它有 1 位来启用或禁用通道,因此只需要 1 个寄存器,并且主设备只需在从地址之后写入寄存器数据,跳过寄存器编号。

3.1 写入 I2C 总线上的从机

要在 I2C 总线上写入,主设备将在总线上发送一个启动条件,其中包含从设备的地址,以及将最后一位(R/W 位)设置为 0,表示写入。在从机发送确认位后,主机将发送它希望写入的寄存器的寄存器地址。从机会再次承认,让主机知道它已经准备好了。在此之后,主机将开始向从机发送寄存器数据,直到主机发送完它需要的所有数据(有时这只是一个字节),主机将以 STOP 条件终止传输。

图 8 显示了将单个字节写入从寄存器的示例。
深色:主机SDA
白色:从机SDA
写入从机中的一个寄存器

I2C写入从器件寄存器示例

图8 I2C写入从器件寄存器示例

3.2 从I2C总线上的从机读取

读从机与写从机相似,但有一些额外的步骤。为了从机读取,主机必须首先指示从机它希望从哪个寄存器中读取。这是由主机以与写入类似的方式开始传输来完成的,方法是发送 R/W 位等于 0 的地址(表示写入),然后是需要读取的寄存器地址。一旦从机确认此寄存器地址,主机将再次发送 START 条件,然后是 R/W 位设置为 1 的从机地址(表示读取)。这一次,从机将确认读取请求,主机释放SDA总线,但将继续向从机提供时钟。在事务的这一部分,主机将成为主接收方,从机将成为发送方。
主机将继续发送时钟脉冲,但会释放SDA线,以便从机可以传输数据。在每个字节的数据末尾,主机将向从机发送一个 ACK,让从机知道它已准备好接收更多数据。一旦主机收到预期的字节数,它将发送一个NACK,向从机发出信号,停止通信并释放总线。主机将使用 STOP 条件跟进此操作。
图 9 显示了从从寄存器读取单个字节的示例。
深色:主机SDA
白色:从机SDA
读从机中的一个寄存器

从机寄存器读取I2C示例

图 9 从机寄存器读取I2C示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/648813.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOV5 改进:替换backbone为EfficientNet

1、介绍 本章将会把yolov5的主干网络替换成EfficientNet V2,这里直接粘贴代码 详细的可以参考之前的内容:YOLOV5 改进:替换backbone(MobileNet为例)_yolov5主干网络更换为mobile-CSDN博客 更多的backbone更换参考本专栏: YOLOV5 实战项目(训练、部署、改进等等)_听风吹…

自养号测评是什么?亚马逊、沃尔玛、Target卖家如何建立自己的护城河?

近期有跨境卖家咨询我自养买家账号测评的事情,他们还是有不了解自养号测评的,所以珑哥觉得有必要再讲一下卖家测评的一些事情,之前文章也说过。这可能是跨境卖家运营的一个趋势。今天珑哥着重来介绍一下自养号测评 一、什么叫做自养号测评&a…

揭秘APP广告变现的高效秘诀:如何让你的APP更赚钱?

在数字化时代,APP已成为人们获取信息、娱乐休闲的重要平台。对于许多内容创作者来说,如何通过APP实现盈利,是一个亟待解决的问题。而APP广告变现项目,正是其中一种备受关注的盈利模式。那么,如何有效地利用APP广告变现…

代数拓扑学

啊,哈喽,小伙伴们大家好。我是#张亿,今天呐,学的是代数拓扑学 代数拓扑学是拓扑学中主要依赖 [1]代数工具来解决问题的一个分支。同调与同伦的理论是代数拓扑学的两大支柱(见同调论,同伦论)。 …

Vxe UI 表单设计器、零代码平台

vxe-pc-ui Vxe UI 表单设计器、零代码表单设计器 安装 Vxe UI PC端组件库 官方文档 查看 github、gitee // ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...// ...createApp(App).use(VxeUI).mount(#app)// ...使用 vxe-form-design 设计器组件 vxe-fo…

西门子smart line触摸屏软件安装 WinCC Flexible Smart V4SP1 V3

提示:Wincc flexible smart软件为西门子Smart line系列触摸屏的专用组态软件,这款屏不能用博途来组态,只能用这个软件来组态。西门子Smart line系列触摸屏的常用型号为SMART 700 IE V3/V4,SMART 1000 IE V3/V4。 Wincc flexible …

Windows远程桌面是什么?

Windows远程桌面是一种远程桌面协议,允许用户通过网络连接到远程Windows计算机,并在本地操作远程计算机。它为用户提供了访问远程计算机的便利性,可以在不同地区的电脑或设备之间进行信息远程通信。 天联解决方案 在远程桌面技术中&#xff…

香港优才计划需要什么条件?一文给你说清2024优才政策、申请利弊及获批攻略

香港优才计划申请,竞争正逐渐加剧,在正式递交申请前,客观评估自身申请条件,找准个人履历中与香港人才引进的契合点,并在申请材料中详细表明,更有助于获批。 在申请之前,我们必须明白一个事实&a…

Windows 11 HBuilder X的安装和环境搭建教程

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 HBuilder X是一个由DCloud推出的集成开发环境(IDE),主要用于构建基于HTML、CSS和JavaScript的跨平台应用程序,如微信小程序、App、H5等。它提供了丰富的功能…

群晖NAS安装web服务器和搭建PHP环境

文章目录 安装Web Station 和 PHP配置PHP配置新站点(虚拟主机):配置nginx 安装MariaDB修改数据库配置配置远程连接远程连接 最近折腾了一台群晖NAS,并搭建了一套web服务器,关于其中的一些设置,和传统的Linu…

领导让我调研CI/CD,我给他看了这个

一、概念解释 CI/CD是指持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)的缩写,是现代软件开发中的重要实践。它们旨在通过自动化和持续化的方式改善软件开发、测试…

注册表Windows兼容性设置(AppCompatFlags)

属性 - 兼容性 EXE文件属性中有兼容性标签,当有些老版本软件不能正常运行时经常会调整这里的设置。 image.png 上面的所有选项都写在注册表中,其中“更改所有用户的设置”保存在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppC…

零售品牌做好差旅报销管理,真的能省钱

一年一度的“618”如期而至,甚至启动更早了。 各大厂商宣布取消延用了十多年的预售机制,主打“现货开卖”,充分回归“消费者价值”。 零售品牌给消费者省钱,更要给自己省钱。而这前提是充分了解“钱花在哪了”、“怎么花更合理”: ● 商业化BD、促销、营销等市场活动频繁,差…

操作系统实战(四)(linux+C语言)

目录 实验目的 前提知识 实验题目 题目分析 实验程序 头文件 头文件实现 核心代码文件 (各类进程) 生产者 抽烟者A 抽烟者B 抽烟者C makefile文件 实验运行 运行结果分析 总结 实验目的 加深对并发协作进程同步与互斥概念的理解&…

nginx与nginx-rtmp-module安装

nginx与nginx-rtmp-module安装 画了好几天图,实在有些乏力,找点有意思的事情做做 觉得视频流传输挺有意思,B站找了些视频,但感觉有些大同小异,讲得不是很清楚 FFmpeg/RTMP/webRTC丨90分钟搞定直播逻辑-推流-流媒体服…

面向可复用性和可维护性的设计模式 课程学习总结

什么是设计模式 设计模式:在软件设计中给定上下文中常见问题的通用的、可重用的解决方案。 设计模式分类 1. 创建型模式——Creational patterns 关注对象创建的过程 1.1 工厂方法模式 定义用于创建对象的接口,但让子类决定要实例化哪个类。工厂方…

舞蹈工作室会员服务预约门店管理系统小程序的作用是什么

舞蹈涵盖少儿、街舞、芭蕾、拉丁等多个细分类目,舞蹈工作室除了商演外,内部还有学员培训教育等,提高营收和提升服务效率是商家一直需要思考的问题,线上化程度加深,需要满足客户个性化需求且快速完成流程。 运用【雨科…

乐游巴蜀,V你而来!苏州金龙海格新V系很“巴适”

成都,自古有“天府之国”之美誉,古老的城市人文与现代的摩登活力相交相融,加之令人垂涎的美食文化,共同造就了这里超强的旅游吸引力。2024年5月23日,以“用心前行,V你而来”为题的苏州金龙新V系客车推介会走…

基于若依的旅游推荐管理系统(spring boot+vue+mybatis+Ajax)

目录 一、项目目的 二、项目需求 1、功能模块分析 2、数据库表er图 三、部分界面展示 1、景点信息 2、旅游路线 3、地方美食管理 四、新颖点 1、旅游路线、景点和美食的联系 2、联系实现 3、地级选择器(省市二级) 五、总结 一、项目目的 随着…

数据恢复的救星!快速恢复手机数据的2个秘籍!

当我们的照片、视频、联系人、短信和应用程序丢失时,许多人可能会感到束手无策,无论是珍贵的照片、重要的工作文件还是个人的联系方式,一旦丢失,都可能带来极大的不便和困扰。但随着数据恢复技术的发展,我们有了更多的…