串行外设接口 (SPI) 是一种高速同步串行输入和输出 (I/O) 端口,其允许以编程的位传输速率将编程长度(1 至 16 位)的串行位流移入和移出器件。SPI 通常用于 MCU 控制器与外部外设或另一控制器之间的通信。典型应用包括外部 I/O 或者通过诸如移位寄存器、显示驱动器和模数转换器 (ADC) 等器件进行外设扩展。SPI 的主器件或从器件运行时支持多器件通信。该端口支持 16 级接收和发送 FIFO,以减少 CPU 服务开销。
SPI 模块的特性包括:
- SPISOMI:SPI 从器件输出/主器件输入引脚
- SPISIMO:SPI 从器件输入/主器件输出引脚
- SPISTE:SPI 从器件发送使能引脚
- SPICLK:SPI 串行时钟引脚
- 两种工作模式:主器件和从器件
- 波特率:125 个不同的可编程速率。可采用的最大波特率受限于 SPI 引脚上使用的 I/O 缓冲器的最大速度。
- 数据字长度:1 至 16 数据位
- 四种时钟方案(由时钟极性和时钟相位的位控制)包含:
- 无相位延迟的下降沿:SPICLK 高电平有效。SPI 在 SPICLK 信号的下降沿上发送数据,在 SPICLK 信号的上升沿上接收数据。
- 有相位延迟的下降沿:SPICLK 高电平有效。SPI 在 SPICLK 信号下降沿提前半个周期发送数据,在 SPICLK 信号的下降沿上接收数据。
- 无相位延迟的上升沿:SPICLK 低电平无效。SPI 在 SPICLK 信号的上升沿上发送数据,在 SPICLK 信号的下降沿上接收数据。
- 有相位延迟的上升沿:SPICLK 低电平无效。SPI 在 SPICLK 信号上升沿的半个周期之前发送数据,而在 SPICLK 信号的上升沿上接收数据。
- 同时接收和发送操作(可在软件中禁用发送功能)
- 发送器和接收器操作通过中断驱动或轮询算法完成
- 16 级发送/接收 FIFO
- 高速模式
- 延迟的发送控制
- 3 线 SPI 模式
- 在带有两个 SPI 模块的器件上实现数字音频接口接收模式的 SPISTE 反转
图 6-69 所示为 SPI CPU 接口。