11.2.3 SPI配置
1.波特率发生器配置
SPI如果作为主设备,需要产生同步SCK信号,给从设备提供同步时钟。这个时钟可通过控制寄存器SPI_CR1[5∶3]位进行设置。波特率发生器配置如表11.1所示。
表11.1 波特率发生器配置

例如,系统时钟为8 MHz,若设为256分频,则SPI的波特率为31.25 Kbit/s。
CPOL配置是指空闲状态下,SCK可设置为高电平或低电平。
CPHA配置是指数据采样从第一个时钟边沿开始,还是从第二个时钟边沿开始。
2.数据帧格式配置
根据SPI_CR1寄存器中的LSBFIRST位,输出数据位时可配置为MSB在先,也可以配置为LSB在先。根据SPI_CR1寄存器的DFF位,每个数据帧可以是8位或是16位。所选择的数据帧格式对发送和接收都有效。
3.数据传输模式配置
SPI数据传输的模式可以配置为主模式和从模式,可以配置成发送模式和接收模式,可以配置成全双工和单工模式,有7种组合应用。
(1)全双工主模式:主模式下既可以发送,也可以接收。
(2)全双工从模式:从模式下既可以发送,也可以接收。
(3)单工主模式:单线主模式下既可以发送,也可以接收。
(4)单工从模式:单线从模式下既可以发送,也可以接收。
(5)只发送主模式:只能在主模式下发送数据。
(6)只接收主模式:只能在主模式下接收数据。(https://www.daowen.com)
(7)只接收从模式:只能在从模式下接收数据。
4.DMA配置
为了达到最大通信速度,需要及时往SPI数据发送缓冲器中填写数据。同样,数据接收缓冲器中的数据也必须及时读走以防止溢出。为了方便进行高速率的数据传输,SPI实现了一种采用简单的请求/应答的DMA机制,以实现快速的批量数据传输,同时可以配置带CRC的DMA功能,在通信结束时,自动完成CRC校验。可由SPI_SR寄存器的CRCERR标志位检测数据是否正确,若为1,表示在传输期间发生错误;若为0,表示数据正确。
5.CRC校验配置
CRC校验用于保证全双工通信的可靠性。数据发送和数据接收分别使用单独的CRC计算器,通过对每一个接收位进行可编程的多项式运算来计算CRC。CRC的计算是在由SPI_CR1寄存器中CPHA和CPOL位定义的采样时钟边沿进行的。系统提供了两种CRC计算方法:8位数据帧采用CRC8;16位数据帧采用CRC16。
6.状态标志及中断配置
SPI中的应用程序通过3个状态标志来监控SPI总线的状态。
(1)数据发送缓冲器空标志(TXE):此标志为1时表明数据发送缓冲器为空,可以写下一个待发送的数据进入缓冲器中。当写入发送寄存器时,TXE标志被清除。
(2)数据接收缓冲器非空标志(RXNE):此标志为1时表明在数据接收缓冲器中包含有效的接收数据。读SPI数据寄存器可以清除此标志。
(3)数据忙(Busy)标志:当它被设置为1时,表明SPI正忙于通信。
SPI的中断也有数据发送缓冲器空标志、数据接收缓冲器非空标志、主模式失效事件、溢出错误、CRC错误标志,SPI中断请求及使能如表11.2所示。
表11.2 SPI中断请求及使能

7.SPI引脚分布
SPI引脚涉及片选
、SCK、MISO、MOSI,每个SPI均有4个对应的引脚,这些引脚与通用I/O接口复用。SPI引脚分布如表11.3所示。
表11.3 SPI引脚分布
