1、SPI简介
SPI意思是串行外设接口(serial peripheral interface)的简称。是一种高速全双工同步的通信总线
SPI接口一般使用4条通信线
1、SCLK时钟信号,由主设备产生
2、CS 从设备片选信号,由主设备控制
3、MOSI,master output slave input 主设备输出从设备输入
4、MISO,master input slave output 主设备输入从设备输出
我们以STM32F407为例来看看
主机和从机都有一个串行移位寄存器,主机通过向它的移位寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传输给从机,从机也将自己的移位寄存器中的内容通过MISO线返回给主机。这样,两个寄存器中的内容就会被交换。
对于上面的话,到实际的SPI设备读写时,实际过程应该这样,主机要写数据时,发送一字节数据,MISO就会收到一笔数据,若数据没有用,应将数据读取忽略。而主机若想读取数据,应先发一个空字节数据,才能收到一字节数据。
SPI的工作模式根据时钟极性CPOL和时钟相位CPHA的不同有4中
CPOL: SPI空闲时,时钟信号SCLK的电平,0空闲时为低电平,1为空闲时为高电平
CPHA: 在何时开始采样,何时输出。0表示时钟第一个跳变沿开始采样(输入),第二个跳变沿输出。1表示第一个跳变沿输出,第二个跳变沿开始采样。
mode0: CPOL为0,CPHA为0 上升沿采样,下降沿输出,第一个跳变沿为上升沿
mode1: CPOL为0,CPHA为1 上升沿输出,下降沿采样,第一个跳变沿为上升沿
mode2: CPOL为1,CPHA为0 上升沿输出,下降沿采样,第一个跳变为下降沿
mode3: CPOL为1,CPHA为1 上升沿采样,下降沿输出,第一个跳变沿为下降沿
mode0和mode3比较常用,都是在上升沿采样,下降沿输出,唯一不同的是,spi空闲时,mode0的sclk电平为低,mode3的sclk电平为高。