stm32 spi接收数据:STM32学习笔记,SPI通信异常分析
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上下拉。
推荐
- 1养殖户养鸡的七大禁忌 养鸡7大禁忌千万不能碰141
- 2山西高平在现代属于哪里:山西省高平市概况422
- 3金毛和橘猫怎么交朋友?自己会把一只小奶猫宠成了霸道总裁喵137
- 4大闸蟹你不知道的一些知识点:专家告诉你如何精心呵护381
- 5人类似乎没有确切的发情期表现:为何人类不像其他动物一样175
- 6值得养的观赏鸟有哪些?第一价值100万是土豪们养的宠物鸟131
- 7如果小奶狗在太阳下死了怎么救它?暴雨中狗妈妈叼着小狗到安全地带403
- 8女童套头衫的钩织教程 超美宝宝套头衫只要有基础一看就会123
- 9降血脂的疫苗两周打一次,降脂疫苗,来了一年打2次血脂降一半295
- 10中华田园犬有几个品种都在哪 中华田园犬有多少花色363