你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
同一个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,无济于事。
赞
0
收藏
1
评论
4
分享
发布时间:2016-12-7 11:49
举报
请先
登录
后回复
4个回答
yhyeefocus
回答时间:2016-12-7 12:25:16
a0a.1 32b0c
应该不会吧
赞
0
评论
回复
支持
反对
ts2000
回答时间:2016-12-7 13:36:53
a0a.1 32b0c
程序有问题吧。。。
赞
0
评论
回复
支持
反对
yangwenchao2000
回答时间:2016-12-7 15:56:43
a0a.1 32b0c
ts2000 发表于 2016-12-7 13:36
程序有问题吧。。。
确实是程序的问题,程序中开启了DMA2_CH4传输完成中断,中断中释放了执行FFT信号量,执行了FFT后紧跟着执行了求模函数arm_cmplx_mag_f32,已经查明就是由于执行了这个求模函数导致生成正弦信号失效。求模函数中执行了大量的乘法及开平方计算。估计由于计算量比较大,占用了系统总线带宽。
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
结贴奖励
查看全部评分
赞
0
评论
回复
支持
反对
yangwenchao2000
回答时间:2016-12-7 17:59:14
a0a.1 32b0c
又发现执行FFT运算(arm_cfft_radix4_f32函数)会导致DMA2_CH4数据传输错误。
DMA传输时要让出一半的系统总线带宽给CPU( Cortex-M4 with FPU core),但是也不对啊。SDADC以50KHz速率采样,占用的带宽不会超过1MHz。100点的正弦序列生成13KHz的正弦信号也就占用1.3MHz带宽。系统总线带宽有72MHz,系统总线是32位宽。怎么算这两个DMA通道都不会占用一半的系统总线带宽。
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
确实是程序的问题,程序中开启了DMA2_CH4传输完成中断,中断中释放了执行FFT信号量,执行了FFT后紧跟着执行了求模函数arm_cmplx_mag_f32,已经查明就是由于执行了这个求模函数导致生成正弦信号失效。求模函数中执行了大量的乘法及开平方计算。估计由于计算量比较大,占用了系统总线带宽。
评分
查看全部评分
DMA传输时要让出一半的系统总线带宽给CPU( Cortex-M4 with FPU core),但是也不对啊。SDADC以50KHz速率采样,占用的带宽不会超过1MHz。100点的正弦序列生成13KHz的正弦信号也就占用1.3MHz带宽。系统总线带宽有72MHz,系统总线是32位宽。怎么算这两个DMA通道都不会占用一半的系统总线带宽。