SPI总线

发布时间 2023-11-20 22:25:30作者: 小小卷心菜

SPI :一种高速、全双工、同步串行的通信总线。

主、从模式:
一个SPI系统包含有且仅有一个主设备、多个从设备。主设备提供时钟、发起读写操作,从设备接受时钟信号,响应读写操作。
当存在多个从设备时,通过片选线进行处理。

信号线:
MISO:(o:out,对于从设备来说为输出) 主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
MOSI: (i:in,对于从设备来说为输入)主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
SCLK:串行时钟信号,由主设备产生。
CS/SS:从设备片选信号,由主设备控制。它的功能是用来作为“片选引脚”,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

数据的接受发送:
首先,片选信号选中目的从设备;
主机通过发送时钟信号告知目的机读或写;
主机将要发送的数据发送到数据缓存区,经由移位寄存器和MOSI传到从机。
同时,从机将要发送的数据经由移位寄存器和MOSO传到主机。
!!!!注意:SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;
反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

SPI的四种通信模式:
时钟极性(CPOL)定义了时钟空闲状态电平:CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
时钟相位(CPHA)定义数据的采集时间:CPHA=0,在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样,在第2个边沿发送数据。
CPHA=1,在时钟的第二个跳变沿(上升沿或下降沿)进行数据采样,在第1个边沿发送数据
MODE 0:CPOL=0,CPHA=0
SCLK低电平空闲,高电平有效,先采后发,故:上升沿采样,下降沿发送
MODE 1:CPOL=0,CPHA=1
SCLK低电平空闲,高电平有效,先发后采,故:上升沿发送,下降沿采样
MODE 2:CPOL=1,CPHA=0
SCLK高电平空闲,低电平有效,先采后发,故:下降沿采样,上升沿发送
MODE 1:CPOL=1,CPHA=1
SCLK高电平空闲,低电平有效,先发后采,故:下降沿发送,上升沿采样

!!!注意:主从设备必须使用相同的工作模式——SCLK、CPOL 和 CPHA,才能正常工作。
如果有多个从设备,并且它们使用了不同的工作模式,那么主设备必须在读写不同从设备时需要重新修改对应从设备的模式。

???SPI的三种工作模式:
运行模式:基本操作模式。
等待模式:一种可配置的低功耗模式,可以通过SPICR2寄存器的SPISWAI位进行控制。
在等待模式下,如果SPISWAI位清0,SPI操作类似于运行模式。如果SPISWAI位置1,SPI进入低功耗状态,并且SPI时钟将关闭。
如果SPI配置为主机,所有的传输将停止,但是会在CPU进入运行模式后重新开始。如果SPI配置为从机,会继续接收和传输一个字节,这样就保证从机与主机同步。
停止模式:为了降低功耗,SPI在停止模式是不活跃的。如果SPI配置为主机,正在进行的传输会停止,但是在CPU进入运行模式后会重新开始。
如果SPI配置为从机,会继续接受和发送一个字节,这样就保证了从机与主机同步。

SPI优缺点
优势:
1、传输速度高,SPI并未限定最高速度。有的应用甚至高达10Mbps。
2、全双工,但有的芯片没有MISO,则不支持。
3、相较于I2C而言,SPI简单一些,编程容易,控制简单
4、信号为单向信号,易于电隔离。尤其在工业产品中电气隔离在抗干扰方面、以及本质安全方面要求比较高。
5、没有复杂的总线仲裁机制,相对健壮。
劣势:
1、无寻址机制,需要额外的片选信号
2、SPI总线对于多从模式支持不好,两种拓扑都无法支持很多从设备,而且系统中也仅有一个主设备
3、没有定义错误检测机制
4、事实上的标准,但无正式标准
5、与I2C一样也只是芯片间总线,无法长距离通信