打印
[STM32F1]

请教个DMA的问题

[复制链接]
1296|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zitral|  楼主 | 2014-9-28 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA 在什么情况下会产生传输错误呢?有遇到过的么,举个例子吧!
另外,我在调试的时候DMA传输完成标志置位后若不清除,dma中断还是会进入的,但是如果通道传输错误标志置位后,dma中断还会进入么?
沙发
aozima| | 2014-9-28 12:23 | 只看该作者
不同的芯片可能实现的不一样。
但有发生错误,不管后面是否有完成中断,都表示出错了,这个完成没有意义。
最好的作法是出错以后,停止DMA,再做善后处理。
对于MCU,DMA出错多是buffer设置错误了。

使用特权

评论回复
板凳
mmuuss586| | 2014-9-28 13:43 | 只看该作者
1、DMA传输完成标志置位后若不清除,dma中断还是会进入的;
   那就清楚标志位;
2、但是如果通道传输错误标志置位后,dma中断还会进入么?
   看看有没有DMA传输出错中断源,有的话就开启这个中断,出错后再配置下DMA;

使用特权

评论回复
地板
zitral|  楼主 | 2014-9-29 09:59 | 只看该作者
aozima 发表于 2014-9-28 12:23
不同的芯片可能实现的不一样。
但有发生错误,不管后面是否有完成中断,都表示出错了,这个完成没有意义。
...

我现在的问题是DMA在传输到CNDTR=0X001F的时候就出错了,不明白为啥传到中途就挂了!不知道该怎么找原因了!buffer设置应该没有问题。

使用特权

评论回复
5
zitral|  楼主 | 2014-9-29 10:04 | 只看该作者
mmuuss586 发表于 2014-9-28 13:43
1、DMA传输完成标志置位后若不清除,dma中断还是会进入的;
   那就清楚标志位;
2、但是如果通道传输错误 ...

我的应用是通过DMA不断向DAC送数据,数据源内存是向系统申请的,需要在DMA中断中释放,每次传输完成后进DMA中断。想知道现在该怎么排查!

使用特权

评论回复
6
aozima| | 2014-9-29 10:21 | 只看该作者
停止DMA,释放数据,next

使用特权

评论回复
7
zitral|  楼主 | 2014-11-10 15:35 | 只看该作者
aozima 发表于 2014-9-29 10:21
停止DMA,释放数据,next

我的应用中是不断地通过DMA向DAC传送音频数据,所以DMA不能停!由于程序占用内存(RAM)比较多,优化了一下内存占用,竟然没有这个问题了,难道内存超出了会影响DMA传输!!!后面也就没再找其他原因了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

66

帖子

0

粉丝