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

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

3天内不再提示

面试遇到再不怕了:IIC协议

朱老师物联网大讲堂 2024-04-29 08:10 次阅读

I2C(Inter-Integrated Circuit),有时也称为IIC或TWI(Two-Wire Interface),是一种用于低速度串行通信的总线协议,主要用于连接微控制器与其外围设备,如传感器、EEPROM、RTC(实时时钟)等。I2C 由飞利浦半导体(现今的恩智浦半导体)在1980年代初期开发。

I2C 通信仅需两根线:

SDA(Serial Data):数据线,用于数据的双向传输。

SCL(Serial Clock):时钟线,用于同步信号

I2C 协议的特点包括:

主从架构:

在I2C总线上,任何设备都可以是主设备或从设备。主设备负责生成时钟信号和控制总线,而从设备接收主设备的指令。通常,微控制器充当主设备的角色。

支持多主设备和多从设备:

I2C 总线允许多个主设备和多个从设备共存,每个设备都有唯一的地址。在多主模式下,各主设备需要通过一定的仲裁机制来协调对总线的访问。

地址和数据传输:

在I2C通信中,数据传输是通过发送设备地址加读写位开始的,随后跟随的是数据传输。如果有多个从设备,主设备通过地址来指定与之通信的从设备。

同步:

I2C是一种同步协议,意味着数据的传输是由时钟信号(SCL线)来控制的。

I2C 协议的优点是简单、成本低且灵活,只需两根线就能连接多个设备。不足之处是速度相比SPI和UART较慢,且总线长度有限制,随着连接的设备数量增加,可能会影响通信速度和可靠性。

e734825e-05bc-11ef-9118-92fbcf53809c.pnge74733b8-05bc-11ef-9118-92fbcf53809c.png

一、IIC的通信流程

e75acc98-05bc-11ef-9118-92fbcf53809c.png

e76b5c84-05bc-11ef-9118-92fbcf53809c.png

启动信号:

通信开始时,主设备发出启动信号。这通过将数据线(SDA)从高电平拉低,而时钟线(SCL)保持在高电平来实现。这个动作通知所有从设备主设备即将开始通信。

发送设备地址及读写位:

紧接着启动信号,主设备发送从设备的地址以及操作位(读/写)到数据线上。每个从设备都有一个唯一的地址。读写位决定了操作是读数据(通常设为1)还是写数据(通常设为0)。

从设备应答:

地址和读写位发送完毕后,被寻址的从设备需要通过发送一个应答信号(ACK)来响应。应答信号是在数据线(SDA)上产生一个低电平信号,同时时钟线(SCL)为高电平。

数据传输:

成功建立连接和从设备应答之后,数据可以开始传输。数据是按字节传输的,每传输完一个字节后,接收方(无论是主设备还是从设备)都需要发送一个应答信号(ACK)。

停止信号:

数据传输完成后,主设备发出一个停止信号来终止通信。这通过将数据线(SDA)从低电平拉高,而时钟线(SCL)保持在高电平来实现,标志着一次I2C交流的结束。

e734825e-05bc-11ef-9118-92fbcf53809c.pnge74733b8-05bc-11ef-9118-92fbcf53809c.png

二、发送1bit数据的流程

e7a904da-05bc-11ef-9118-92fbcf53809c.png

主设备首先确保时钟线SCL处于高电平状态。

然后,主设备会将要发送的比特数据设置在数据线SDA上。如果发送的是‘1’比特,SDA线会被设置为高电平;如果发送的是‘0’比特,SDA线会被设置为低电平。SDA线上的数据必须在SCL线的一个时钟脉冲开始之前稳定。

在数据线SDA稳定后,主设备通过将时钟线SCL从高电平拉低到低电平,来通知从设备数据线上的数据可以被读取。从设备在SCL线为高电平的时候读取SDA线上的数据。

完成这个数据位的传输后,主设备通常会将时钟线SCL恢复到高电平,准备发送下一个比特或产生一个停止条件以结束通信。

重要的是,在SCL线为高电平期间,数据线SDA上的数据必须保持稳定,因为任何在SCL高电平时的SDA变化都可能被视为控制信号(例如启动或停止条件)。

e734825e-05bc-11ef-9118-92fbcf53809c.pnge74733b8-05bc-11ef-9118-92fbcf53809c.png

三、IIC需要外接上拉电阻

e75acc98-05bc-11ef-9118-92fbcf53809c.png

e7ffdaa8-05bc-11ef-9118-92fbcf53809c.png

e8222018-05bc-11ef-9118-92fbcf53809c.png

I2C总线的设计是开漏(open-drain)或开集(open-collector)输出,这意味着连接到总线的设备能够将总线拉低到地(GND),但是不能将总线推高至电源电压(Vcc)。

上拉电阻的作用主要包括以下几点:

提供拉高电平:

设备将总线释放时,上拉电阻将SDA和SCL线拉高到正逻辑电平(通常是Vcc),确保线路在非驱动状态时为高电平。

限制电流

当总线设备将SDA或SCL线拉低时,上拉电阻起到限流的作用,防止电流过大导致设备损坏。

防止总线冲突:

多个设备可能会同时尝试控制总线。由于开漏设计,任何设备都可以安全地将总线拉低而不会对其他设备造成伤害。上拉电阻确保了在这种情况下不会出现短路。

增强信号完整性:

上拉电阻也有助于维护信号的完整性,减少因为长线路或者其他电气特性引起的信号退化。

选择合适的上拉电阻值是很重要的。电阻值太大,电流太小,导致总线拉高速度变慢,影响通信速率;电阻值太小,可能导致电流过大,浪费功率,且拉低总线时可能会对设备造成损害。通常,上拉电阻的选择取决于总线容量(总线上设备的数量和总线长度)和系统工作的电源电压。常见的电阻值范围从1.8kΩ到10kΩ不等。

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

    关注

    112

    文章

    16346

    浏览量

    177899
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1487

    浏览量

    123669
  • IIC协议
    +关注

    关注

    0

    文章

    16

    浏览量

    3931
收藏 人收藏

    评论

    相关推荐

    FPGA实现IIC协议的设计

    今天给大家带来的是IIC通信,IIC协议应用非常广泛,例如与MPU6050进行通信,配置OV5640摄像头、驱动OLED屏幕等等,都需要使用到IIC
    的头像 发表于 03-04 10:49 1251次阅读
    FPGA实现<b class='flag-5'>IIC</b><b class='flag-5'>协议</b>的设计

    什么是IIC和SPI总线协议

    通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议
    发表于 10-21 07:25

    STM32的IIC协议简介

    文章目录(一)IIC协议简介(二)物理层和协议层简介(三)IIC物理层:3.1、物理层的特点(四)IIC
    发表于 01-05 06:13

    IIC协议软件模拟方法

    关于iic协议和对AT24C16进行读写数据的代码解读认识IIC协议IIC协议软件模拟方法功能快
    发表于 02-09 07:00

    IIC协议的相关资料下载

    关于MPU6050学习的一些总结之二IIC协议前言一、IIC总线前言在查阅并了解了MPU6050的芯片手册后,已经对MPU6050有了大致的了解。那么接下来如何使MPU6050工作并且读取内部寄存器
    发表于 02-10 06:02

    如何使用代码实现的IIC协议

    1. 综述  由上篇博客可知道IIC协议如何用代码实现,本篇博客就不涉及协议内容,只讲解如何使用。  本次的实验传感为:DS3231(时钟模块),对于时钟模块的具体信息我也就不多介绍,大家可以自行度
    发表于 02-21 06:36

    LESSON8_IIC总线协议

    iic总线协议,通讯方式,通讯工作原理!单片机入门知识
    发表于 06-17 16:48 11次下载

    IIC总线协议

    IIC总线协议,感兴趣的小伙伴们可以看看。
    发表于 07-26 16:29 59次下载

    IIC总线协议中文版

    IIC协议的介绍,中文版,易懂,可以在里面了解到IIC是何物,如何使用以及定义
    发表于 08-09 15:08 0次下载

    IIC和SPI总线协议的区别

    通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议
    的头像 发表于 04-24 12:41 6410次阅读
    <b class='flag-5'>IIC</b>和SPI总线<b class='flag-5'>协议</b>的区别

    支付宝宣布电子结婚证,出门办事忘带证件也不怕了

    此前,支付宝宣布,已有5省市上线电子结婚证。福建、江西、江苏、浙江、重庆5省市首批支持,出门办事忘带证件也不怕了
    的头像 发表于 08-20 10:41 2985次阅读

    IIC协议超详细解释(适合小白入门)

    以下内容,将解释以下几个问题1.IIC协议是什么?2.IIC协议用来干什么?3.IIC协议的通信
    发表于 12-07 14:21 5次下载
    <b class='flag-5'>IIC</b><b class='flag-5'>协议</b>超详细解释(适合小白入门)

    振弦采集模块的通讯协议IIC

    振弦采集模块的通讯协议IICIIC 通讯协议本身即是基于设备地址和寄存器的物理层通讯协议, VMXXX 使用
    的头像 发表于 11-17 10:02 833次阅读
    振弦采集模块的通讯<b class='flag-5'>协议</b>( <b class='flag-5'>IIC</b>)

    什么是IIC协议

    IIC协议最早1982年由飞利浦公司设计开发,是一种两线制(SDA + SCL)的串行通行方式,提供了主从机之间通行的一种方案,在今天也是被广泛的应用在很多的产品设备上。
    的头像 发表于 02-10 10:53 4624次阅读
    什么是<b class='flag-5'>IIC</b><b class='flag-5'>协议</b>

    IIC通讯协议的电路设计

    前面我们概述过一些常见的通讯协议,本文着重讲讲关于IIC协议
    的头像 发表于 04-19 11:00 2071次阅读
    <b class='flag-5'>IIC</b>通讯<b class='flag-5'>协议</b>的电路设计