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

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

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特性构架_第2张图片
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”可以获取接收缓冲区中的内容

你可能感兴趣的:(stm32)