一、概述

SPI(Serial Peripheral interface,串行外围设备接口) 通信协议是 Motorola 公司首先在其MC68HCXX 系列处理器上定义的。SPI 接口是一种高速的全双工同步的通信总线,已经广泛应用在众多 MCU、存储芯片、AD 转换器和 LCD 之间。

由 SPI 连成的串行总线是一种三线同步总线,总线上可以连接多个可作为主机的 MCU,装有 SPI 接口的输出设备,输入设备如液晶驱动、A/D 转换等外设,也可以简单连接到单个 TTL 移位寄存器的芯片。总线上允许连接多个能作主机的设备,但在任一瞬间只允许有一 个设备作为主机。总线的时钟线 SCK 由主机控制,另外两根分别是:主机输入/从机输出线 MISO 和 主机输出/从机输入线 MOSI。下图就是 SPI 总线的典型结构图:

image.png

系统可以简单,也可以复杂,主要有以下几种形式:

一台主机 MCU 和若干台从机 MCU。 多台 MCU 互相连接成一个多主机系统。 一台主机 MCU 和若干台从机外围设备。

二、SPI 详解

1、基本信息

1.1 SPI 的引脚信息

其他制造商可能会遵循其他命名规则,但是最终他们指的相同的含义。以下是一些常用术语,

1.2 SPI 的工作原理

在主机和从机都有一个串行移位寄存器,主机通过向它的 SPI 串行寄存器写入一个字节来发起一次传输。串行移位寄存器通过 MOSI 信号线将字节传送给从机,从机也将自己的串行移位寄存器中的内容通过 MISO 信号线返回给主机。这样,两个移位寄存器中的内容就被交换。外设的写操作和读操作是同步完成的。如果只是进行写操作,主机只需忽略接收到的字节。反之,若主机要读取从机的一个字节,就必须发送一个空字节引发从机传输。