新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2019-12-2
- 在线时间
- 8 小时
|
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运行模式仅有下图中几种,没有找到循环模式? |
|
最佳答案
查看完整内容[请看2#楼]
问题已解决,DMA是处在PINGPANG模式下,只是在开启下一次传输之前要重置DMA的配置,才可以将数据重新放在数组的第一位
|