手把手之STM32SPI接口(一)

SPI总线

1、何为SPI

    SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

    SPI是一个环形总线结构,由ss(cs)scksdisdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。上升沿发送、下降沿接收、高位先发送。上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。

手把手之STM32SPI接口(一)


2、SPI模型

    手把手之STM32SPI接口(一)
1MOSI:主器件数据输出,从器件数据输入
2MISO:主器件数据输入,从器件数据输出
3SCLK :时钟信号,由主器件产生
4/SS:从器件使能信号,由主器件控制


3、SPI时序

    SPI接口有四种不同的数据传输时序,取决于CPOLCPHL这两位的组合下图表现了这四种时序手把手之STM32SPI接口(一)

CPOL是用来决定SCK时钟信号空闲时的电平,CPOL0,空闲电平为低电平;CPOL1时,空闲电平为高电平。CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样;CPHA1,在每个周期的第二个时钟沿采样。

     SPI主模块和与之通信的外设音时钟相位和极性应该一致。



STM32的SPI接口

1、接口特性

1)基于三条线的全双工同步传输

2)8位或者16位的数据帧

3)主模式或从模式

4)最先以为LSB或者MSB

5)SPI总线忙标志


2、功能说明

手把手之STM32SPI接口(一)
手把手之STM32SPI接口(一)
手把手之STM32SPI接口(一)
NSS引脚可以选择软件管理,这样比较容易操作,而从器件的NSS引脚可以用单片机的一个GPIO口来驱动,只要将IO电平拉低就可以选中从器件


3、时序手把手之STM32SPI接口(一)
注意,主器件的相位和极性一定要和从器件匹配。


4、将STM32配置成主器件

手把手之STM32SPI接口(一)


5、寄存器

1)控制寄存器SPI_CR1

手把手之STM32SPI接口(一)
手把手之STM32SPI接口(一)
手把手之STM32SPI接口(一)
手把手之STM32SPI接口(一)

手把手之STM32SPI接口(一)
手把手之STM32SPI接口(一)

2)控制寄存器SPI_CR1

手把手之STM32SPI接口(一)
手把手之STM32SPI接口(一)



代码

1、初始化

手把手之STM32SPI接口(一)
手把手之STM32SPI接口(一)

2、收发数据

手把手之STM32SPI接口(一)


手把手之STM32SPI接口(一)