STM32—SPI详解

一.什么是SPI

SPI是串行外设接口(Serial Peripheral Interface)的缩写,SPI是一种高速、全双工、同步通信的通信总线,被广泛应用在ADC、LCD等与MCU的通信过程中,特点就是快。

二.SPI协议

就像IIC、串口一样,SPI也有其通信协议,我们一般按照分层的思想来学习SPI的协议,主要分为物理层和协议层

物理层

首先看一下SPI通信设备之间的常用连接方式,主机和从机之间通过三条总线和片选线组成:
在这里插入图片描述
NSS:片选设备线,每个从机都有自己的一条单独的总线与主机连接,此总线的作用就是为主机选择对应的从机进行传输数据,每个从机与主机之间的NSS总线互不相干。SPI中规定通信以NSS信号线拉低为开始,拉高为结束。
SCK:时钟信号线,因为SPI是同步通信,所以需要一根时钟信号线来统一主机和从机之间的数据传输,只有在有效的时钟信号下才能正常传输数据,不同设备支持的最高传输频率可能不一样,在传输过程中传输频率受限于低速的一方
MOSI:(Master Output, Slave Input),顾名思义,MOSI就是主机输出/从机输入,因为SPI是全双工的通信总线,即主机和从机可以同时收发数据,这样的话就需要俩条线同时分别负责:主->从和从->主这俩条传输线路。而MOSI就专门负责主机向从机传输数据
MISO:(Master Input,, Slave Output),与MOSI恰恰相反,MISO专门负责从机向主机传输数据

协议层

和IIC一样,SPI协议层规定了传输过程中的起始信号和停止信号、数据有效性、时钟同步、通讯模式,接下来依据通讯时序图来剖析协议层的内容。

1.通讯时序图

如图所示是SPI的一种通信模式下的时序图:
在这里插入图片描述
所有的运作都是基于SCK时钟线的,SCK对于SPI的作用就像心脏对于人体的作用,SCK为低电平就代表心脏停止跳动。

2.起始和停止信号

前面物理层说过,SPI通讯的起始和停止由NSS信号线控制,当NSS为低电平时代表起始信号,当NSS为高电平时代表停止信号。时序图中16部分代表起始信号和停止信号。

3.数据有效性

SPI中使用MOSI和MISO来进行全双工传输数据,SCK来同步数据传输,即MOSI和MISO同时工作,在时钟信号线SCK为有效时对MOSI、MISO数据线进行采样,采到的信息即为传输的信息。IIC中通讯中的数据是在SCL总线为高电平时对数据采样,SPI中数据的采样是在SCK的上升沿或下降沿时进行的。图示模式中35部分就是对数据进行采样的时刻,可以看出图示中数据是在SCK的下降沿进行采样的。MOSI和MISO的高低电平代表了1和0。

4.通讯模式

SPI有四种通讯模式,他们的主要依靠总线空闲时SCK的时钟状态和数据采样时刻来区别。这里就涉及到时钟极性CPOL时钟相位CPHA的知识。
时钟极性CPOLCPOL是指NSS总线空闲时SCK的电平信号,如果SCK为高电平,CPOL=1;SCK为低电平,CPOL=0。下面的这种情况CPOL=0.
在这里插入图片描述
时钟相位CPHA:CPHA是指数据的采样时刻,SCK的信号可以看作方波,CPHA=0时会在SCK的奇数边沿采样;CPHA=1时会在SCK的偶数边沿采样
如图:NSS空闲时SCK为低电平,而且在SCk的下降沿(也就是第二个边沿)采样,所以这种通讯模式下CPOL=0,CPHA=1.

  • 72
    点赞
  • 445
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
STM32SPI外设是一种串行外设口,用于在微控制器和外部设备之间进行通信SPI外设可以配置为主机模式或从机模式。在主机模式下,STM32产生SCK信号,控制通信的时序;在从机模式下,STM32收外部设备提供的SCK信号。\[3\] SPI外设的配置包括以下几个方面: 1. 单双向模式:设置SPI的数据传输方向,可以是单向或双向。 2. 主/从机模式:设置SPI的工作模式,可以是主机模式或从机模式。 3. 数据帧长度:设置SPI的数据帧长度,可以是8位或16位。 4. 时钟极性和相位:设置SPI的时钟极性和相位,用于控制数据采样的时机。 5. NSS引脚控制:设置NSS引脚由硬件控制还是软件控制。 6. 时钟分频因子:设置SPI的时钟分频因子,用于控制通信速率。 7. MSB/LSB先行:设置数据传输的位序,是从高位到低位还是从低位到高位。 8. CRC校验表达式:设置CRC校验的表达式,用于数据完整性校验。\[1\] 在配置完成后,可以调用库函数SPI_Init将配置写入寄存器,并调用SPI_Cmd使能SPI外设。在数据传输过程中,可以通过检查寄存器位来了解发送或收的状态,并根据需要进行处理。也可以使用DMA方式来收发数据。\[2\] 总结起来,STM32SPI外设可以通过配置来实现不同的工作模式和通信参数,以满足不同应用的需求。 #### 引用[.reference_title] - *1* *3* [STM32SPI详解](https://blog.csdn.net/wangjiaweiwei/article/details/125646382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [STM32SPI详细解析](https://blog.csdn.net/qq_43940175/article/details/123460281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值