你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

同一个DMA的不同通道之间的数据会有冲突?

[复制链接]
yangwenchao2000 提问时间:2016-12-7 11:49 /
问题是:单独用STM32F373 的DMA2_CH3由内存向DAC1_CH1传数据,生成约13KHz正弦信号,没有问题。另外单独用DMA2_CH4将SDADC2转换结果通过DMA2_CH4送到内存,50KHz采样速率。也没有问题。上述两项工作同时做,DAC1_CH1出来的几乎是杂波。尝试将DAC1_CH1生成的正弦信号频率降低至2.5KHz,同时将SDADC2采样速率降低至12.5KHz,无济于事。
收藏 1 评论4 发布时间:2016-12-7 11:49

举报

4个回答
yhyeefocus 回答时间:2016-12-7 12:25:16
应该不会吧     
小小超 回答时间:2016-12-7 13:36:53
程序有问题吧。。。
yangwenchao2000 回答时间:2016-12-7 15:56:43
ts2000 发表于 2016-12-7 13:36
程序有问题吧。。。

确实是程序的问题,程序中开启了DMA2_CH4传输完成中断,中断中释放了执行FFT信号量,执行了FFT后紧跟着执行了求模函数arm_cmplx_mag_f32,已经查明就是由于执行了这个求模函数导致生成正弦信号失效。求模函数中执行了大量的乘法及开平方计算。估计由于计算量比较大,占用了系统总线带宽。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

yangwenchao2000 回答时间:2016-12-7 17:59:14
又发现执行FFT运算(arm_cfft_radix4_f32函数)会导致DMA2_CH4数据传输错误。
DMA传输时要让出一半的系统总线带宽给CPU( Cortex-M4 with FPU core),但是也不对啊。SDADC以50KHz速率采样,占用的带宽不会超过1MHz。100点的正弦序列生成13KHz的正弦信号也就占用1.3MHz带宽。系统总线带宽有72MHz,系统总线是32位宽。怎么算这两个DMA通道都不会占用一半的系统总线带宽。
sharing the system bus with the Cortex®-M4 with FPU core.png
System architecture.png

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版