STM32F407 SPI配置和时序图讲解(一)
什么是SPI?
串行外设接口,一种高速的、全双工、同步的通信总线
通信的同步:在同一时间周期内,完成一个数据的方式和接收
优点:
SPI接口是在CPU和外围低速设备之间进行串行数据传输,在主要期间的位移脉冲下数据按位传输,低位在前,且是全双工通信,数据传输相对I2C总线要快速度达到几Mbps,信号线少,协议简单,相对效率较高
缺点:
没有指定的流控制,没有应答机制来确认对方是否接收到数据
工作模式:
SPI有4种工作模式,由CPOL和CPHA来决定
CPOL:时钟极性(高低电平)选择:为0时如果SPI总线空闲,时钟线将为低电平,为1时,如果SPI总线空闲,时钟线将为高电平
CPHA:时钟相位(跳变沿)选择:为0时,将在SCLK的第一个跳变沿时,主机对从机进行采样,为1时,将在SCLK的第二个跳变沿时,主机对从机进行采样
跳变沿:电平发生变化时的边沿
下面重点解读一下为什么会有这么4种工作方式(仔细看图,一定能看懂)
因为一个脉冲有高电平也有低电平,那么也就会有变化时候(跳变),这时候如果不规定那个数据为我们需要读取的数据,就会造成数据读取错乱,这时候就出现了一个SPI中很重要的参数CPHA(时钟相位)用来规定那个跳变沿才是我们读取的正确数据。
因此,根据CPOL和CPHA的不同值可以有不同的搭配(理解上图之后,这个很简单):
CPOL=0,CPHA=0 -> 模式0 SPI总线空闲时时钟线为低电平,从第一跳变沿获取数据
CPOL=1,CPHA=0 -> 模式1 SPI总线空闲时时钟线为高电平,从第一跳变沿获取数据
CPOL=0,CPHA=1 -> 模式2 SPI总线空闲时时钟线为低电平,从第二跳变沿获取数据
CPOL=1,CPHA=1 -> 模式3 SPI总线空闲时时钟线为高电平,从第二跳变沿获取数据
常用的模式为模式0和模式3
主机和从机:
了解上面基本知识点之后,就是一些简单配置
SPI初始化流程:
1、时钟使能
2、配置SCLK, MOSI,MISO为复用模式(具体引脚看自己芯片原理图)
3、选择复用对象为SPI
4、配置NSS为输出模式(具体引脚看自己芯片原理图)
5、根据时序图,选择初始电平
6、配置SPI
7、使能SPI
具体配置,添加固件库后有如何配置,这里就不做过多叙述。
下一章才是重难点,时序图讲解!!!!