最近在学习28335,其中dma 的寄存器配置一直不大明白,希望有朋友能解答下:
利用DMA传输adc 的数据时
void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep) // bsize代表每一帧需要转换的通道数, srcbstep代表每传输一个通道后源地址增加数,desbstep代表每传输一个通道后目标地址增加数
void DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep)// tsize代表需要传输的帧数(16个通道轮流传输完算一次,总共需要传输的次数)。后面2个变量不懂
void DMACH1WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep) // 前面srcwsize为≥0整数时 当已经传递的脉冲数为srcwsize+1的整数倍时,上一帧的源地址+1作为这一次的源地址
当已经传递的脉冲数为deswsize+1的整数倍时,上一帧的目标地址+1作为这一次的源地址
不知道我的注释理解有没有问题,如果总共有16通道的ADC数据,每个通道采集BUF_SIZE个点(也就是采集BUF_SIZE次)那么如下配置对吗?每次传输16通道的数据,共传输BUF_SIZE次,但是,每次传输,是怎么控制DMA传输的呢?
DMACH1BurstConfig(15,1,BUF_SIZE);
DMACH1TransferConfig(BUF_SIZE-1,0,1);
DMACH1WrapConfig(0,0,0,1); //Don't use wrap function