OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6519|回复: 12

STM32F427 DMA1和DMA2冲突

[复制链接]

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2016-10-17
在线时间
26 小时
发表于 2017-8-23 15:11:54 | 显示全部楼层 |阅读模式
1金钱
问题描述:
       我用DMA1配合SPI2实现了SPI的发送和接收,在定时器中断中使用SPI配合DMA读取传感器数据,读取的频率是1Khz,也就是说一毫秒中断一次读取传感器数据。另外我又打开了DMA2,利用DMA2配合USART1向上位机发送其他数据,上位机又数据帧校验功能。DMA2配合USART1向上位机发送数据是5毫秒发送一次。当我把两个DMA都打开同时工作时,上位机会间断性出现误码现象,而当我官关闭了DMA1,只用DMA2配合串口发数据就不会出现乱码现象。请问大家这个问题怎么解决呢?DMA1和DMA2不是两个独立的模块吗?还是DMA1和DMA2同时访问总线出现了冲突?
     由于向上位机发送的数据量较大,不可能把SPI和USART放在一个DMA上工作,SPI要求精准的1毫秒就要触发一次,而USART在一毫秒内无法传输完一个数据帧。请大家赐教。。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

237

帖子

0

精华

高级会员

Rank: 4

积分
925
金钱
925
注册时间
2012-2-27
在线时间
393 小时
发表于 2017-8-23 15:16:06 | 显示全部楼层
我也遇到这样的问题,SPI读回来的数据不对了
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2016-10-17
在线时间
26 小时
 楼主| 发表于 2017-8-23 15:45:22 | 显示全部楼层
k-ad 发表于 2017-8-23 15:16
我也遇到这样的问题,SPI读回来的数据不对了

哈哈。你也是开了两个DMA吗?后来你怎么解决的?
回复

使用道具 举报

17

主题

237

帖子

0

精华

高级会员

Rank: 4

积分
925
金钱
925
注册时间
2012-2-27
在线时间
393 小时
发表于 2017-8-23 16:56:54 | 显示全部楼层
没有你觉醒那么快,我以为是那个BUg的问题,然后就不用两个DMA了
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2016-10-17
在线时间
26 小时
 楼主| 发表于 2017-8-23 17:41:58 | 显示全部楼层
k-ad 发表于 2017-8-23 16:56
没有你觉醒那么快,我以为是那个BUg的问题,然后就不用两个DMA了

我这也没法用一个DMA啊。应该是两个DMA总线冲突了,不晓得有什么解决办法不
回复

使用道具 举报

17

主题

237

帖子

0

精华

高级会员

Rank: 4

积分
925
金钱
925
注册时间
2012-2-27
在线时间
393 小时
发表于 2017-8-23 19:11:19 | 显示全部楼层
有高手试过吗?
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2016-10-17
在线时间
26 小时
 楼主| 发表于 2017-8-24 09:39:06 | 显示全部楼层
求助,有人可以帮我解答一下吗
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-8-17
在线时间
1 小时
发表于 2018-8-17 17:01:50 | 显示全部楼层
我也遇到同样的问题,同时使用DMA1和DMA2时,程序跑一会就发生总线故障,只使用DMA1时,就没有问题,楼主现在有没有什么思路了
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-17 17:38:46 | 显示全部楼层
我之前同时用两个DMA没有什么问题过
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-8-17
在线时间
1 小时
发表于 2018-8-17 18:26:22 | 显示全部楼层
edmund1234 发表于 2018-8-17 17:38
我之前同时用两个DMA没有什么问题过

您用的是那几个源啊
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-17 18:42:23 | 显示全部楼层
一个DMA 用了3个通道, 另一个DMA用了4个通道
不是同一时间全都开, 得最少也有两个是同时在用, 我还记得mem2mem不能同时用, 其它peripha到mem, 或者mem2peripha同用是没问题
回复

使用道具 举报

40

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-5-19
在线时间
192 小时
发表于 2020-3-12 14:51:09 | 显示全部楼层
设置  DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;这个会好很多
回复

使用道具 举报

40

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-5-19
在线时间
192 小时
发表于 2020-3-12 14:51:54 | 显示全部楼层
楼主后来是怎么解决的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-4 06:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表