SPI 简介
SPI(串行外围设备接口)是由Motorola 公司推出的一种同步串行接口总线,其在物理上是通过接在外围设备微控制器(PIC micro) 上面的微处理控制单元 (MCU) 上的同步串行端口(Synchronous Serial Port,SSP) 的模块来实现的, 它允许 MCU 以全双工的同步串行方式, 与各种外围设备进行高速数据通信.SPI总线遵从主从模式,由主设备发起通讯请求,通常工作于全双工模式,由4条数据时钟线组成,如下图与下表。
SPI设备连接框图(0-0)
SPI接口描述表(0-1)
接口管脚 | 名称 | 描述 |
SCK | 串行移位时钟 | 时钟信号,只能由主器件产生 |
MOSI | 串行数据输出 | 主器件数据输出,从器件数据输入,用于主器件到从器件的数据传输 |
MISO | 串行数据输入 | 主器件数据输入,从器件数据输出,用于从器件到主器件的数据传输。 |
CS/SS | 从使能/片选信号 | 设备选择线(片选),由主器件控制,当从器件片选信号输入低电平时为选中状态,/SS是针对从器件而言的,作为主器件,不需要使用/SS。 |
SPI连接设备
在SPI连接设备中,主要有两种方式:一主一从 和 一主多从 ,从硬件连接上讲这主要取决于 SPI控制器上的CS的个数,即CS总数决定此SPI控制器上可以挂在的从设备总数,连接方式如下图。
SPI传输原理
SPI通信本质上是一个串行移位过程,原理非常简单,如下图所示,SPI主从器件构成一个环形总线结构,在主机输出的SCLK时钟控制下,两个移位寄存器进行数据交换。
SPI四种工作模式
CPOL:时钟极性选择,为0时SPI总线空闲为低电平,为1时SPI总线空闲为高电平
CPHA:时钟相位选择,为0时在SCK第一个跳变沿采样,为1时在SCK第二个跳变沿采样
CPOL与CPHA组成了四种SPI mode,如下图:
工作方式1:CPOL = 0 CPHA = 0;
工作方式2:CPOL = 0 CPHA = 1;
工作方式3:CPOL = 1 CPHA = 0;
工作方式4:CPOL = 0 CPHA = 1;
工作方式1:
当CPHA=0、CPOL=0时,SPI总线工作在方式1。MISO引脚上的数据在第一个SPSCK沿跳变之前已经上线了,而为了保证正确传输,MOSI引脚的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,首先将数据上线,然后在同步时钟信号的上升沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。
工作方式2:
当CPHA=0、CPOL=1时SPI总线工作在方式2。与前者唯一不同之处只是在同步时钟信号的下降沿时捕捉位信号,上升沿时下一位数据上线。
工作方式3:
当CPHA=1、CPOL=0时SPI总线工作在方式3。MISO引脚和MOSI引脚上的数据的MSB位必须与SPSCK的第一个边沿同步,在 SPI传输过程中,在同步时钟信号周期开始时(上升沿)数据上线,然后在同步时钟信号的下降沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时 (上升沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。
工作方式4:
当CPHA=1、CPOL=1时SPI总线工作在方式4。与前者唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号,下降沿时下一位数据上线。
Working