13、SPI

1 SPI基本情况

1.1 SPI简介

Serial Peripheral Interface(SPI),即串行外设设备接口,是一种高速的全双工同步通信总线。

1.2 SPI与IIC比对

功能

SPI

IIC

通信方式

同步串行全双工

同步串行半双工

总线接口

MOSI、MISO、SCL、CS

SDA、SCL

拓扑结构

一主多从、一主一从

多主从

通信速率

50MHz以下

100KHz、400KHz、3.4MHz

从机选择

片选引脚选择

SDA上设备地址片选

数据格式

8/16位

8位

传输顺序

MSB/LSB

MSB

1.3 SPI四种工作模式

SPI的四种工作模式由时钟极性(CPOL)个时钟相位(CPHA)决定,通信双方必须配置为相同的模式。

CPOL=0,空闲时保持低电平;CPOL=1,空闲时保持高电平。

CPHA=0,在上升沿进行采样;CPHA=1,在下降沿进行采样。

2 SPI 工作原理

2.1 SPI相关寄存器

寄存器名称

作用

位

功能

CR1

配置SPI核心参数

0

0:上升沿采样

1:下降沿采样

1

0:空闲低电平

1:空闲高电平

2

0:从模式

1:主模式

3 ~ 5

设置时钟频率

6

0:禁用SPI

1:使能SPI

7

0:先发MSB

1:先发LSB

10

0:全双工

1:仅接收

11

0:8位数据帧

1:16位数据帧

15

0:双线双向模式

1:单线双向模式

DR

数据读写接口

0 ~ 7

储存接收和发送的数据

2.1 SPI配置步骤

1、初始化SPI:HAL_SPI_Init()

2、配置SPI MSP:HAL_SPI_MSPInit()

3、使能SPI外设:__HAL_SPI_ENABLE()

4、实现SPI收发:HAL_SPI_Transmit()/HAL_SPI_Receive()

2.2 SPI初始化配置

SPI的初始化配置由结构体SPI_InitTypeDef完成,关键成员如下

成员

作用

可选值

Mode

设置主从模式

主机:SPI_MOED_MASTER

从机:SPI_MODE_SLAVE

Direction

设置通信方向

全双工:SPI_DIRECTION_2LINES

只接收:SPI_DIRECTION_2LINES_RXONLY

单线:SPI_DIRECTION_1LINE

DataSize

设置数据帧长度

8位:SPI_DATASIZE_8BIT

16位:SPI_DATASIZE_16BIT

CLKPolarity

设置CPOL

空闲低:SPI_POLARITY_LOW

空闲高:SPI_POLARITY_HIGH

CLKPHASE

设置CPHA

上升采样:SPI_PHASE_1EDGE

下降采样:SPI_PHASE_2EDGE

BaudRatePrescaler

设置SPI时钟分频

SPI_BAUDRATEPRESCALER_2 ~ 256

FirstBit

设置起始位

高在前:SPI_FIRSTBIT_MSB

低在前:SPI_FIRSTBIT_LSB

posted @ 2026-08-20 15:04  老鼠学32  阅读(15)  评论(0)    收藏  举报