K20 ADC with DMA

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

K20 ADC with DMA

1,435 次查看
knipsknaps
Contributor II

Folks,

 

we have trouble to get the K20 configured correctly with ADC and DMA.

 

Our idea is quite easy explained: We want  i.e 10 consecutive samples of ADC0 (triggered by PDB) to be stored in 10 consecutive memory locations (32 bits)  by DMA. After the 10th conversion we want to get an interrupt to start some CPU action. 

 

Our ADC is running properly and triggering by PDB also works fine.

 

We now have tried to get one sample to be converted and transferred by DMA for testing, but the DMA wil never be triggered...

 

The ADC configuration is

 

  ADC0_CFG1 = ADC_CFG1_ADIV(0x3) | ADC_CFG1_MODE(0x1) | ADC_CFG1_ADICLK(0x1);

  ADC0_CFG2 = ADC_CFG2_ADLSTS(0x2);

  ADC0_SC2 = ADC_SC2_ADTRG_MASK | ADC_SC2_DMAEN_MASK ;

  ADC0_SC3 =  ADC_SC3_AVGS(0x0);

  ADC0_SC1A = /*ADC_SC1_AIEN_MASK |*/ ADC_SC1_ADCH(26);

  ADC0_SC1B = /*ADC_SC1_AIEN_MASK |*/ ADC_SC1_ADCH(26);

 

The DMA and DMA mux configuration is like that:

 

  SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK;

  SIM_SCGC7 |= SIM_SCGC7_DMA_MASK;

  DMA_CR = 0;

  DMA_SERQ = 0x1;

  DMA_CERR = 0x40; //Clear all errors

  DMA_DCHPRI0 = 0;

  DMA_TCD0_SADDR = (uint32_t)&ADC0_RA;

  DMA_TCD0_SOFF = 0;

  DMA_TCD0_ATTR = 0x202; //Source and destination size 32bit, no modulo

  DMA_TCD0_NBYTES_MLNO = 0x4;

  DMA_TCD0_NBYTES_MLOFFNO = 0x4;

  DMA_TCD0_NBYTES_MLOFFYES = 0x4;

  DMA_TCD0_SLAST = 0;

  DMA_TCD0_DADDR = (uint32_t)&adc_dma;

  DMA_TCD0_DOFF = 0x4;

  DMA_TCD0_CITER_ELINKYES = 0x1;

  DMA_TCD0_CITER_ELINKNO = 0x1;

  DMA_TCD0_DLASTSGA = 0;

  DMA_TCD0_BITER_ELINKYES = 0x1;

  DMA_TCD0_BITER_ELINKNO = 0x1;

  DMA_TCD0_CSR = 0xA;

 

  DMAMUX_CHCFG0 = 0;

  DMAMUX_CHCFG0 = 40 | 0x80; //Set DMA Channel0 to ADC0 and enable

 

Any idea, what we are doing wrong ?

 

Any support is welcome. Thanks in advance.

 

Regards, Ulf 

 

0 项奖励
1 回复

456 次查看
konrada
Contributor IV

Have you looked at DMA_ES, where EDMA reports the many ways one can get DMA setup wrong?

0 项奖励