STM32在芯片内部已经集成了SPI接口,用户只需配置SPI并复用映射到相应的IO口就行。
一、SPI的特点:
1.全双工同步通信
2.一主多从(主机控制从机)
3.至少需要4根线,3根线也可以(用于单相传输)
![](https://img.haomeiwen.com/i2624882/3e3981d8195d54ba.png)
![](https://img.haomeiwen.com/i2624882/ec69dd87dcb2bdb1.png)
二、SPI接口总线
MISO:主输入/从输出数据。此引脚可用于在从模式下发送数据和在主模式下接收数据
MOSI:主输出/从输入数据。此引脚可用于在主模式下发送数据和在从模式下接收数据
SCLK:用于 SPI 主器件的串行时钟输出以及 SPI 从器件的串行时钟输入
NSS:从器件选择。这是用于选择从器件的可选引脚(片选)
STM32的SPI一旦配置成主模式,SPI_CR1的SSI就已经置1了,此位的值将作用到NSS引脚上, 并忽略 NSS 引脚的 IO 值
NSS的配置:
-软件管理NSS:
1.配置为输出:SPI_CR1的SSOE置1(SSOE:使能输出)
2.配置为输入:SSM与SSI置1(如果已配置为主模式,SSI就不需要在置高了)
-硬件管理NSS:
1.STM32的SPI配置为主模式时,SSI已经置1,此时的硬件NSS引脚可以给外界使用。如果主从的NSS连接在一起,则可以由主机的NSS去片选从机
2.STM32的SPI没有配置为主机模式时,硬件NSS一定要置高电平
三、通信过程
接收过程:数据收到后,先存储到内部接收缓冲区中;
发送过程:先将数据存储到内部发送缓冲区中,然后发送数据。
对 SPI_DR 寄存器(数据寄存器)的读访问将返回接收缓冲值,而对 SPI_DR 寄存器的写访问会将写入的数据存储到发送缓冲区中。
四、初始化配置
1.初始化GPIO口
2.复用映射SPI接口到GPIO口
3.使能SPI时钟总线:RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE)
4.配置初始化的参数:SPI_Init(SPI1,&SPI_Initstructure)
5.使能SPI外设:SPI_Cmd(SPI1,ENABLE);
![](https://img.haomeiwen.com/i2624882/31dafedfcd2ea8ad.png)
网友评论