STM32_库函数学习笔记_SPI_01_SPI原理
STM32库函数SPI学习笔记
SPI原理
SPI接口使用4线通信:
MISO:主设备输入,从设备输出
MOSI:主设备输出,从设备输入
SCLK:时钟
CS:片选
主从机都有一个串行移位寄存器,主机通过向其寄存器写入一个字节来发起一次传输。
主从机的移位寄存器组成环形,每个时钟周期移动一位,每8或16个周期,两寄存器数据完全交换(帧格式可选8或16位)。
从机的读写操作是同步的。主机只做写操作就忽略接受的字节,只做读操作就发送一个空字节来引发从机传输。
STM32 SPI引脚:
SPI1:PA5-7
SPI2:PB13-15
SPI3:PB3-5
(片选采用软件NSS模式,SPI_NSS脚不用)
引脚配置:
从选择(NSS)脚管理
选用软件NSS模式,设置SPI_CR寄存器的SSM位来使能。
时钟相位和极性
由SPI_CR寄存器的CPOL和CPHA来组合成4中时序关系:
数据帧格式
SPI_CR1寄存器中的LSBFIRST位,输出数据位时可以MSB在先也可以LSB在先。
SPI_CR1寄存器的DFF位,每个数据帧可以是8位或是16位。所选择的数据帧格式对发送和/或接收都有效。
状态标志位
应用程序通过3个状态标志可以完全监控SPI总线的状态。
发送缓冲器空闲标志(TXE)
此标志为’1’时表明发送缓冲器为空,可以写下一个待发送的数据进入缓冲器中。当写入SPI_DR时, TXE标志被清除。
接收缓冲器非空(RXNE)
此标志为’1’时表明在接收缓冲器中包含有效的接收数据。读SPI数据寄存器可以清除此标志。
忙(Busy)标志
BSY标志由硬件设置与清除(写入此位无效果),此标志表明SPI通信层的状态。
当它被设置为’1’时,表明SPI正忙于通信,但有一个例外:在主模式的双向接收模式下(MSTR=1、BDM=1并且BDOE=0),在接收期间BSY标志保持为低。
SPI中断
中断事件 | 事件标志 | 使能控制位 |
---|---|---|
发送缓冲器空 | TXE | TXEIE |
接收缓冲器非空 | RXNE | RXEIE |
主模式失效 | MODF | ERRIE |
溢出错误 | OVR | ERRIE |
CRC错误 | CRCERR | ERRIE |