问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

基于STM32H7 DMA传输的SPI 应用示例

提问网友 发布时间:2025-01-06 22:11
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2025-01-07 00:53
基于 STM32H7 的 DMA 传输 SPI 应用示例通过 STM32H743-Nucleo 板进行演示。使用 SPI1,MOSI 和 MISO 短接,通过 DMA 实现自发自收功能,以开启和不开启 Cache 的形式进行配置,供参考。

使用 STM32CubeMx 配置,生成 ARM MDK 环境和 Cube 库的初始化代码。配置 SPI1 为双工主角色,数据位为 16 位,并开启 SPI 的 TX/RX DMA 请求。

完成时钟、中断配置,生成初始化代码并建立工程。

在不打开 Cache 的情况下,主程序周期性修改待发送数据,使能 SPI 和 DMA 进行数据收发。定义两个内存数组用于收发缓冲,只用到 6 个数据,并初始化。添加用户代码,未开启 DMA 传输中断。

整理、调试后,观察结果。通过打断点,在两个时刻获得截图,接收缓冲区起始地址为 0x24000020,属于 AXIM RAM 区。

开启 Cache 后,工作流程相同,但在主循环修改发送和接收数据后清除和失效 Dcache。开启 DMA 传输中断,可以在传输完成中断里进行 Cache 相关的数据更新与维护操作。用户代码与不开启 Cache 类似,仅最后添加 Cache 相关代码。

整理、编译运行,结果一致。通过打断点获得两幅截图,接收缓冲区起始地址仍为 0x24000020,属于 AXIM RAM 区。

开启 Cache 时,数据缓冲区须遵循 32 字节对齐原则。因此,收发缓冲区的定义和初始化与不开启 Cache 略有不同。代码示例中用到六个 16 位半字数据。

整个示例结束,附带的代码可供使用。开启 Cache 后,数据更新与维护可以通过配置 MPU 实现。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

用串口空闲中断可以大大简化数据接收过程的判断 基于DMA和SPI的高速数据传输在STM32中的实践 室内设计考研专题 | 售楼部空间快题设计分析——售楼中心 怎样设计两层的售楼部 离婚保证书可以做为被告的证据吗 保证书是否构成离婚证据? 联想昭阳电脑突然不能开机联想笔记本开不了机就是电源灯都不亮_百度... 联想笔记本电脑启动不了联想笔记本电脑开不了机怎么办 ...联想笔记本电脑开不了机的问题探索lenovo笔记本无法启动的原因及解... 我申购的基金为何又把费用退给我了 申购成功基金3万出现基金退款2万怎么回事 为什么买基金显示有部分退款 买基金后为什么有退款 ...买了流量包会用流量包的流量吗,流量包会被限速的吗 ...后限速的无限流量包,是不是优先使用套餐的1元800m再使用流量包... 电脑收藏软件排行榜最好用的记事本APP有哪些记事本app排行榜10款 电脑手写笔记软件win10pdf什么软件可以在pdf上做笔记 电脑事项提醒软件最为好用的电脑桌面日志提醒软件是什么 汇总20款 Windows 10 系统值得推荐的必装软件,款款都是良心产品_百度知 ... 电脑记事本哪个好用电脑中记事比较好用的便签是哪一个 顿口漂怎么样? 顿口漂有什么好处 哪种漂型顿口最明显? 立漂的种类和选择方法 如何选择鱼漂 谁知道刚注册好的微信为什么会被封了该怎么解封 家常毛血旺怎么做好吃 毛血旺的做法介绍 小米cc9产品特色详述 哪些东西可以做鱼饵 可以当鱼饵的虫子有哪些 华为畅享平板2试用体验-适用对象 为什么静电不易被感觉? 有哪些常见静电现象 静电现象静电现象 HF为什么不能启动游戏? 当和孩子发生矛盾时家长该怎样做 为什么我用浩方玩魔兽一点开始游戏就出现应用程序错误,不点确定就可... HF按启动游戏没用CS 我进HF劲舞点GAME STAR为什么米反应啊??高手帮忙解决下啊。。。_百度... HF魔兽争霸进游戏不读图
Top