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

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

3天内不再提示

SPI/I2C总线线路控制多个外设

星星科技指导员 来源:ADI 作者:ADI 2023-02-21 11:59 次阅读

本应用笔记比较了大多数模拟IC使用的两种常见串行数字接口: SPI™或 3 线,和I2C或 2 线。每个串行接口都为许多设计提供了优点或缺点,具体取决于所需的数据速率、空间可用性和噪声考虑等标准。本应用笔记讨论了这两种串行接口之间的差异,并提供了详细演示每个接口的示例。

介绍

虽然现实世界的信号总是interwetten与威廉的赔率体系 的,但如今越来越多的模拟IC通过数字接口进行通信。串行接口在提供串行时钟的主设备和从/外设之间进行通信。如今,大多数微控制器上的SPI(3线)和I2C(2线)端口是发送和接收数据的常用方法。因此,微控制器通过多条总线进行通信,以控制外设,包括模数转换器ADC)、数模转换器DAC)、智能电池、端口扩展器、EEPROM温度传感器。与通过并行接口发送的数据不同,串行数据以多个位连续传输,通常通过两条、三条或四条数据/定时线。虽然并行接口提供速度,但串行接口具有更少的控制和数据线的优势。

串行接口基础知识

串行接口有三种类型:3 线、2 线和单线。本文重点介绍 3 线和 2 线接口。串行外设接口 (SPI)、排队串行外设接口 (QSPI™)和微丝™(或微丝加™) 标准通过 3 线接口进行通信。IC 间 (I2C) 和系统管理总线 (SMBus™) 标准通过 2 线接口进行通信。两种类型的串行接口都有其优点和缺点。

3线接口

三线接口使用片选线(/CS或/SS)、时钟线(SCLK)和数据输入/主输出线(称为DIN或MOSI)。这些接口还可以包括数据输出/主输入线(称为DOUT或MISO),有时称为4线接口。为简单起见,本文将 3 线和 4 线接口称为 3 线。

三线接口工作在更高的时钟频率下,不需要任何上拉电阻。SPI/QSPI和MICROWIRE接口还具有全双工操作(数据可以同时发送和接收),并且在嘈杂的环境中不易出现问题。三线接口是边沿触发的,而不是电平触发的。

3线接口的主要缺点是,除非从器件配置为菊花链配置,否则总线上的每个从器件都需要一条单独的/CS线,如图1所示。(菊花链将在下面更详细地讨论。3线接口也不确认数据已正确发送或接收。从软件角度来看,3线接口比单主/单从应用的2线接口更简单、更高效。

pYYBAGP0Qa2AKGywAAAzddNl8Rs041.gif?imgver=1

图1.三线接口利用数据输入、数据输出、时钟和片选线。

2线接口

双线接口仅使用数据线(SDA或SMBDATA)和时钟线(SCL或SMBCLK)。这种使用较少的一条或两条线路对于紧凑型设计(如手机和光纤应用)来说是一个特别有用的优势。双线接口还允许您在同一总线上连接多个从站,而无需片选信号。这种设计是可能的,因为每个从站都有自己唯一的地址。双线接口还会在成功完成读取后传输应答位。由于2线接口只有一条数据线,因此它们只能在半双工模式下工作(数据只能在给定的周期内发送或接收,但不能同时发送或接收)。双线接口是电平触发的,如果数据位被错误识别,这可能会在嘈杂的环境中产生问题。

接口 优势
3 线:SPI、QSPI 和 MICROWIRE PLUS 1. 速度
2.无需
上拉电阻 3.全双工操作
4.抗噪性
1. 总线连接
数量更多 2.一次与多个从站通信所需的单个芯片选择线路
3.不确认收到的数据
2线:I2C 和 SMBus 1. 公交线路连接
更少 2.多个设备共享同一总线
3.确认接收到的数据
1.速度:SMBus限制在100kHz;我2C 限制为 3.4MHz
2。半双工操作
3.漏极开路总线需要上拉电阻
4.降低抗噪性

主机和从机通过串行接口通过多条总线进行通信。在一个写入周期中,主机使用自己的时钟和数据信号将数据传输到从机。在一个读取周期中,从机将数据传输到主站。

SPI、QSPI、MICROWIRE 设计

由摩托罗拉建立的SPI接口可用于流行的处理器和微控制器,如MAXQ2000。如上所述,SPI设计需要两条控制线(/CS和SCLK)和两条数据线(DIN/SDI和DOUT/SDO)。摩托罗拉 SPI/QSPI 标准将 DIN/SDI 数据线称为 MOSI(主输出、从入);DOUT/SDO数据线是MISO(主输入、从输出),/CS线是SS(从选择)。为简单明了起起,本文从从机的角度参考了3线数据线:DIN是从机的数据输入,DOUT是从机的数据输出。本文还将3线总线称为/CS、SCLK、DIN和DOUT,因为Maxim外设使用这些引脚名称。®

大多数SPI接口具有两个配置位,即时钟极性(CPOL)和时钟相位(CPHA),用于确定从机何时对数据进行采样。CPOL 确定 SCLK 在未切换时是空闲高 (CPOL = 1) 还是低 (CPOL = 0)。CPHA 确定在哪些 SCLK 边缘数据移入和移出。当CPOL = 0时,将CPHA设置为0会将数据转移到SCLK上升沿的从站。将CPHA设置为1将数据转移到SCLK下降沿上的从站。两种CPOL和CPHA状态允许四种不同的时钟极性和相位组合;每个设置都与其他三个设置不兼容。主站和从站必须设置为相同的 CPOL 和 CPHA 状态才能相互通信。

在其最基本的形式中,SPI接口一次传输2000位(一个字节)的数据,尽管有些微控制器一次传输两个或更多字节。例如,MAXQ8微控制器一次可以传输16位或0位。当CPOL = 0且CPHA = 8时,从高电平到低电平的/CS转换开始从主站到从机的传输。/CS必须保持低电平,而SCLK脉冲高电平和低电平,持续八个完整的周期。DIN数据锁定在上升的SCLK边缘。数据字节在/CS从低到高转换后加载到从机中。在相同的2位周期内,数据可从SCLK下降沿上的从机DOUT线获得。图3a显示了CPHA=1时的2线SPI时序。图3b显示了CPHA=0时的<>线SPI时序。

poYBAGP0Qa-AVyq8AAA7GGmrSig151.gif?imgver=1

图 2a. 3 线接口时序 (CPHA = 1)。当CPHA = 1且CPOL = 1时,3线接口将数据时钟输入时钟上升沿的外设,数据从时钟下降沿的外设输出。

pYYBAGP0QbGAPMk4AAA3wS2eR0M333.gif?imgver=1

图 2b. 3 线接口时序 (CPHA = 0)。当CHPA = 0且CPOL = 1时,3线接口将数据时钟输入时钟下降沿的外设,数据从时钟上升沿的外设输出。

/CS总线用作每个从站的使能信号,因为总线上的每个IC都需要自己的片选线。如果四个从站在同一总线上,则需要四条片选线来选择合适的从站。如果从机的/CS线路为高电平(非活动),则从机将忽略SCLK转换并将DOUT线路保持在高阻抗状态。

一些3线接口外设可以使用菊花链方法进行编程。菊花链不是将单独的/CS线连接到每个外设,而是允许单个/CS和SCLK线控制串联的多个外设。要以这种方式以菊花链方式连接外设,3线接口必须包括DOUT线。如图 1 所示,外围设备 #1 的 DOUT 线用作外围设备 #2 等的 DIN 线。

SPI标准未指定最大数据速率。相反,外设指定自己的最大数据速率,大多数在MHz范围内。微控制器可以适应各种SPI速度。然而,当通过SPI总线通信时,从机无法减慢主站的速度或确认正确的数据传输。

QSPI标准与SPI标准几乎相同。事实上,外设无法区分QSPI总线和SPI总线。然而,与SPI主站不同,QSPI主站允许通过可编程芯片选择进行数据传输。此外,这些QSPI主站一次可以在8位到16位之间传输,而SPI器件通常仅传输8位。您可以将 QSPI 设备配置为连续传输多达 16 个数据字(最多 256 位)。此传输完全由 QSPI 接口处理,无需微控制器干预。与SPI一样,QSPI标准没有规定最大数据速率。

由美国国家半导体公司制定的较旧的MICROWIRE标准与SPI非常相似。但是,MICROWIRE具有固定的时钟极性和固定的时钟相位(CPOL = 0和CPHA = 0)。DIN的数据始终锁定在SCLK上升沿的从站中。数据从从机的DOUT引脚转移到SCLK的下降沿。与SPI一样,MICROWIRE标准没有规定最大数据速率。

内部集成电路(I2C) 接口

与全双工、3线串行接口不同,I2飞利浦建立的 C 标准通过一条数据线 (SDA) 和一条控制线 (SCL) 以半双工模式进行通信。我2C 标准定义了一个简单的主/从双向接口。在此方案中,微控制器指定它是作为主站(写入模式)还是作为从站(接收模式)运行。每个从站都有自己唯一的地址,允许主站在同一总线上与许多不同的从站通信,而无需芯片选择信号。参见图 3。从机数量仅受允许的最大总线线路电容(400pF)的限制。我2C 协议基于 7 位或 10 位地址,但 7 位地址更常见。使用 7 位协议,您可以将多达 127 个不同的外设连接到总线。 SCL 和 SDA 是漏极开路线路,必须处于高电平状态才能正常运行。使用 1V 电源时,将 3kΩ 或更大的上拉电阻连接到这些线路,使用 1V 电源时,将 6.5kΩ 或更大的上拉电阻连接到这些线路。

poYBAGP0QbKAapHkAAAiFAEqXNE336.gif?imgver=1

图3.双线接口提供数据输入/输出和时钟线。

I2C通信以启动命令开头,当 SDA 在 SCL 高电平时从高到低转换时,会发生该命令。参见图 4a。在每个 SCL 时钟周期内传输一个数据位;至少需要九位才能将字节传入或传出从机。写入周期包括八个数据位,后跟一个确认 (ACK) 或非确认 (NACK) 信号。参见图 4b。当数据通过I2C总线传输时,它锁在 SCL 上升沿的从机中,并从 SCL 下降沿的从机读出。SDA上的数据必须在SCL时钟脉冲的高周期内保持稳定。在停止或重复启动命令之后,传输完成,此时SDA在SCL高电平下从低到高转换。当总线不繁忙时,SDA 和 SCL 都保持高电平。

pYYBAGP0QbSAUfcnAAAL_vLW5rw488.gif?imgver=1

图 4a.启动和停止条件。2线接口使用启动、重复启动和停止命令在主站和从机之间传输数据。

poYBAGP0QbWAS0EwAAANer_fOvQ046.gif?imgver=1

图 4b.我2C 确认位。2线接口在确认数据时将SDA线拉低。

一个I2C写入周期从启动命令开始,然后写入 7 位从地址和发出写入或读取命令信号的第 <> 位。将写入命令的第八位设置为低电平,为读取命令设置高位。主站在第八个时钟周期后释放总线线路。如果从机确认传输正确,则从机在第九个时钟周期将SDA线保持低电平。如果从机不确认正确的写入命令,则从机释放SDA线(然后由上拉电阻保持高电平)。

然后,主站写入一个 8 位命令字节,后跟第二个 ACK/NACK 位。接下来,主站写入一个8位数据字节,后跟第三个ACK/NACK位。数据字节的最终应答位完成读/写周期,外设的输出更新。图 5a 说明了写入周期的示例。

一个I2C读取周期从启动命令开始,然后写入从地址,第八位拉高以发出读取命令信号。在ACK/NACK位之后,主设备写入命令字节以访问新的从寄存器。在第二个ACK/NACK位之后,主站重写从地址。然后在第三个ACK/NACK位之后,从机控制总线并一次写出5个数据位。参见图 <>b。当从与先前读取相同的从站寄存器读取时,主站只需写入从站的地址,然后才能从该从站读取数据。

pYYBAGP0QbeANbpgAAA4CxaUDs4377.gif?imgver=1

图5.2线接口一次传输5位数据。图 <>a 是 I2C 写入周期示例。图 5b 显示 I2C 读取周期示例。

I2C 接口支持慢速(高达 100kHz)、快速(高达 400kHz)和高速(高达 3.4MHz)协议。I2C 根据 CMOS 电压电平识别高低信号:低信号小于电源电压的 0.3 倍;高信号大于 0.7 x 电源电压。

系统管理总线 (SMBus)

英特尔建立了低速通信的SMBus标准,SMBus接口类似于I®2C. 喜欢我2C,SMBus使用2线接口,包括数据线(SMBDATA)和时钟线(SMBCLK)。SMBCLK 和 SMBDATA 线路也需要上拉电阻。使用8.5kΩ或更大的上拉电阻(采用3V电源)和14kΩ或更大的上拉电阻(采用5V电源)。SMBus 工作在 3V 至 5V 电源电压,可识别高于 2.1V 的高信号和低于 0.8V 的低信号。

超时和最大/最小时钟速度是 I 之间最显着的差异2C 和 SMBus 接口。我2C 总线工作在低至 DC 时,不会因总线不活动而超时。但是,SMBus 接口可能会超时。当从设备在时钟信号变低超过超时周期(最大 35ms)后重置其接口时,就会发生超时。SMBus 超时周期规定时钟的最低速度为 19kHz。SMBCLK 必须设置在 10kHz 和 100kHz 之间才能正确通信。连接到 I 的主站或从站2但是,C总线可以在处理数据所需的时间内保持低时钟。

外设示例

微控制器通常通过串行接口与其外设进行通信。微控制器使用3线或2线接口读取和写入外围设备的内部寄存器。然后,外设偏置并控制各种模拟和数字输出。例如,外围设备将:对电池的充电电流和电压进行编程;使用温度传感器控制风扇;并设置DAC的模拟输出电压以及各种电路的偏置条件。

图6所示为微控制器通过8线接口与5115位DAC(MAX2)通信。由于该DAC包括四个地址选择引脚,可产生16个唯一的从地址,因此您最多可以并行连接16个DAC。相同的两条总线也可以设置SMBus温度传感器/风扇控制器(MAX6641)的偏置条件,因为MAX6641具有不同的从地址。该风扇控制器调节 MOSFET 的栅极电压,以打开和关闭风扇。

poYBAGP0QbiATmEuAAA850jolUU959.gif?imgver=1

图6.因为这个微控制器使用I2C接口,只需要两条总线线就可以与众多外设通信,比如这个DAC和一个温度传感器,并联连接。

3线接口需要单独的芯片选择线来连接微控制器和并联连接的多个IC之间的通信,而更简单的2线接口使用相同的时钟和数据线与总线上的每个器件进行通信。您可以通过为每个外设设置不同的从地址来并联放置多个IC。最I2C外设包括地址选择引脚,允许您将每个外设设置为不同的从地址。以前,外设可以标识自身的从地址数量限制为2的幂。例如,如果外设有两个地址选择引脚,它可以在总线上用四个唯一的从地址来标识自己。

新设计通过更少的地址选择引脚提供更多的从地址。例如,MAX7319输入/输出端口扩展器只需两个地址选择引脚(AD16和AD2)即可编程为0个唯一的从地址。这些引脚可以连接到GND,电源电压(V抄送)、SDA 或 SCL。表 2 显示了可用的 16 个从地址。虽然位 A6、A5 和 A4 必须设置为 110,但位 A3 到 A0 可以通过 AD2 和 AD0 的四种不同设置进行编程。

引脚连接 设备地址
AD2 AD0 答6 答5 答4 答3 答2 答1 答0
标准及校正实验所 接地 1 1 0 0 0 0 0
标准及校正实验所 V抄送 1 1 0 0 0 0 1
标准及校正实验所 标准及校正实验所 1 1 0 0 0 1 0
标准及校正实验所 自主权评估 1 1 0 0 0 1 1
自主权评估 接地 1 1 0 0 1 0 0
自主权评估 V抄送 1 1 0 0 1 0 1
自主权评估 标准及校正实验所 1 1 0 0 1 1 0
自主权评估 自主权评估 1 1 0 0 1 1 1
接地 接地 1 1 0 1 0 0 0
接地 V抄送 1 1 0 1 0 0 1
接地 标准及校正实验所 1 1 0 1 0 1 0
接地 自主权评估 1 1 0 1 0 1 1
V抄送 接地 1 1 0 1 1 0 0
V抄送 V抄送 1 1 0 1 1 0 1
V抄送 标准及校正实验所 1 1 0 1 1 1 0
V抄送 自主权评估 1 1 0 1 1 1 1

未来进展

当今的3线接口满足与2线接口不同的需求,每种接口都有特定的优势。将来任何一个接口都不太可能完全取代另一个接口。I2C 设备的发展速度更快,因为它们开始集成 SMBus 功能,例如超时重置,可以在必要时关闭这些功能。新我2C 从地址的长度为 10 位,而不是只有 7 位,从而为用户提供了更大的灵活性。

3线和2线接口将共存,但我2随着更多的微控制器支持2线接口,C语言可能会获得市场份额。我2C的易用性和较少的公交线路可能会推动其增长超过SPI的增长。

审核编辑:郭婷

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

    关注

    98

    文章

    6496

    浏览量

    544495
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91528
  • 总线
    +关注

    关注

    10

    文章

    2878

    浏览量

    88056
收藏 人收藏

    评论

    相关推荐

    i2c总线ppt(I2C总线器件应用)

    I2C总线器件应用第一节 I2C总线器件应用概述I2C总线工作原理
    发表于 08-13 17:34 0次下载

    什么是i2c总线

    什么是i2c总线  下载请点击: i2c总线协议中文版 
    发表于 11-05 09:26 2919次阅读

    SPII2C、UART串行总线协议

    串口通讯通信协议UART,以及常用外设通信协议 SPII2C的介绍与他们之间的区别
    发表于 11-30 11:28 95次下载

    SPI总线I2C总线工作原理

    SPI总线I2C总线工作原理,本内容详细介绍了SPI总线
    发表于 12-08 16:55 0次下载

    CAN、I2S、I2CSPI、SSP总线的介绍和比较

    CAN、I2S、I2CSPI、SSP总线的介绍和比较。
    发表于 07-14 16:20 53次下载

    spii2c总线有什么区别

    SPI是串行外设接口(Serial Peripheral Interface)的缩写。I2C总线是一个真正的多主机总线
    发表于 12-06 11:39 4.1w次阅读
    <b class='flag-5'>spi</b>与<b class='flag-5'>i2c</b><b class='flag-5'>总线</b>有什么区别

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

    SDA 和 SCL 都是双向的。SPI 总线有两根单独的线,分别用于两个方向的通信,而 I2C 总线不同,它使用同一根线来完成主机发送数据和接收从机响应。另外,与
    的头像 发表于 03-21 10:24 2.5w次阅读
    浅谈<b class='flag-5'>I2C</b><b class='flag-5'>总线</b>,<b class='flag-5'>I2C</b>接口和<b class='flag-5'>SPI</b>接口的作用相同

    I2C总线是如何工作的

    I2C结合了SPI和UART的优点。使用I2C,您可以将多个从设备连接到单个主设备上(如SPI),并且可以让
    发表于 09-13 15:46 2285次阅读

    I2C总线的工作原理以及优缺点解析

    如果您正在使用OLED显示器,气压传感器或陀螺仪/加速度计模块的项目,您可能会发现正在使用I2C总线I2C总线简介 I2C结合了
    发表于 11-28 09:13 1.5w次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>的工作原理以及优缺点解析

    i2c总线用来做什么_i2c总线数据传输过程

    I2C总线控制器为微控制器或微处理器提供控制I2C总线
    发表于 11-24 14:16 7263次阅读

    SPI可以像I2C多个设备吗?

    最近看到有小伙伴在讨论:SPI可以像I2C多个设备吗?
    的头像 发表于 05-14 10:10 3919次阅读
    <b class='flag-5'>SPI</b>可以像<b class='flag-5'>I2C</b>挂<b class='flag-5'>多个</b>设备吗?

    I2C串行总线协议是什么?I2C总线有哪些优点?

    1982年发明并推广,用于连接智能传感器和存储器器件,以及控制和监控外设。该协议是一种主从式通信协议,允许多个从设备连接到同一总线上,并在总线
    的头像 发表于 09-12 11:18 1652次阅读

    I2CSPI与UART:如何布局这些通用总线

    如果您要为项目构建开发板或使用通用MCU,则会发现许多用于通信其他活动组件的协议。USB和以太网之类的标准已内置在大多数控制器中,用于与计算机外围设备一起使用。尽管如此,仍使用I2CSPI
    的头像 发表于 11-08 17:33 1116次阅读
    <b class='flag-5'>I2C</b>与<b class='flag-5'>SPI</b>与UART:如何布局这些通用<b class='flag-5'>总线</b>

    蓝牙串口通讯总线——I2C/SPI/UART

    嵌入式工程师在做串口通信调试工作的时候,会经常用到I2CSPI、UART这3条总线I2CSPI、UART这三种通信
    的头像 发表于 01-22 09:41 1629次阅读
    蓝牙串口通讯<b class='flag-5'>总线</b>——<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/UART

    详解I2C总线SPI总线的区别

    I2C(Inter-Integrated Circuit)表示集成电路互连,是一种用于线路板内部芯片之间通信的总线
    的头像 发表于 10-16 15:16 3998次阅读
    详解<b class='flag-5'>I2C</b><b class='flag-5'>总线</b>与<b class='flag-5'>SPI</b><b class='flag-5'>总线</b>的区别