串行外设接口(SPI),它是一种高速同步串行输入和输出(I/O)端口,允许程序长度(1到16位)的串行位流以程序的比特传输速率进出设备。SPI通常用于MCU控制器与外部外设或其他控制器之间的通信。典型的应用包括通过移位寄存器、显示驱动程序和模数转换器(adc)等设备进行的外部I/O或外设扩展。
SPI的主或从操作支持多设备通信。该端口支持16级FIFO收发,以减少CPU服务开销。
SPI模块的特性包括:

表24-1对SPI模块信号进行分类并提供摘要

当SPI处于从模式时,SPISTE信号提供了gate任何虚假时钟和数据脉冲的能力。SPISTE上的HIGH逻辑信号将不允许从机接收数据。这可以防止SPI从站失去与主站的同步。不建议将SPISTE始终绑定到活动状态。
如果SPI从端确实失去了与主端同步,那么切换SPISWRESET将重置内部位计数器以及模块中的各种状态标志。通过重置位计数器,SPI将下一个时钟转换解释为新传输的第一个位。
对操作模式、中断、数据格式、时钟源和初始化的解释。给出了数据传输的典型时序图。
图24-4显示了用于两个控制器之间通信的SPI的典型连接:一个主控制器和一个从控制器。
主机通过发送spickk信号来传输数据。对于从端和主端,数据从SPICLK一端的移位寄存器移出,锁存到另一端SPICLK时钟边缘的移位寄存器中。如果CLK_PHASE位高,则在spickk转换前半个周期传输和接收数据。
结果,两个控制器同时发送和接收数据。应用软件判断数据是有意义数据还是虚拟数据。有三种可能的数据传输方法:
主发送数据;Slave发送虚拟数据。
Master发送数据;Slave发送数据。
Master发送虚拟数据;Slave发送数据。
master可以在任何时候启动数据传输,因为它控制着SPICLK信号。然而,软件决定了主机如何检测从机何时准备好数据。
SPI可以在主模式或从模式下工作。MASTER_SLAVE位选择工作模式和spiclk信号的来源。

在主模式(MASTER_SLAVE = 1)下,SPI为整个串行通信网络提供在SPICLK引脚上的串行时钟。数据在SPISIMO引脚上输出,并从SPISIMO引脚锁存。
SPIBRR寄存器决定了网络的发送和接收比特传输速率。SPIBRR可以选择125种不同的数据传输速率。
写入SPIDAT或SPITXBUF的数据首先在SPISIMO引脚上启动数据传输,MSB(最高有效位)。同时,接收到的数据通过SPISOMI引脚转移到LSB(最低有效位)。
图24-5是SPI在主模式下的框图。它显示了SPI主模式中可用的基本控制块。

在从模式(MASTER_SLAVE = 0)下,数据在SPISOMI引脚上移出,在SPISIMO引脚上移入。SPICLK引脚被用作串行移位时钟的输入,该时钟由外部网络主机提供。
传输速率由这个时钟定义。SPICLK输入频率不能大于LSPCLK频率除以4。
图24-6是SPI从模式的框图。它显示了SPI从模式中可用的基本控制块。
