SPI介绍
SPI:串行外设设备接口(Serial Peripheral Interface),是一种高速的,全双工,同步通信总线。
内部框图
1. SPI相关引脚
MOSI(主机输出、从机输入)
MISO(主机输入,从机输出)
SCK(时钟信号,由主设备产生)
NSS(片选信号,由主设备产生)
2. 数据发送和接收
与缓冲区、移位寄存器以及引脚相关
3. 时钟信号
SPI时钟信号是通过SPI_CR1寄存器配置
4. 主控制逻辑
涉及两个控制寄存器SPI_CR1/2用于配置SPI工作,SPI_SR用于查看工作状态
SPI外设引脚
STM32芯片有多个SPI外设,每个SPI外设输出的信号会到不同的GPIO口。
STM32F1有三个SPI。
SPI工作原理
外设的写操作和读操作是同步完成的。如果只是进行写操作,主机只需忽略接收到的字节。反之,若主机要读取从机的一个字节,就必须发送一个空字节引发从机传输。
SPI工作模式
时钟极性 (CPOL) 没有数据传输时时钟线的空闲状态电平
0:SCK在空闲状态保持低电平
1:SCK在空闲状态保持高电平
时钟相位 (CPHA) 时钟线在第几个时钟边沿采样数据
0:SCK的第一(奇数)边沿进行数据位采样,数据在第一个时钟边沿被锁存
1:SCK的第二(偶数)边沿进行数据位采样,数据在第二个时钟边沿被锁存
相关寄存器
SPI控制寄存器1(SPI_CR1)
SPI状态寄存器(SPI_SR)
SPI数据寄存器(SPI_DR)