STM32常用协议之SPI协议详解

本文详细解读SPI协议,包括物理层、基本通信流程、时钟极性和相位控制、编程实现以及实践应用实例,帮助理解SPI作为高速串行接口的工作原理和常见应用场景。


SPI协议简介

SPI 全称是 Serial Perripheral Interface,也就是串行外围设备接口。 SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线, SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。 SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输)。该通信方式主要广泛地使用在ADC、LCD等设备与MCU间,适用于对通信速率要求较高的场合。


一、SPI物理层

在这里插入图片描述

  1. CS/SS(Slave Select/Chip Select),常称为片选信号线。当多个SPI从设备与SPI主机相连时,设备的其他信号线SCK、MOSI及MISO同时并联到相同的SPI总线上,即无论有多少个从设备,都共同使用这3条总线;但值得注意的是:每个从设备都有独立的一条NSS信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线。区别于IIC协议通过设备地址进行寻址,从而完成与总线上某个设备进行通信方式的不同,SPI协议中没有设备地址,而是使用片选信号线来寻址,当主机要选择从设备时,通常情况下把该设备的片选信号线设置为低电平,从而使得该设备被选中,即片选有效,这样主机便和从设备之间建立通信。
  2. SCK(Serial Clock),时钟信号线,用于通信数据同步,通常由主机产生,但不同设备支持的通信速率不一致,而且值得注意的是:两设备之间通信时,通信速率受限于低速设备。
  3. MOSI/SDO(Master Out Slave In/Serial Data Output),主设备输出/从设备输入引脚,这根数据线只能用于主机向从机发送数据。
  4. MISO/SDI(Master In Slave Out/Serial Data Input),主设备输入/从设备输出引脚,这根数据线只能用户从机向主机发送数据。

二、SPI协议层

2.1 SPI基本通信过程

在这里插入图片描述
上图为SPI的主机通讯时序,NSS、SCK和MOSI信号都由主机控制,而MISO的信号由从机产生,主机通过该信号线读取从机的数据。MOSI与MISO的信号只在NSS为低电平的时候才有效,在SCK的每个时钟周期MOSI和MISO传输一位数据。


2.2 通信的起始和终止信号

  • 起始信号:NSS信号由高变低,即为SPI通讯的起始信号;
  • 终止信号:NSS信号由低变高,即为SPI通讯的终止信号;

2.3 数据有效性

SPI 使用 MOSI 及 MISO 信号线来传输数据,使用 SCK 信号线进行数据同步。MOSI 及 MISO 数据线在 SCK 的每个时钟周期传输一位数据,且数据输入输出是同时进行的【全双工】。数据传输时,MSB先行或 LSB 先行并没有作硬性规定,但要保证两个 SPI 通讯设备之间使用同样的协定,一般都会采用MSB 先行模式

观察上图中的标号2-5处,可知MOSI及MISO的数据在在 SCK 的上升沿期间变化输出【触发】,在 SCK 的下降沿时被采样。即在 SCK 的下降沿时刻,MOSI 及 MISO 的数据有效,高电平时表示数据“1”,为低电平时表示数据“0”。在其它时刻,数据无效,MOSI 及 MISO 为下一次表示数据做准备。

SPI每次数据传输可以8位或16位为单位,每次传输的单位数不受限制。


2.4 CPOL/CPHA及通信模式

SPI的四种通讯模式,主要区别是总线空闲时,SCK的时钟状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值