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位数据包。用于观察数据传输的是[color=var(--weui-LINK)]Teledyne LeCroy的[color=var(--weui-LINK)]HDO4104A示波器及其SPI串行解码选件。
图4:在Teledyne LeCroy的HDO4104A示波器(配有串行解码选件)上查看的SPI互换示例。波形如下:上面的轨迹是数据线,中间的轨迹是时钟,底部的轨迹是片选信号。数据轨迹上的蓝色覆盖区显示的是十六进制解码内容。(图片来源:Digi-Key Electronics)
模式1时钟由八脉冲组组成,其中空闲设置为0位 (CPOL = 0),数据在后沿或下降沿 (CPHA = 1) 计时。本示例中使用的示波器配有串行解码选件,用于对数据内容进行解码。在数据轨迹上的蓝色覆盖区读出十六进制的数据内容。解码仅与片选信号线被断言(0电平)时发生的数据有关。总共有17个时钟猝发,但只有其中5个猝发对应有效片选状态。 波形显示栅格下方的表格中列出了有效数据内容,还有每个数据包相对于示波器触发器的时间以及测量的时钟速率(本例中的速率为100kb/s)。每个猝发中的时钟周期数可设定从设备按时钟输出的数据位数。
|