OpenEdv-开源电子网

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

ADC采集不定长数据,用DMA传输,该如何配置

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2019-12-2
在线时间
8 小时
发表于 2022-3-16 14:59:23 | 显示全部楼层 |阅读模式
3金钱
用的是ADUCM410的单片机,在使用DMA传输ADC的采样数据时,定义DMA数据长度位3000,ADC采样的数据长度在1000~3000之间变化。
在信号开始时,AD开始采样,采样一个周期
DMA配置为PING-PONG模式
DMA传输第一个周期时,采样1000个值,占数组的0~999;读取数据后,清零数组;
DMA传输第二个周期时,采样1000个值,但是占数组的1000~1999,我想让它继续放到数组的0~999,但是并没有;读取后清零;
DMA传输第三个周期时,采样1000个值,占数组2000~2999。我想让它继续放到数组的0~999,但是并没有
当三轮传输后,DMA的数据长度为0,不再进行传输。

查阅资料后,可以将DMA运行模式配置为循环模式,再配置输入引脚中断,在完成一个信号周期采样后,进入引脚中断,重新配置DMA以解决问题。
但查阅数据手册,发现DMA运行模式仅有下图中几种,没有找到循环模式?

DMA模式.PNG

最佳答案

查看完整内容[请看2#楼]

问题已解决,DMA是处在PINGPANG模式下,只是在开启下一次传输之前要重置DMA的配置,才可以将数据重新放在数组的第一位
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2019-12-2
在线时间
8 小时
 楼主| 发表于 2022-3-16 14:59:24 | 显示全部楼层
问题已解决,DMA是处在PINGPANG模式下,只是在开启下一次传输之前要重置DMA的配置,才可以将数据重新放在数组的第一位
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2022-3-17 01:05:33 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

668

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1926
金钱
1926
注册时间
2021-8-13
在线时间
262 小时
发表于 2022-3-17 09:45:40 | 显示全部楼层
帮顶   
回复

使用道具 举报

10

主题

123

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1552
金钱
1552
注册时间
2017-10-9
在线时间
131 小时
发表于 2022-3-17 11:13:49 | 显示全部楼层
DMA传输配置为循环,由外设到存储传输的方式,直接利用DMA的传输函数进行设置应该就可以了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 18:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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