SPI接口很好用,可你知道如何用好它吗?

SPI接口很好用,可你知道如何用好它吗?

作者:Art Pini


关键词:串行外设接口, 串行接口, SPI, 设备通信, 通信接口

嵌入式系统可使用一个或多个处理器或微控制器,在更复杂的系统中执行专用操作。这些嵌入式控制器需要与其他系统元件、传感器甚至其他控制器进行通信。虽然复杂的串行接口和协议很常见,但可能很难进行编程和故障排除,特别是在与之通信的设备数量较少时尤其如此。

设计人员需要具有简单的设备到设备数字接口的微控制器、外设和传感器,以便可以高速处理任意长度的数据,并且省去与协议相关的复杂编程任务。

简单的解决方案是选择带有串行外设接口 (SPI) 的控制器,这样可将控制器连接到一些本地的外设IC或传感器。这种接口是一种简单的同步接口,使用硬件寻址并以高达50兆赫兹 (MHz) 的时钟速率运行。SPI不使用需要寻址和状态检查的复杂协议,相反,它是适用于快速数据传输的基本接口,无需复杂接口总线的编程开销。

本文将介绍SPI接口的基础知识(包括多种工作模式),然后介绍具有SPI接口的微控制器和其他设备,并且说明如何使用SPI接口。


什么是SPI

SPI是由摩托罗拉(现为NXP Semiconductors公司的一部分)于1985年前后开发,是一种适用于短距离、设备到设备通信的同步串行接口。从那时起,这种接口就已成为许多半导体制造商,特别是微处理器和微控制器采用的事实标准。

SPI之所以广受欢迎,是因为它有很多优点。首先,SPI是一种简单的硬件寻址接口,在传输的位数方面具有全面的灵活性。该接口采用具有单个主设备的主从模型,可使用以高50 MHz时钟速率运行的全双工通信来处理多个从设备。它不使用标准协议,仅传输数据包,因此非常适合传输长数据流。

SPI最多可使用四条信号线(图1)。主设备(通常是处理器或控制器)为时钟 (SCK) 和片选 (CS) 信号线供电并进行控制。全多工操作由数据线“主出从入 (MOSI)”和“主入从出 (MISO)”进行处理。在简单的单主单从配置中,可以省去片选信号线,并将从设备的CS输入强制作为启用的逻辑条件。如果从设备只能发送数据(半双工通信),那么还可以省去MOSI线,进一步减少信号计数。数据按时钟信号输出,这样数据传输类似于移位寄存器,每个时钟移出一位。


图1:基本SPI全双工连接使用两条数据线(MOSI、MISO)、一条时钟线 (SCK) 和一条片选线 (CS)。从设备上的MOSI有时标记为从设备数据输入 (SDI)。MISO可标记为从设备数据输出 (SDO)。(图片来源:Digi-Key Electronics)



目前有两种方法可以处理多个从设备(图2)。


图2:两种处理多个从设备连接的配置。直接连接方式下每个从设备需要一个片选信号。菊花链连接方式仅使用一个片选信号,并将所有数据集中在一条线上。(图片来源:Digi-Key Electronics)


直接连接方式下每个从设备使用一条片选信号线。大多数微处理器都有三到四条片选线,这就将从设备的最大数量限制为片选线的数量。这在多数情况下不会出现问题,但如果某个设计需要总线上有更多的设备,这时可以使用菊花链方法配置一些设备。通过菊花链,多个从设备可使用一个共用的片选信号,而数据则通过共用数据线流出。这里再次将 SPI 从设备用作移位寄存器,来自从设备的数据可以在串行多路复用流中传播。


SPI时钟模式

由主设备控制并生成时钟。时钟的两个属性分别是时钟极性 (CPOL) 和时钟相位 (CPHA)。这些属性控制从设备相对数据进行计时的有效时钟边沿。CPOL = 0时,将时钟设为在逻辑0位置空闲。CPOL = 1时,时钟在逻辑1位置空闲。CPHA = 0时,数据在上升沿计时,CPHA = 1时,数据在下降沿计时(图3)。


图3:SPI时钟模式选择确定了进行数据采样的有效时钟边沿。(图片来源:Digi-Key Electronics)


主设备中的CPOL和CPHA线路设置决定了时钟极性以及进行数据计时的有效边沿。模式1是最常用的模式,但设计人员同样可以使用其他三种模式。

在示波器上可以观察SPI传输的三个信号分量(图4)。在此示例中,传输的是8位数据包。用于观察数据传输的是Teledyne LeCroyHDO4104A示波器及其SPI串行解码选件。


图4:在Teledyne LeCroy的HDO4104A示波器(配有串行解码选件)上查看的SPI互换示例。波形如下:上面的轨迹是数据线,中间的轨迹是时钟,底部的轨迹是片选信号。数据轨迹上的蓝色覆盖区显示的是十六进制解码内容。(图片来源:Digi-Key Electronics)


模式1时钟由八脉冲组组成,其中空闲设置为0位 (CPOL = 0),数据在后沿或下降沿 (CPHA = 1) 计时。本示例中使用的示波器配有串行解码选件,用于对数据内容进行解码。在数据轨迹上的蓝色覆盖区读出十六进制的数据内容。解码仅与片选信号线被断言(0电平)时发生的数据有关。总共有17个时钟猝发,但只有其中5个猝发对应有效片选状态。

波形显示栅格下方的表格中列出了有效数据内容,还有每个数据包相对于示波器触发器的时间以及测量的时钟速率(本例中的速率为100kb/s)。每个猝发中的时钟周期数可设定从设备按时钟输出的数据位数。


微处理器I/O选择

Microchip TechnologyATtiny816-MNR是多种微控制器的典型代表,因为它支持多个I/O接口(图5)。这款特别的控制器采用高性能、低功耗的AVR® RISC架构,运行频率高达200MHz。该控制器可由4或8KB闪存、256或512字节的SRAM以及128字节的EEPROM进行支持,所有这些存储器均集成在一个20引脚封装内。


图5:Microchip Technology的ATtiny816微控制器框图突出显示了I/O端口。该控制器配有一个SPI端口和一个USART端口,其中USART端口可配置为第二个SPI。(图片来源:Microchip Technology)


此微控制器的接口侧配有一个通用同步和异步收发器 (USART)、一个I2C兼容型双线接口 (TWI) 和SPI。USART可配置为第二个SPI端口。

SPI可使AVR设备和外围设备之间,或几个微控制器之间实现全双工通信。SPI外设可以配置为主设备或从设备,从而实现微控制器之间的通信。


基于SPI的传感器

各种通过SPI提供数字数据的传感器可以与集成了SPI的大量微处理器和微控制器配套使用。例如,Microchip Technology的TC77-3.3MCTTR数字温度传感器是一种可串行访问的数字温度传感器,适用于小外形尺寸、低成本的应用。TC77的温度范围为-55°C至+125°C。该传感器采用2.7V至5.5V电源,运行时消耗250微安 (μA) 电流,并具有仅消耗1μA电流的低功耗关断模式。

在典型应用中,此传感器可通过标准SPI连接与处理器相连,其温度数据可格式化为13位数字值,如图6所示。


图6:Microchip Technology的TC77是一款易于使用的温度传感器,不仅外形小巧,而且成本低廉。此温度传感器可以快速连接到控制器或处理器,将温度读数转换为13位数字值。如时序图所示,通过将CS信号线断言为逻辑0可启动通信。(图片来源:Microchip Technology)


该图显示了T77温度寄存器读取操作的时序图。通过断言CS信号线并将其置于逻辑0,可以启动通信。然后,传感器会发送第一位数据。微控制器在SCK的上升沿读取数据。随后使用SCK的下降沿输出传感器的其余数据。与前面的示例一样,此图也是模式1传输,只不过数据字较长。

扩大SPI的使用范围

除了在许多微处理器和微控制器中包含SPI之外,一些IC制造商还增强了该总线的功能。Analog DevicesLTC6820 isoSPI隔离式通信接口就是个很好的例子。该IC为使用差分信号并通过一条双绞线连接进行通信的两个SPI设备提供电流隔离(图7)。尽管时钟速率比10米距离时的1Mb/s标称速率有所降低,但这种信号模式将LTC6820 SPI接口的可用范围延长到远达100米(m)。


图7:一对LTC6820隔离器在两个SPI设备之间提供电流隔离。该IC在10米距离支持高达1Mb/s的数据传输速率,在最远100米的距离内,时钟速率有所降低。(图片来源:Analog Devices)


隔离由脉冲变压器提供,这种技术通常用于工业网络应用以及读取远程传感器。


结论

SPI解决了一些应用中对简单、低成本、低开销接口的需求。在这些应用中,可将源描述为数据流,而不是将数据读写到地址位置。这一特性使之成为处理微控制器和传感器、数字化仪、数字信号处理设备以及其他处理器之间的设备到设备通信的理想选择。


———————————————————–

如有任何问题,欢迎联系得捷电子Digi-Key客服团队。

中国(人民币)客服
- 400-920-1199
- service.sh@digikey.com
- QQ在线实时咨询 |QQ号:4009201199


中国(美金)/ 香港客服
- 400-882-4440
- 8523104-0500
- china.support@digikey.com

头像
得捷电子

评论已关闭。

Copyright©DigiKey Electronics