目录
SPI电路简介
SPI信号
SPI工作流程
SPI工作模式
1 SPI电路简介
SPI的全称是串行外设接口的简写,英文全称为Serial Peripheral Interface。它是一种全双工、通信的通信总线,物理层仅占用四根线缆,不仅能节省硬件资源,还能在PCB布局上节省空间。
SPI通信分为主模式和从模式两种,且一个SPI通信系统中仅允许一个主设备(Master),一个或者多个从设备(Slave)。时钟信号由主设备提供,接受时钟信号的设备为从设备(Slave)。SPI系统的读操作、写操作都是由设备发起,存在多个从设备(Slave)时,通过各自的片选信号进行管理。
2 SPI信号
SPI系统的信号主要包括四根信号,分别为主设备输出从设备输入信号(MOSI)、主设备输入从设备输出(MISO)、时钟信号(SCK)、片选信号(CS)。具体功能见下:
MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
SCK:串行时钟信号,由主设备产生。
CS:从设备片选信号,由主设备控制。它的功能是用来作为“片选引脚”,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。
当然,这些信号在不同的应用场景有不同的名称,但是它们的具体含义都是相同的。常用的术语见下:
名称 | 专业术语 |
MISO | SIMO、DOUT、DO、SDO或SO |
MOSI | SOMI、DIN、DI、SDI或SI |
SCK | SCLK |
CS | CE、CS或SSEL |
3 SPI工作流程
SPI系统通信的过程比较简单,具体见下:
主设备发起信号,将CS信号置低,开始通信。
主设备发送时钟信号,并确认通信的读、写状态,以及SPI的模式。
主设备将要发送的数据写入数据缓冲区,并通过移位寄存器将数据串行发送出去,从设备将数据通过移位寄存器将数据存储到接受缓冲区。
从设备将读取的数据从过MISO返还给主机,这样两个移位寄存器中数据就被交换。
4 SPI工作模式
SPI系统有四种工作模式,依赖于时钟极性和时钟相位配置。
时钟极性CKP/Clock Polarit
CPK可配置为0或者1,对应时钟默认状态(IDLE)设置为高电平或者低电平。
CPK值 | 时钟默认状态 |
0 | 时钟空闲IDLE为低电平。 |
1 | 时钟空闲IDLE为高电平。 |
相位极性CKE/Clock Phase(Edge)
CKE可配置为0或1,就是采集数据是在时钟的具体相位或者边沿。
CKE | 数据采样点 |
0 | 是在时钟信号SCK的第一个跳变沿采样。 |
1 | 是在时钟信号SCK的第二个跳变沿采样。 |
四种模式图解
传输的开始和结束用绿色虚线表示,采样边沿用橙色虚线表示,移位边沿用蓝色虚线表示。
SPI模式0,CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。
SPI模式1,CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出。
SPI模式2,CPOL = 1,CPHA = 0:CLK空闲状态 = 高电平,数据在下降沿采样,并在上升沿移出。
SPI模式3,CPOL = 1,CPHA = 1:CLK空闲状态 = 高电平,数据在上升沿采样,并在下降沿移出。