3.1定义
串行外设接口( Serial Peripheral Interface,SPI )是一种同步、全双工、主从式接口。SPI一般包括四根线,分别为CS(片选),SCLK(时钟线),MOSI(主机输出,从机输入),MISO(主机输入,从机输出)。其中CS片选是用来选择哪一台从机与主机通信,当从机片选引脚为高电平或者为低电平时(一般为低电平,具体看芯片手册),主机就知道了与哪一个从机通信,因为是一台主机,多台从机通信方式,所以称为主从式通信方式,当使用多个从机时,主机需要为每个从机提供单独的片选信号。SCLK为主机发出的时钟信号线,主机发出一种固定频率的方波作为时钟信号,用来确定发出和接受的数据,因为通过时钟线确定数据,所以是一种同步接口。MOSI是主机发出数据线,从机的接受数据线。MISO是主机接受数据线,从机发出数据线。因为有两条数据线,可以同时发出和接受数据,所以是全双工。
3.2四种模式
SPI有4种工作模式是指采集传输数据线上数据的4种不同的时机。在芯片上有两个寄存器分别为CPOL (Clock POlarity)和 CPHA (Clock PHAse)。CPOL配置SPI总线的极性,CPHA配置总线的相位。SPI总线的极性会影响总线空闲时的时钟信号是低电平还是高电平。CPOL=1时,总线空闲时是高电平,CPOL=0时,总线空闲时是低电平。SPI总线的相位决定从哪个跳变沿采集数据,一个时钟周期会有两个跳变沿。CPHA = 0:表示从第一个跳变沿开始采样。CPHA = 1:表示从第二个跳变沿开始采样。
PS:移出也就是输出数据。下面完整的时序图中绿色虚线代表数据传输的开始和结束,橙色代表数据的采样边沿,蓝色代表数据的移位边沿。
3.2.1 模式0(CPOL=0; CPHA=0)
CPOL = 0:空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿
CPHA = 0:数据在第1个跳变沿(上升沿)采样
3.2.2 模式1(CPOL=0; CPHA=1)
CPOL = 0:空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿
CPHA = 0:数据在第2个跳变沿(下降沿)采样
3.2.3 模式2(CPOL=1; CPHA=0)
CPOL = 0:空闲时是高电平,第1个跳变沿是下降沿,第2个跳变沿是上升沿
CPHA = 0:数据在第1个跳变沿(下降沿)采样
3.2.3 模式3(CPOL=1; CPHA=1)
CPOL = 0:空闲时是高电平,第1个跳变沿是下降沿,第2个跳变沿是上升沿
CPHA = 0:数据在第2个跳变沿(上升沿)采样
3.3从机配置
从机配置有常规的配置和菊花链模式配置。
3.3.1常规配置
常规配置需要给每个从机设备分配一个片选引脚用于从机的选择。主机的片选线数量必须大于等于从机的数量,可以使用多路复用器产生片选信号来减少主机的片选线。
3.3.2菊花链模式
在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。并不是所有器件支持菊花链模式。
3.4 SPI优缺点
优点:
- 全双工串行通信
- 高速数据传输速率
- 简单的软件配置
- 极其灵活的数据传输,不限于8位,它可以是任意大小的字
- 非常简单的硬件结构。从站不需要唯一地址(与I2C不同)。从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。不需要收发器(与CAN不同)
缺点:
- 没有硬件从机应答信号(主机可能在不知情的情况下无处发送)
- 通常仅支持一个主设备
- 需要更多的引脚(与I2C不同)
- 没有定义硬件级别的错误检查协议
- 与RS-232和CAN总线相比,只能支持非常短的距离
3.5 SPI接口屏幕
SPI接口的屏幕一般有VCC,GND,SCLK,SDA,CS,RST,RS/DC七个引脚。与SPI有关的是SCLK,SDA和CS引脚。
引脚名 | 定义 |
---|---|
VCC | 电源正极 |
GND | 地 |
SCLK | SPI的时钟线 |
SDA | SPI的MOSI引脚,主机发数据,屏幕接受数据 |
CS | 片选引脚 |
RST | 屏幕复位引脚 |
RS/DC | 数据/命令控制引脚 |