spi基础知识

spi基础知识

SPI 总线

SPI(Serial Peripheral Interface),串行外设接口,是 Motorola 提出的一种高速的、全双工、同步的通信总线。SPI 接口主要用于 MCU 与外围设备的通信,外围设备包括 EEPROM、FLASH、实时时钟、 AD 转换器、数字信号处理器和数字信号解码器等。
它以主从方式工作,通常有一个主设备和一个或多个从设备。
SPI 在芯片的管脚上只占用四根线,分别是 MOSI(数据输出),MISO(数据输入),SCLK(时钟),CS(片选)。
MOSI:主机数据输出,从机数据输入;
MISO:主机数据输入,从机数据输出;
SCLK:时钟信号,由主机产生;
CS:从机使能信号,由主机控制。
spi基础知识

SPI 总线原理

SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个“发送者(Transmitter)”
或者“接收者(Receiver)”。实质上每次 SPI 的数据传输都是主从设备在交换数据。SPI 总线的传输中,CS 信号是低电平有效的,当我们要与某外设通信的时候,需要将该外设上的 CS线置低。在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样。如果之前接收到的数据没有被读取,那么这些已经接收完成的数据将有可能会被丢弃,导致 SPI物理模块最终失效。因此,SPI 在传输完数据后,必须读取 SPI 设备里的数据,即使这些数据在程序里是无用的。

SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性 CPOL(Clock Polarity)和相位 CPHA(Clock Phase)可以配置。CPOL,表示 SCLK 空闲的时候,其电平值是低电平还是高电平;CPHA,表示数据采样在第一个跳变沿还是第二个跳变沿。

CPHA=0,表示第一个边沿:
对于 CPOL=0,SCLK 空闲时是低电平,第一个跳变沿就是从低变到高,所以是上升沿;
对于 CPOL=1,SCLK 空闲时是高电平,第一个跳变沿就是从高变到低,所以是下降沿;
CPHA=1,表示第二个边沿:
对于 CPOL=0,SCLK 空闲时是低电平,第二个跳变沿就是从高变到低,所以是下降沿;
对于 CPOL=1,SCLK 空闲时是高电平,第一个跳变沿就是从低变到高,所以是上升沿;
spi基础知识