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

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

3天内不再提示

I2C通信协议的优劣势

jf_78858299 来源:www.cuitbasics.com 作者:翻译by吃完饭后不 2023-02-13 13:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可传送信息。它结合了SPI和UART的优点,您可以将多个从机连接到单个主机(如SPI那样),也可以使用多个主机控制一个或多个从机。当您想让多个微控制器将数据记录到单个存储卡或将文本显示到单个LCD时,这将非常有用。

*SDA * (Serial Data) – 数据线。

***SCL ***(Serial Clock)时钟线。

I2C是串行通信协议,因此数据沿着SDA一点一点地传输。与SPI一样,I2C也需要时钟同步信号且时钟始终由主机控制。

图片

工作原理

I2C的数据传输是以多个msg的形式进行,每个msg都包含从机的二进制 地址帧 ,以及一个或多个 数据帧 ,还包括开始条件停止条件读/写位和数据帧之间的 ACK / NACK位

图片

启动条件 当SCL是高电平时,SDA从高电平向低电平切换。

停止条件 当SCL是高电平时,SDA由低电平向高电平切换。

图片

地址帧 每个从属设备唯一的7位或10位序列,用于主从设备之间的地址识别。

读/写位 一位,如果主机是向从机发送数据则为低电平,请求数据则为高电平。

ACK/NACK 消息中的每个帧后均带有一个ACK/NACK位。如果成功接收到地址帧或数据帧,接收设备会返回一个ACK位用于表示确认。

寻址

由于I2C没有像SPI那样的片选线,因此它需要使用另一种方式来确认某一个从设备,而这个方式就是 —— **寻址 **。

主机将要通信的从机地址发送给每个从机,然后每个从机将其与自己的地址进行比较。如果地址匹配,它将向主机发送一个低电平ACK位。如果不匹配,则不执行任何操作,SDA线保持高电平。

读/写位

地址帧的末尾包含一个读/写位。如果主机要向从机发送数据,则为低电平。如果是主机向从机请求数据,则为高电平。

数据帧

当主机检测到从机的ACK位后,就可以发送第一个数据帧了。数据帧始终为8位,每个数据帧后紧跟一个ACK / NACK位,来验证接收状态。当发送完所有数据帧后,主机可以向从机发送停止条件来终止通信。

传输步骤

  1. 在SCL线为高电平时,主机通过将SDA线从高电平切换到低电平来启动总线通信。
  2. 主机向总线发送要与之通信的从机的7位或10位地址,以及读/写位:

图片

  1. 每个从机将主机发送的地址与其自己的地址进行比较。如果地址匹配,则从机通过将SDA线拉低一位返回一个ACK位。如果主机的地址与从机的地址不匹配,则从机将SDA线拉高。

图片

  1. 主机发送或接收数据帧:

图片

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

图片

  1. 随后主机将SCL切换为高电平,然后再将SDA切换为高电平,从而向从机发送停止条件。

单个主机VS多个从机

由于I2C使用寻址功能,可以通过一个主机控制多个从机。使用7位地址时,最多可以使用128(2 ^7^ )个唯一地址。使用10位地址并不常见,但可以提供1,024(2 ^10^ )个唯一地址。如果要将多个从机连接到单个主机时,请使用4.7K欧的上拉电阻将它们连接,例如将SDA和SCL线连接到Vcc:

图片

多个主机VS多个从机

I2C支持多个主机同时与多个从机相连,当两个主机试图通过SDA线路同时发送或接收数据时,就会出现问题。因此每个主机都需要在发送消息之前检测SDA线是低电平还是高电平。如果SDA线为低电平,则意味着另一个主机正在控制总线。如果SDA线高,则可以安全地发送数据。如果要将多个主机连接到多个从机,请使用4.7K欧的上拉电阻将SDA和SCL线连接到Vcc:

优劣

与其他协议相比,I2C可能听起来很复杂。以下是一些利弊,可帮助您确定它们是否适合您的项目需求:

优点

  • 仅使用两根电线
  • 支持多个主机和多个从机
  • ACK / NACK位用于确认每个帧都已成功传输
  • 硬件比UART更简单
  • 众所周知且被广泛使用的协议

缺点

  • 数据传输速率比SPI慢
  • 数据帧的大小限制为8位
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    36

    文章

    4578

    浏览量

    175792
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1866

    浏览量

    99776
  • I2C总线
    +关注

    关注

    8

    文章

    411

    浏览量

    62993
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Prolith和HyperLith的优劣势

    Prolith和HyperLith在光刻领域的优劣势,可以展开讨论讨论
    发表于 11-29 22:12

    3分钟理解通信协议I2C总线 #通信协议

    通信协议I2CI2C总线总线/接口技术
    硬声课堂
    发布于 :2021年10月18日 10:39:12

    i2c通信协议

    1.1 i2c通信协议通信协议:用来实现数据传输。i2c物理总线:SCL(时钟线) SDA(数据线)i2c
    发表于 03-06 16:15

    请问工业机器人有什么优劣势

    请问工业机器人有什么优劣势
    发表于 06-18 06:04

    异步电路原理是什么?有哪些优劣势

    异步电路原理是什么?有哪些优劣势?通过英特尔的Loihi芯片实现异步电路?
    发表于 06-21 07:17

    I2C通信协议硬软件

    目录12C通信协议硬软件I2CAHT20测温湿度参考12C通信协议I2C
    发表于 08-23 07:42

    I2C通信协议的原理是什么

    I2C通信协议I2C通信原理I2C通信原理:I2C
    发表于 02-17 07:16

    SPI协议的特性是什么?具有哪些优劣势

    什么是SPI协议?SPI总线传输有哪几种模式?SPI基本的通讯过程是怎样的?SPI协议的特性是什么?具有哪些优劣势
    发表于 02-17 08:08

    实验八-I2C通信协议

    实验八-I2C通信协议,感兴趣的可以瞧一瞧。
    发表于 09-22 16:42 2次下载

    I2C通信协议应该如何学习

    我最近刚做完I2C通信协议的编写与调试,下面介绍一下我从一开始理解夏老师的程序,修改程序,直到下板调试整个的学习过程,希望对大家学习 I2C 有一定的帮助。一、 分析源代码学习 I2C
    发表于 04-28 08:00 22次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>应该如何学习

    什么是I2C通信协议

    在本教程中,我们将学习如何在Raspberry Pi Pico中使用I2C引脚并遍历I2C扫描器代码。
    的头像 发表于 04-26 15:08 8734次阅读
    什么是<b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>?

    MPU6050的I2C通信协议

    不同硬件有不同的I2C协议
    发表于 12-06 12:21 3次下载
    MPU6050的<b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>

    I2C通信协议:了解I2C Primer、 PMBus和SMBus

    I2C,即Inter-Integrated Circuit,是一种常用的串行通信协议,用于在器件之间——特别是两个或两个以上不同电路之间建立通信I2C Primer是最常用的
    的头像 发表于 06-15 15:29 8087次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>:了解<b class='flag-5'>I2C</b> Primer、 PMBus和SMBus

    SPI和I2C通信协议:应用与区别

    本文深入解析了SPI和I2C这两种通信协议的特点、工作原理和应用场景。SPI适用于高速数据传输,常用于存储器芯片和显示器驱动等领域;I2C适用于低速控制和传感器数据传输,常用于温度传感器和ADC
    的头像 发表于 04-22 16:45 3401次阅读

    简单认识I2C通信协议

    I2C(Inter-Integrated Circuit)通信协议是由飞利浦公司(现为恩智浦半导体)开发的一种简单、双向二线制同步串行总线协议。自1982年发布以来,I2C
    的头像 发表于 07-25 18:06 3295次阅读