问题:
对ADC的某 一个 通道用DMA方式采样。 怎么做, ADC的模式,和DMA的参数怎么配合。 看了有关TI上的例程, 还是理解不是很好;
下面是一个对两通道采样的代码, 调试能过了, 但有有些东西还是不明白。
// 采样方式设置
AdcRegs.ADCTRL1.bit.SEQ_CASC = 0; // 0 双排序 1 级联模式
AdcRegs.ADCTRL3.bit.SMODE_SEL= 0; // 0 顺序采样 1 同步采样
AdcRegs.ADCTRL1.bit.CONT_RUN = 0; // 0 启停模式 1 连续模式
//采样通道设置
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 1; // Set up ADC to perform 4 conversions for every SOC
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1;
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x0;
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x1;
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x0;
AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x1;
AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x0;
AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x1;
DMA部分
volatile int16 debugDB[16]={1, 2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16}; // 用于替代ADC结果寄存器, 速度在太快时不能分辨结果值时用。
// DMACH1AddrConfig(DMADest,DMASource);
DMACH1AddrConfig(pDest,debugDB);
// DMACH1AddrConfig(pDest,DMASource);
DMACH1BurstConfig(1,1,SAMPLE_SIZE);
DMACH1TransferConfig(SAMPLE_SIZE-1,-1,0);
DMACH1WrapConfig(3,0,0,1);
DMACH1ModeConfig(DMA_SEQ1INT,PERINT_ENABLE,ONESHOT_DISABLE,CONT_DISABLE,SYNC_DISABLE,SYNC_SRC,
OVRFLOW_DISABLE,SIXTEEN_BIT,CHINT_END,CHINT_ENABLE);
StartDMACH1();
extern void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
extern void DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
extern void DMACH1WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep);
extern void DMACH1ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte);
那位能明确的介绍下这几个函数及参数的意义吗