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

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

3天内不再提示

浅谈I2C总线,I2C接口和SPI接口的作用相同

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-03-21 10:24 次阅读

I2C(Inter Integrated Circuit,内部集成电路)总线是价格低廉却很有效的用以互连小规模嵌入式系统内的外设的网络。I2C 总线有时候也叫作 IIC,它已有20多年的历史了。I2C 接口和 SPI 接口的作用相同,但二者的使用方法有些不同。

I2C 总线用两根线来连接多支路总线中的多个设备。这种总线是双向、低速的,并与公共时钟同步。可以直接将一个设备接到 I2C 总线上或是从该总线上取下,而不会影响其他设备。一些生产商比如 Microchip 公司、Philips 公司、Intel 公司等生产的小型微处理器都内置了 I2C 接口。I2C 总线的数据传输率比 SPI 总线要慢一些,在标准模式下的传输速度为 100kbps,在快速模式下为 400kbps。利用 I2C 接口在设备之间进行连接使用的两根线是SDA(串行数据)和SCL(串行时钟),它们都是开漏,通过一个上拉电阻接到正电源,因此在不使用的时候扔保持高电平。使用 I2C 总线进行通信的设备驱动这两根线变为低电平,在不使用的时候就让它们保持高电平。每个连到 I2C 的设备都有一个唯一地址,这个设备可以是数据发送者(总线主机)、接收者(总线从机),也可以二者都是。I2C 是多主机总线,这意味着可以有多个设备充当总线主机的角色。

图1. I2C总线连线图

SDA和SCL都是双向的。SPI 总线有两根单独的线,分别用于两个方向的通信,而 I2C 总线不同,它使用同一根线来完成主机发送数据和接收从机响应。另外,与 SPI 总线具有多个工作模式不同,I2C 总线只有一个工作模式,时钟线 SCL 和数据线 SDA 之间的时序关系很简单直观:当空闲的时候,SDA 和 SCL 都是高电平,只有 SDA 变为低电平,接着 SCL 也变为低电平时,才开始 I2C 总线的数据传输。当 SDA 和 SCL 都变为低电平时,就是告诉总线上的所有接收设备数据包的传输开始了,在 SCL 变为低电平后,SDA 才发送第一个有效数据位,这称为开始条件。对于被传输的每一位,当 SCL 为低电平时在 SDA 上必须变为有效,该位是在 SCL 的上升沿对 SDA 上的数据位进行采样的,也必须一直保持有效直到 SCL 再次变为低电平,然后 SDA 就在 SCL 再次变为高电平之前传输下一位。最后,SCL 变为高电平,接着 SDA 也变为高电平,数据传输结束。这被称为结束条件。

图2. I2C总线传输的开始条件和结束条件

无论多大的数据包都可以通过 I2C 总线进行传输。像 SPI 总线一样,I2C 也是高位先传输。如果数据接收者无法再接收更多的数据,它可以通过将SCL保持低电平来中断传输,这样可以迫使数据发送者等待,直到 SCL 被重新释放。发送方发出的每个字节都必须经过接收方确认,每个字节的第8位数据一旦传送结束,发送方就释放数据线 SDA,然后主机在 SCL 上产生一个额外的时钟脉冲,这会触发接收方通过将 SDA 置为低电平来表示接收到的字节进行确认。如果接收方没有能将 SDA 置为低电平,发送方就会中断传输,并且采取适当的错误处理措施。

图3. 带有接收方确认的I2C数据包

由于 I2C 是多主机总线,因此存在同一时刻会有多个主机试图开始数据传输的可能。SPI 总线使用一个独立的片选端来使接收从机有效,每个 SPI 从机都有一个单独的片选端,由主机驱动。I2C 没有这样的选择机制,不过总线上的每个设备都有一个唯一的地址,数据包传输时先发送地址位,接着才是数据。一个地址字节由7个地址位和1个指示位组成。如果指示位是0,意味着这个传输是一个写操作,被选中的从机将接收数据并将其作为输入;如果指示位是1,就要求从机将数据发送回主机。

I2C 总线还支持一个扩展的10位寻址模式,可连接的外设数量可达1024个,使用7位寻址模式的设备和10位寻址模式的设备可以在同一个系统中混合使用。10位寻址时,使用2个字节来保存地址。如果第1个地址字节以0b11110xx_开始,就会产生一个10位地址,第1个字节的第1、2位(第0位是读写指示位)和第2个字节的8位合起来构成10位的地址。而7位设备将会忽略这个过程。

图4. I2C普通的和带重复开始条件的7位地址格式

图5. I2C总线10位地址格式

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

    关注

    17

    文章

    1613

    浏览量

    89585
  • 总线
    +关注

    关注

    10

    文章

    2702

    浏览量

    87203
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1346

    浏览量

    120804

原文标题:浅谈I2C总线,有时候它也叫 IIC

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是Simplified I2C,简化版I2C接口!#从入门到精通,一起讲透元器件! #电路设计

    I2CI2C接口LiFi总线/接口技术
    学习电子知识
    发布于 :2022年09月23日 17:37:03

    I2C规范,I2C总线原理

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

    USB总线I2C总线接口芯片

    ;strong>USB总线I2C总线接口芯片</strong><br/>USB2I2C是一个USB
    发表于 12-16 10:39

    I2C总线协议详解

    参数,增加了系统的安全性,方便了管理。I2C总线特点 I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此
    发表于 02-01 09:56

    I2C接口

    本帖最后由 eehome 于 2013-1-5 09:56 编辑 现在设计有两个设备,主设备和从设备,通过I2C接口控制连接,由于距离可能距离较远50cm左右,请问这距离有问题吗?还有没有对I2C中继一下?(这
    发表于 11-08 09:34

    pyboardCN V2 使用I2C接口驱动I2C外设DS3231

    pyboard上面有I2C类库可以供我们调用,根据邵版主的原话,I2C类库所挂载的I2C接口是STM32F405RG的硬件I2C
    发表于 08-17 16:53

    浅谈I2C总线

    I2C 接口SPI 接口作用相同,但二者的使用方法有些不同。
    发表于 11-30 11:50

    到底什么是I2C

    I2C协议实际上设计用于在单个总线上支持多个设备,而如串行外设接口SPI)的其他协议的设计用于点对点单设备支持。双线I2C
    发表于 07-23 04:45

    I2C总线简介

    )和SPI(串行外围设备接口)。你需要先了解I 2 C 的基本特性,然后才能彻底理解这三个接口
    发表于 09-06 10:16

    I2C总线简介

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

    浅析SPI总线I2C接口

    SPI是什么?SPI总线有哪些优缺点?I2C接口包括哪些?I2C
    发表于 10-15 09:31

    I2C总线接口的相关资料分享

    嵌入式Linux开发——I2C总线接口
    发表于 11-05 06:27

    I2C总线概述

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

    I2C物理层接口的相关资料分享

    系列索引:《嵌入式系统原理与应用》 | 嵌入式系统 重点知识梳理目录I2C的物理层接口(电平特性)及互联I2CSPI及UART三者之间的对比I2C
    发表于 12-20 07:38

    I2C总线的原理是什么

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