
一、STM32 定时器触发 SPI 逐字收发之应用示例 我们在做 SPI 应用时,有时希望通过定时器来定时地触发 SPI 的收发,并利用 DMA 完成数据的传输。这里,我基于 STM32L476 芯片来做个演示,以供参考【为什么选用32L476,其实没啥特别原因,只是顺便找了块 Nucleo 板】。 本示例的大致过程是这样的: 片内 SPI1 做 Master,SPI2 做 Slave,均工作在全双工模式。 ![]() 这里使用片内定时器 TIM3,通过它的更新事件触发 DMA 请求,通过 DMA 将数据给到SPI1 的数据寄存器并发送出去,同时也开启 SPI1 接收事件的 DMA 传输。总之,SPI2的收、发事件都启用 DMA 完成。 TIM3 的更新事件周期控制两个 SPI 的收发节奏,即定时器每产生一次更新事件,SPI1/SPI2 这两个主从通信模块就进行一个数据的收发。我们可以通过调整定时器的计时周期来调整数据收发的快慢。 好,先基于 STM32CubeMx 进行初始化配置。 1、对 TIM3 做基本配置。选择时钟源,先大致估算个定时器计时周期,调试时我们可以自行灵活调整。 ![]() 开启基于 TIM3 更新事件的 DMA 配置。传输方向是从 Memory 到 外设 SPI1,即将内存数据传输到 SPI1 的数据寄存器进行数据发送,这里选用循环模式,以便测试。2、对 SPI1/SPI2 进行基本配置。细节请参看下面三幅截图。 ![]() 2、对 SPI1/SPI2 进行基本配置。细节请参看下面三幅截图。 ![]() ![]() ![]() 完整版请查看:附件 |
Application example of STM32 timer triggering SPI word by word.pdf
下载597.81 KB, 下载次数: 10
经验分享 | SPI传输时为何丢失2个数据?
经验分享 | STM32H7 EXTI + SPI +DMA 双缓冲应用演示
使用Nano板验证驱动SPI串口屏的颜色显示
【经验分享】STM32的SPI的原理与使用(W25Q128附代码)
【STM32C0评测】4、驱动Lorasx126x,实现透传
基于STM32的SPI传输时会丢失数据吗?
基于STM32基础的SPI总线概述
基于STM32的SPI读取数据的最后位出错问题经验分享
基于STM32关闭SPI会导致WRPERR错误的问题分析
基于STM32关闭SPI导致WRPERR错误经验分享