STM32 SPI介绍及CubeMX配置

目录

一.SPI简介

二.SPI协议

物理层:

协议层:

1.SPI的基本通讯过程

2.通信模式

三.STM32中的SPI

SPI框图:

1.通信引脚 

2.时钟控制逻辑

3.数据控制逻辑

4.整体控制逻辑

四.CubeMX配置SPI 

1.配置时钟源 

2.SPI配置

3.时钟源设置

4.项目文件设置


一.SPI简介

SPI(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工通信,被广泛应用在设备与MCU之间要求通信频率高的场合

二.SPI协议

物理层:

主机MCU与从机通过四条线连接,其中SCK、MOSI、MISO三条线共用,SS为从设备选择信号线,使SPI可以支持多设备。

STM32 SPI介绍及CubeMX配置_第1张图片

STM32 SPI介绍及CubeMX配置_第2张图片

NSS:片选信号线,每个从设备都有一条独立片选信号线,独占主机的一个引脚,有多少个从设备就有多少片选信号线。当主机要选定从设备时,将该设备的SS线电平拉低,即片选有效,接下来主机开始与被选中的从机通信,当主机将SS线电平拉高结束通信。
SCK:时钟信号线,用于通讯数据同步。由通讯主机产生,并决定通讯频率。
MOSI:master output,slave input主设备输出从设备输入引脚,主机通过这条线向从机发送数据。
MISO:master input,slave output主设备输入从设备输出引脚,从机通过这条线向主机发送数据。

MOSI与MISO两条信号线使SPI可以实现全双工通信,如果只需要单向通信则可以少使用一条信号线。

协议层:

 SPI协议层定义了通讯的起始信号和停止信号、数据有效性、时钟同步等环节。

1.SPI的基本通讯过程

①:片选信号线选择从设备,通讯开始。

②④:SCK触发信号,MOSI与MISO变化等待采样。

③⑤:SCK采样信号,主机与从机分别对MISO、MOSI信号进行采集。

多次的触发、采样组成SPI数据传输过程。

⑥:片选信号线停止信号,通信停止。

STM32 SPI介绍及CubeMX配置_第3张图片

2.通信模式

SPI有四种通讯模式,他们的主要依靠总线空闲时SCK的时钟状态和数据采样时刻来区别。

STM32 SPI介绍及CubeMX配置_第4张图片

时钟极性CPOL:CPOL是指NSS总线空闲时SCK的电平信号,如果SCK为高电平,CPOL=1;SCK为低电平,CPOL=0。如上方时序图中CPOL=0.

时钟相位CPHA:CPHA是指数据的采样时刻,SCK的信号可以看作方波,CPHA=0时会在SCK的奇数边沿采样;CPHA=1时会在SCK的偶数边沿采样。如上方时序图中CPHA=1.

STM32 SPI介绍及CubeMX配置_第5张图片

三.STM32中的SPI

SPI框图:

STM32 SPI介绍及CubeMX配置_第6张图片

1.通信引脚 

STM32的多个SPI被引出到不同引脚上,使用时必须配置指定引脚。

STM32 SPI介绍及CubeMX配置_第7张图片

2.时钟控制逻辑

SCK时钟信号线由波特率发生器根据“控制寄存器 CR1”中的 BR[0:2]位控制,对fpclk分频后的频率就是SCK的时钟频率,其中的 fpclk频率是指 SPI 所在的 APB 总线频率,APB1 为 fpclk1,APB2 为 fpckl2。

STM32 SPI介绍及CubeMX配置_第8张图片

3.数据控制逻辑

SPI的MOSI及MISO都连接到数据移位寄存器上 ,向外发送数据时,数据寄存器会以发送缓冲区为数据源,把数据一位一位地发送出去;接收数据时,数据移位寄存器将数据线采样到的数据一位一位地存储到接收缓冲区中。通过写SPI数据寄存器(SPI_DR)可以将数据存到填充到发送 F 缓冲区中,通过读SPI数据寄存器(SPI_DR)可以获取接收缓冲区中的内容。其中数据帧长度可以通过控制寄存器( SPI_CR1)的DFF位配置成 8 位及 16 位模式;配置 LSBFIRST 位可选择 MSB 先行还是 LSB 先行。

STM32 SPI介绍及CubeMX配置_第9张图片

4.整体控制逻辑

STM32 SPI介绍及CubeMX配置_第10张图片

STM32 SPI介绍及CubeMX配置_第11张图片

整体控制逻辑负责协调整个 SPI 外设,控制逻辑的工作模式根据我们配置的 控制存器(CR1/CR2) 的参数而改变。在外设工作时,控制逻辑会根据外设的工作状态修改 状态寄存器(SR),我们只要读取状态寄存器相关的寄存器位,就可以了解 SPI 的工作状态了

四.CubeMX配置SPI 

1.配置时钟源 

STM32 SPI介绍及CubeMX配置_第12张图片

设置高速外部时钟HSE 选择外部时钟源

2.SPI配置

STM32 SPI介绍及CubeMX配置_第13张图片

这里选择全双工模式,不启用硬件NSS 

STM32 SPI介绍及CubeMX配置_第14张图片

 选择数据格式(8位/16位、高位优先/低位优先) 、时钟极性、时钟相位

STM32 SPI介绍及CubeMX配置_第15张图片

 配置引脚复用

3.时钟源设置

STM32 SPI介绍及CubeMX配置_第16张图片

 fpclk设置为72mHz

4.项目文件设置

STM32 SPI介绍及CubeMX配置_第17张图片

STM32 SPI介绍及CubeMX配置_第18张图片

然后点击GENERATE CODE 创建工程即可。

你可能感兴趣的:(stm32,单片机,arm)