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

描述

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

介绍

虽然现实世界的信号总是模拟的,但如今越来越多的模拟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线接口更简单、更高效。

SPI

图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时序。

SPI

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

SPI

图 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Ω 或更大的上拉电阻连接到这些线路。

SPI

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

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

SPI

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

SPI

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

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

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

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

SPI

图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 的栅极电压,以打开和关闭风扇。

SPI

图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的增长。

审核编辑:郭婷

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分