0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

i2c总线的组成,及其作用 i2c总线的优点是什么

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-08-07 16:18 次阅读

如果您正在使用OLED显示器,气压传感器陀螺仪/加速度计模块的项目,您可能会发现正在使用I2C总线。

I2C总线简介

I2C结合了SPI和UART的优点。使用I2C,您可以将多个从设备连接到单个主设备上(如SPI),并且可以让多个主器件控制单个或多个从器件。当您希望有多个微控制器记录数据到单个存储卡或将文本显示到单个LCD时,这非常有用。

与UART通信一样,I2C仅使用两条线在设备之间传输数据:

SDA(串行数据) - 主站和从站发送和接收数据的线路。

SCL(串行时钟) - 承载时钟信号的线路。

I2C是一种串行通信协议,因此数据沿着单线(SDA线)逐位传输。

与SPI一样,I2C是同步的,因此位输出通过主机和从机之间共享的时钟信号与位采样同步。时钟信号始终由主机控制。

I2C如何工作

使用I2C时,数据被转换成messages,messages则被分解为数据帧。每条messages都有一个地址帧,其中包含从站的二进制地址,以及一个或多个包含正在传输的数据的数据帧。该消息还包括每个数据帧之间的启动和停止条件,读/写位和ACK / NACK位:

启动条件:在SCL线路从高电平切换到低电平之前,SDA线路从高电平切换到低电平。

停止条件:SCL线路从低电平切换到高电平后,SDA线路从低电平切换到高电平。

地址帧:每个从站唯一的7或10位序列,用于在主站想与之通信时识别从站。

读/写位:单个位,指定主器件是向从器件发送数据(低电压电平)还是从器件请求数据(高电压电平)。

ACK / NACK位:消息中的每个帧后跟一个应答/不应答位。如果成功接收到地址帧或数据帧,则从接收设备向发送方返回ACK位。

地址

I2C没有像SPI这样的从选择线,因此它需要另一种方法让从器件知道数据正在发送给它,而不是另一个从器件。它通过地址来做到这一点。地址帧始终是新消息中起始位之后的第一帧。

主设备将与其通信的从设备的地址发送给与其连接的每个从设备。然后,每个从设备将从主设备发送的地址与其自己的地址进行比较。如果地址匹配,则将低电压ACK位发送回主机。如果地址不匹配,则从器件不执行任何操作,SDA线保持高电平。

读/写位

地址帧在末尾包括一个位,用于通知从设备,主设备是想要向其写入数据还是从主设备接收数据。如果主设备想要向从设备发送数据,则读/写位是低电平。如果主设备向从设备请求数据,则该位是高电平。

数据框架

在主设备检测到来自从设备的ACK位之后,准备好发送第一个数据帧。

数据帧始终为8位长,并以最高有效位先发送。紧接着每个数据帧的ACK / NACK位以验证帧已被成功接收。在发送下一个数据帧之前,主机或从机必须接收ACK位(取决于发送数据的人)。

在发送了所有数据帧之后,主设备可以向从设备发送停止条件以停止传输。停止条件是SCL线上从低电平到高电平转换后,SDA线上从低电平变为高电平,SCL线保持高电平。

I2C数据传输步骤

1.主机向每一个连接的从设备发送数据,然后将SDA信号从高切换到低,之后在将SCL从高切换到低电平。

2.主设备向每个从设备发送它想要与之通信的从设备的7或10位地址,以及读/写位:

3.每个从设备将主设备发送的地址与其自己的地址进行比较。如果地址匹配,则从器件通过将SDA线拉低一位来返回ACK位。如果主设备的地址与从设备的地址不匹配,则从设备将SDA线保持为高电平。

4.主设备发送或接收数据帧:

5.在传输了每个数据帧之后,接收设备将另一个ACK位返回给发送方以确认成功接收到该帧:

图片.png

6.要停止数据传输,主机通过在将SDA切换为高电平之前切换SCL为高电平来向从机发送停止条件:

有多个从设备的单一主设备

由于I2C使用寻址,因此可以从单个主设备控制多个从设备。使用7位地址,可以使用128(27)个唯一地址。使用10位地址并不常见,但提供1,024(210)个唯一地址。要将多个从器件连接到单个主器件,请像这样连接它们,使用4.7K欧姆上拉电阻将SDA和SCL线连接到Vcc:

有多个从设备及多个主设备

多个主设备可以连接到单个从设备或多个从设备。当两个主设备尝试通过SDA线同时发送或接收数据时,同一系统中出现多个主设备的问题。为了解决这个问题,每个主设备需要在发送消息之前检测SDA线路是低还是高。如果SDA线为低电平,则表示另一个主控制器已控制总线,主控制器应等待发送消息。如果SDA线路很高,那么传输信息是安全的。要将多个主设备连接到多个从设备,请使用下图,使用4.7K欧姆上拉电阻将SDA和SCL线路连接到Vcc:

I2C的优点和缺点

与其他协议相比,I2C听起来很复杂,不容易在程序中实现而导致数据丢失、无应答、“死等”等问题。但却有很多优点:

优点

只使用两根电线

支持多个主服务器和多个从服务器

ACK / NACK位确认每个帧都已成功传输

硬件没有UART那么复杂

众所周知且广泛使用的协议

缺点

数据传输速率比SPI慢

数据帧的大小限制为8位

实现比SPI更复杂的硬件
责任编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48110

    浏览量

    740122
  • 显示器
    +关注

    关注

    21

    文章

    4738

    浏览量

    137873
  • 存储卡
    +关注

    关注

    0

    文章

    235

    浏览量

    27884
  • I2C总线
    +关注

    关注

    8

    文章

    357

    浏览量

    60409
  • 接收数据
    +关注

    关注

    0

    文章

    7

    浏览量

    6031
收藏 人收藏

    评论

    相关推荐

    i2c总线协议pdf

    I2C 总线规范目录1 序言
    发表于 08-13 17:16

    i2c总线规范

    1992 I2C 总线规范的这个版本有以下的修正? 删除了用软件编程从机地址的内容因为实现这个功能相当复杂而且不被使用? 删除了低速模式实际上这个模式是整个I2C 总线规范的子集不需要
    发表于 08-13 17:18

    I2C规范,I2C总线原理

    I2C规范,I2C总线原理1 序言
    发表于 04-09 18:34

    I2C总线彩电的检修

    电视机出现故障。出现这种情况一般有下列原因:①I2C总线通道有障碍,例如,SDA线和SCL线印制板走线出现断裂,各芯片总线端口隔离电阻开路以及端口抗干扰电容击穿等;②受控芯片供电、复位及其
    发表于 09-05 10:56

    I2C总线协议详解

    I2C总线定义 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制
    发表于 02-01 09:56

    浅谈I2C总线

    I2C 接口和 SPI 接口的作用相同,但二者的使用方法有些不同。 I2C 总线用两根线来连接多支路总线中的多个设备。这种
    发表于 11-30 11:50

    I2C总线是什么

    I2C总线I2C总线(读做“IC”或“I2C
    发表于 07-21 09:03

    I2C总线简介

    1、I2C总线简介I2C是两线式串行总线,用于连接微控制器及其外围设备。I2C
    发表于 08-20 08:25

    I2C总线的相关资料推荐

    16.1 I2C工作原理16.1.1 I2C串行总线概述I2C总线是PHLIPS公司推出的一种双线式串行
    发表于 11-29 06:41

    I2C总线概述

    简单、器件封装形式小、通信速率较高等优点。在主从通信中,可以有多个l2C总线器件同时接到l2C总线上,所有与
    发表于 12-13 06:19

    I2C总线简析

    在硬件上,I2C 总线是由时钟总线 SCL 和数据总线 SDA 两条线构成,连接到总线上的所有器件的 SCL 都连到一起,所有 SDA 都连
    发表于 01-07 06:03

    I2C总线简单介绍

    1.I2C简单介绍I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其
    发表于 01-14 07:10

    I2C总线的原理是什么

    采用串行总线技术可以大大简化硬件的设计,体积减少,可靠性高。常见的总线I2C(inter IC bus),单总线,SPI总线
    发表于 01-18 07:36

    I2C总线简介

    I2C 简介I2C 是双线双向的串行总线,它为设备之间数据交换提供了一种简单高效的方法。I2C 标准是一个具有冲突检测机制和仲裁机制的真正意义上的多主机
    发表于 02-22 06:55

    I2C总线的使用与编程

    I2C总线是飞利浦公司在20世纪80年代初由S定义的一种二线制总线系统。I2C总线是一种双向的,专为简单但高效的控制应用而设计。 它广泛应用
    发表于 09-04 07:23