Quantcast
Channel: C2000™︎ 微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 12277

28335 ADC过采样应该如何使用DMA?

$
0
0

应用场景如下:
ePWM1输出10k PWM信号,计数周期100us。希望以40k的开关频率 在0us 25us 50us 75us同步采样。

使用ePWM2 cnt=ZRO时作为ADC触发源。ePWM计数频率40k,ePWM1在cnt=ZRO输出同步信号同步ePWM2,保证两者同步。

实际算法在ePWM1的ISR中执行,即进入到ISR以后,可以访问过去四次ADC转换结果。现在希望用使用DMA,将过去四次ADC转换结果放到一个16x4的buffer中。

应该如何设置DMA呢?主要是Burst、Transfer、Wrap三个函数应该如何设置。
初步想法是一个Burst传输16个16位字,也就是16路ADC转换结果。如何保证4次AD转换DMA过程目标地址每次偏移16呢?
SPRUFB8这个文档看得云里雾里,不是太明白。

// DMA can only access ADC result at 0x0B00-0x0B0F
DMACH1AddrConfig(&AdDmaBuf[0], &AdcMirror.ADCRESULT0);

DMACH1BurstConfig(16-1, 1, 1);

DMACH1TransferConfig(9,-15,(-150 + 1));

DMACH1WrapConfig(100, 100, 100, 100);

DMACH1ModeConfig(
DMA_SEQ1INT,
PERINT_ENABLE,
ONESHOT_DISABLE,
CONT_DISABLE,
SYNC_DISABLE,
SYNC_SRC,
OVRFLOW_DISABLE,
SIXTEEN_BIT,
CHINT_END,
CHINT_ENABLE
);


 


Viewing all articles
Browse latest Browse all 12277

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>