STM32_库函数学习笔记_SPI_01_SPI原理

STM32库函数SPI学习笔记

SPI原理

SPI内部结构简明图

SPI接口使用4线通信:
MISO:主设备输入,从设备输出
MOSI:主设备输出,从设备输入
SCLK:时钟
CS:片选

主从机都有一个串行移位寄存器,主机通过向其寄存器写入一个字节来发起一次传输。

主从机的移位寄存器组成环形,每个时钟周期移动一位,每8或16个周期,两寄存器数据完全交换(帧格式可选8或16位)。

从机的读写操作是同步的。主机只做写操作就忽略接受的字节,只做读操作就发送一个空字节来引发从机传输。
SPI接口框图

STM32 SPI引脚
SPI1:PA5-7
SPI2:PB13-15
SPI3:PB3-5
(片选采用软件NSS模式,SPI_NSS脚不用)
引脚配置
SPI引脚配置

从选择(NSS)脚管理

选用软件NSS模式,设置SPI_CR寄存器的SSM位来使能。

时钟相位和极性

由SPI_CR寄存器的CPOL和CPHA来组合成4中时序关系:
CPHA=1
CPHA=0

数据帧格式

SPI_CR1寄存器中的LSBFIRST位,输出数据位时可以MSB在先也可以LSB在先。
SPI_CR1寄存器的DFF位,每个数据帧可以是8位或是16位。所选择的数据帧格式对发送和/或接收都有效。

状态标志位

应用程序通过3个状态标志可以完全监控SPI总线的状态。

发送缓冲器空闲标志(TXE)

此标志为’1’时表明发送缓冲器为空,可以写下一个待发送的数据进入缓冲器中。当写入SPI_DR时, TXE标志被清除。

接收缓冲器非空(RXNE)

此标志为’1’时表明在接收缓冲器中包含有效的接收数据。读SPI数据寄存器可以清除此标志。

忙(Busy)标志

BSY标志由硬件设置与清除(写入此位无效果),此标志表明SPI通信层的状态。
当它被设置为’1’时,表明SPI正忙于通信,但有一个例外:在主模式的双向接收模式下(MSTR=1、BDM=1并且BDOE=0),在接收期间BSY标志保持为低。

SPI中断

中断事件 事件标志 使能控制位
发送缓冲器空 TXE TXEIE
接收缓冲器非空 RXNE RXEIE
主模式失效 MODF ERRIE
溢出错误 OVR ERRIE
CRC错误 CRCERR ERRIE