SPI通信过程以及 STM32的SPI特性构架

1、SPI基本的通信的通讯时许
SPI通信过程以及 STM32的SPI特性构架

1、通讯的起始和停止信号
NSS片选信号由高到低 表示通讯的开始
NSS片选信号由低到高 表示通讯的结束
数据只有在NSS为低电平的时候才会接收和发送

2、数据的有效性
SPI使用MOSI MISO来接收发送数据,使用SCK来进行 数据同步。MOSI 及
MISO 数据线在 SCK 的每个时钟周期传输一位数据,且数据输入输出是同时进行的。
通过CPOL时钟极性/CPHA时钟相移来配置SPI的通讯模式。
CPOL: 0 SCK在空闲状态下为低电平
CPOL: 1 SCK在空闲状态下为高电平
CPHA: 0 数据在奇数边沿被采样
CPHA: 1 数据在偶数边沿被采样

STM32的SPI构架以及特性
SPI通信过程以及 STM32的SPI特性构架
1、通讯引脚
引脚 编号
SPI1 SPI2 SPI3
NSS PA4 PB12 PA15 下载口的 TDI
CLK PA5 PB13 PB3下载口的 TDO
MISO PA6 PB14 PB4 下载口的 NTRST
MOSI PA7 PB15 PB5
SPI1是APB2外设,最大传输速率为36Mbits/S
SPI2、SPI3是APB1外设,最大传输速率为18Mbits/s

2、时钟控制逻辑
CK线的时钟信号,由波特率发生器根据“控制寄存器 CR1”中的 BR[0:2]位控制,该位是对 fpclk 时钟的分频因子,对 fpclk 的分频结果就是 SCK 引脚的输出时钟频率

3、数据控制逻辑
数据发送:当向外部发送数据的时候,数据移位寄存器以“发送缓冲区”为数据源,把数据一位一位地通过数据线发送出去;
数据接收:当从外部接收数据的时候,数据移位寄存器把数据线采样到的数据一位一位地存储到“接收缓冲区”中。
通过写 SPI的“数据寄存器 DR”把数据填充到发送缓冲区中,通过读“数据寄存器 DR”,可以获取接收缓冲区中的内容
其中数据帧长度可以通过“控制寄存器 CR1”的“DFF 位”配置成 8 位及 16 位模式;配置“LSBFIRST 位”可选择 MSB 先行还是 LSB 先行。

4、整体控制逻辑
主要是控制寄存器的配置以及状态寄存器的读取

通讯过程
1、控制 NSS 信号线,产生起始信号
2、把要发送的数据写入到“数据寄存器 DR”中,该数据会被存储到发送缓冲区
3、通讯开始, SCK 时钟开始运行。 MOSI 把发送缓冲区中的数据一位一位地传输出去; MISO 则把数据一位一位地存储进接收缓冲区中;
4、当发送完一帧数据的时候,“状态寄存器 SR”中的“TXE 标志位”会被置 1,表示传输完一帧,发送缓冲区已空;类似地当接收完一帧数据的时候,“RXNE标志位”会被置 1,表示传输完一帧,接收缓冲区非空;
5、等待到“TXE标志位”为 1时,若还要继续发送数据,则再次往“数据寄存器 DR”写入数据即可;等待到“RXNE 标志位”为 1 时,通过读取“数据寄存器 DR”可以获取接收缓冲区中的内容