STM32 SPI发送波形

本文介绍STM32 SPI发送波形的四种模式及其与连续和不连续传输的关系。通过实测波形对比轮询与DMA传输方式,解释CPHA与CPOL配置的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32 SPI发送波形



前言

本文主要内容为STM32 的SPI发送波形,不涉及相关软件配置,相关内容网络上一搜就有很多参考。


一、SPI的四种波形

根据SPI协议,STM32发送的波形有四种可能,如图所示,主要分为两种时钟相位(CPHA)和时钟极性(CPOL)。
在这里插入图片描述
关于时钟极性,也有很多人把它理解为第一个边沿,第二个边沿:也有人觉得CPHA=0时,时钟是从第一个边沿启动,这样理解不是很准确。其实还有第二种理解方式,那就是它们都是 第 2 T \cfrac{2}{T} T2 的边沿信号,如下图所示:

在这里插入图片描述
我个人感觉这样比第几个边沿好理解一些。


二、连续和不连续传输

1.连续传输

首先,连续传输或者不连续传输都是针对主设备(Master)而言。连续传输就是指发送完数据后,时钟没有空闲,立即进行下一次传输。如图所示。

在这里插入图片描述

2.不连续传输

不连续传输和连续传输相反,在完成一次传输之后,时钟会有一段空闲。如图所示。

在这里插入图片描述

关于什么情况下是连续传输,什么情况下是间断传输,官方手册有这么一段说明。
在这里插入图片描述

大概意思就是,你的软件运行足够快,能够检测到TXE标志,并且立即将数据写入SPI_DR寄存器,那么就可以实现连续传输,否则,就只有间断传输。
然而实际情况就是,无论你是使用轮询方式,或者中断方式,甚至使用寄存器编写程序,也不可能使用软件做到连续传输,除非你将SPI的频率降得很低。
而想要实现连续传输,只要一种方式,那就是使用硬件完成以上操作,也就是使用DMA进行发送数据。


三、实测波形

以下波形是使用HAL库,采用轮询方式发送三个字节(0xaa,0x55,0x34)的波形图。通道1为时钟信号,通道2为MOSI信号。可以看到,每发送一个字节的数据,时钟就会空闲一段时间。

在这里插入图片描述

以下波形是使用HAL库,采用DMA方式发送三个字节的波形图,可以看到,24个时钟完全连在一起。
在这里插入图片描述

本次实验的SPI配置模式为 CPHA = 0, CPOL = 0,可以看到,刚开始的半个周期,时钟出现了一些毛刺,同时MOSI引脚的数据变为高,这也说明了在CPHA=0时,时间会提前半个周期开始,而不是从第一个边沿信号开始。
在这里插入图片描述


总结

以上就是今天要讲的内容,本文仅仅简单介绍了STM32的SPI发送波形,仅供参考。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值