SPI介绍
SPI:串行外设设备接口(Serial Peripheral Interface),是一种高速的,全双工,同步通信总线。
全双工:同一时刻,能同时接收数据和发送数据。
半双工:同一时刻,只能发送或只能接收数据。
- MOSI:输出数据线
- MISO:输入数据线
- SCL:时钟线
- CS:片选线,用于选中从器件,低电平有效。但IIC是通过在SDA数据线上发送设备地址,进行片选。
- 传输顺序:IIC只能高位先发。
支持一主多从,并且主机MOSI引脚与从机MOSI引脚相连。
SCK与CS线上的信号都是由主机发出。
SPI接口主要应用在存储芯片,AD转换器以及LCD中。
SPI结构框图
软件管理NSS,硬件上NSS引脚可以另做他用。
SPI外设对应的引脚
STM32芯片有多个SPI外设,每个SPI外设输出的信号会到不同的GPIO口。
STM32F1有三个SPI。
SPI是边沿协议,IIC是电平协议。
全双工,发送数据的同时也会接收到数据。
主机只向从机进行写操作,可以忽略接收到的从机数据。
主机要对从机进行读操作,需要发送一个空数据来引发从机发送数据(作用是给从机时钟)。
SPI工作模式
决定数据的有效性
时钟极性(CPOL):没有数据传输时时钟线的空闲状态电平。
- 0:SCK在空闲状态保持低电平
- 1:SCK在空闲状态保持高电平
时钟相位(CPHA):时钟线在第几个时钟边沿采样数据。
- 0:数据在第一个时钟边沿锁存。
- 1:数据在第二个时钟边沿锁存。
SPI相关寄存器
SPI相关HAL库驱动介绍
修改SPI速度,先使能,修改寄存器里的内容后,再使能。