我是靠谱客的博主 无情红牛,最近开发中收集的这篇文章主要介绍STM32 DMA1 DMA2使用问题一、问题描述:二、解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、问题描述:
  • 二、解决

一、问题描述:

使用stm32F4的SPI2 DMA1更新LCD显示;
同时通过USART1 DMA2将显示数据发给上位机。
从stm32F4 总线矩阵看两者并无交叉(下图),并且优先级不同;但实际测试发现DMA2发送的串口数据乱码较多。
从图中标记看DMA2 DMA1分别访问USART1 SPI2 并无冲突
从图中标记看DMA2 DMA1 分别访问USART1 SPI2并无总线冲突。
即使有也不该出现如此多乱码。 实在没想到是什么原因 ,看到部分帖子有同样问题描述,解决方案有选择同一个DMA,但我硬件部分已经定了。

二、解决

问题答案:DMA1 DMA2没有冲突;出现乱码的原因是发送的buffer是我在函数中定义的一个局部变量;在不明原因下数据被篡改;倒是发送乱码;实际单步调试时buffer并没有改变;
可能是以下原因:1.编译器将buffer优化了,2.高优先级中断打断后数据丢失;3.最大的可能是数组越界导致。
在将buffer定义为全局变量后 ;发送无乱码 ;
但是我碰到了另外一个BUG,就是项目中I2S和SPI都开启了DMA传输;由于DMA1始终是一条总线访问外设;I2S在采集数据并发送的过程中 SPI 的DMA 传输请求会发送总线仲裁并开始SPI 数据传输;导致I2S音频流中断;只能考虑将更改硬件电路;将SPI移到DMA2上。
至此, 问题结束。

最后

以上就是无情红牛为你收集整理的STM32 DMA1 DMA2使用问题一、问题描述:二、解决的全部内容,希望文章能够帮你解决STM32 DMA1 DMA2使用问题一、问题描述:二、解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部