当前位置:宠物百科>综合>资讯>正文

stm32 spi接收数据:STM32学习笔记,SPI通信异常分析

人气:285 ℃/2023-11-10 13:24:47

SPI,全称为 Serial Peripheral Interface(串行外设接口),是一种用于短距离通信的同步串行通信接口,主要应用在嵌入式系统。

SPI的应用场合很广,显示模组、时钟芯片、存储芯片、温度传感器等众多器件都有使用SPI接口通信。这些器件通常作为从设备,STM32作为主设备来控制它们。

STM32 SPI基础内容

绝大部分STM32芯片都有多个SPI外设,它可与外部SPI器件进行半双工/全双工同步串行通信。

1. SPI特性

  • 三条线全双工、双线单工同步传输
  • 支持 8 位或 16 位传输帧格式选择
  • 支持主模式或从模式操作
  • 可编程的时钟极性和相位
  • 支持 MSB 或 LSB 数据顺序
  • 支持DMA收发数据

更多特性请查阅《STM32参考手册》。

2. 引脚描述

MISO:主输入/从输出数据;

MOSI:主输出/从输入数据;

SCK:时钟(主输出,从输入时钟);

NSS:从器件选择,可理解片选信号;

3. SPI时序

SPI的时序中有两个参数需要注意,那就是时钟相位和时钟极性。在STM32中,SPI时序由CPOL 和 CPHA 这两位来决定。

通过软件配置这两个参数,可分为四种时序关系,如下图:

4. 数据帧格式

串行同行数据传输分为 MSB 和 LSB,也就是最高有效位在前,还是最低有效位在前。(注:最左边的比特位即为最高有效位)。

比如传输一个字节:0x95(1001 0101)。

如果按照MSB(高位在前),则发送顺序:1001 0101。

如果按照LSB(低位在前),则发送顺序反过来:1010 1001。

STM32 SPI参数配置

通常STM32的SPI作为主机连接外部从机,要与从机建立正常通信,就必须与从机的参数匹配才行。

这里以【STM32作为SPI主机读写SPI Flash】为例,主要配置参数:双向全双工、主机模式、8位数据、MSB等。

1. 标准外设库配置

2. STM32CubeMX配置

首先选择全双工主机模式,然后再逐步配置下面参数。这里的波特率时钟灰色不可配置,由你系统时钟和分频时钟决定。

这些配置参数比较容易理解(英文清晰明了),若不懂可针对性查阅参考手册。

1、spi clk传输多个字节是中间有断续

NSSP Mode模式,在每发送完一个字节后,会有一位的空闲这个模式一定要Disable

NSSP模式下,每传输一个字节,片选会保持一个时钟周期有高电平,这时,时钟也会有一个周期的空闲,导致数据上会保持上一个状态一个时钟周期的多余电平状态,导致后面的0、1码全部错乱。

另外,不同的外设对时钟极性,采样边沿可能不一样,需要根据外设具体配置。

2、SPI对接外设通信异常,挂示波器到SPI CLK通信正常。

原因可能是SPI CLK需要配置GPIO上下拉。

搜索更多有关“stm32 spi接收数据:STM32学习笔记,SPI通信异常分析”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
CopyRight © 2021-2024 宠物百科 All Rights Reserved. 手机版