华清远见-STM32 SPI笔记

发布于:2023-01-01 ⋅ 阅读:(487) ⋅ 点赞:(0)

一,SPI介绍

SPI英文名叫Serial  Peripheral  Interface,中文名叫串行外围设备接口。是由Motorola公司开发,用来在微控制器和外围设备芯片之间提供一个低成本、易使用的接口。这种接口可以用来连接存储器(存储数据)、AD转换器、DA转换器、实时时钟、LCD驱动器、传感器、音频芯片、甚至其他处理器。

与标准的串行端口不同,SPI是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生。接收数据的外设(从设备)使用时钟对串行比特流的接收进行同步化。可能会有许多芯片连接到主机的同一个SPI接口上,这时主机通过触发从设备的芯片的片选输入引脚来选择接收数据的从设备,没有被选中的外设将不会参与SPI传输。

二 ,SPI控制方式

采用主-从模式(Master-Slave) 的控制方式。SPI主要使用4个信号:主机输输出/从机输入(MOSI: Master Output Save Input)、主机输入/从机输出(MISO:Master Input Save Output)、串行时钟(SCLK或SCK)和外设片选(CS)。

SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作。

二 ,SPI 数据传输

主机和从机都包含一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节发起一次传输。寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机。这样两个移位寄存器中的内容就被交换了。从机的写操作和读操作时同步完成的,因此SPI成为一个很有效的协议。

 

通过SPI总线,在主机和从机之间传输数据,必须保证主机发出的时序和从机所要求的时序一致才可以。在这里,常常我们会说到两个概念:时钟极性和时钟相位。

(1)时钟极性:Clock Polarity,简称CPOL或POL,指SPICLK空闲时的状态   

SPI的CPOL,表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1:

CPOL=0,时钟空闲idle时候的电平是低电平,所以当SCLK有效的时候,就是高电平,就是所谓的active-high;

CPOL=1,时钟空闲idle时候的电平是高电平,所以当SCLK有效的时候,就是低电平,就是active-low;

 

(2)相位,对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,0对应着第一个边沿,1对应着第二个边沿。

对于:CPHA=0,表示第一个边沿:

对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;

对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;

CPHA=1,表示第二个边沿:

对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;