- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi ,
Actually my problem is QADC DMA trigger, as you know there are two ADC module on MPC5674F QADC_A and QADC_B. I want to make convertion to all 64 channels in one cycle because of that I have to use both QADC_A and QADC_B. Simply, I want to link from EDMA_A channel 0 to EDMA_B channel 0.
How can I do that in without cpu intervention? I use TCD MAJOR LINK register to link but I dont know how can I link to other DMA Engine ?
/*** linking ***/
EDMA_A.TCD[CFIFO_0_DMA_chnl].CITERE_LINK = 0;
EDMA_A.TCD[CFIFO_0_DMA_chnl].BITERE_LINK = 0;
EDMA_A.TCD[CFIFO_0_DMA_chnl].MAJORE_LINK = 1;
EDMA_A.TCD[CFIFO_0_DMA_chnl].MAJORLINKCH = CFIFO_2_DMA_chnl;
Note: ADC_A CFIFO0 DMA is in EDMA_A CH0 and ADC_B CFIFO0 DMA is in EDMA_B CH0.
Best Regards,
Umit.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link between EDMA_A and EDMA_B channels are not possible. These 2 modules are independent.
However in your case it does not give me any sense anyway.
- You cannot convert 64 channels in one cycle because you have only 4 converters (eQADC_A_ADC0, eQADC_A_ADC1, eQADC_B_ADC0 and eQADC_B_ADC1) thus 4 channel can be converted simultaneously.
- You have 6 RFIFOs per eQADC and Receive FIFOx Drain Flag is just triggering source for DMA transfer. eQADC_A and eQADC_B RFIFOs are again independent thus you cannot for instance place result from eQADC_A to eQADC_B’s RFIFO.
Solution: Trigger DMA transfer by particular Command FIFO Fill Flag or Receive FIFO Drain flag as specified in Table 20-24/25. There still will be no CPU intervention as FIFOs will filled/drained as required by particular eQADC module. Don’t mix eQADC trigger and eDMA trigger, these are two different things.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link between EDMA_A and EDMA_B channels are not possible. These 2 modules are independent.
However in your case it does not give me any sense anyway.
- You cannot convert 64 channels in one cycle because you have only 4 converters (eQADC_A_ADC0, eQADC_A_ADC1, eQADC_B_ADC0 and eQADC_B_ADC1) thus 4 channel can be converted simultaneously.
- You have 6 RFIFOs per eQADC and Receive FIFOx Drain Flag is just triggering source for DMA transfer. eQADC_A and eQADC_B RFIFOs are again independent thus you cannot for instance place result from eQADC_A to eQADC_B’s RFIFO.
Solution: Trigger DMA transfer by particular Command FIFO Fill Flag or Receive FIFO Drain flag as specified in Table 20-24/25. There still will be no CPU intervention as FIFOs will filled/drained as required by particular eQADC module. Don’t mix eQADC trigger and eDMA trigger, these are two different things.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you David,
After your message I thought that using two different DMA trigger for two QADC units and actually I dont need to link, I just run DMAs and get the result. Conversion is going in parallel manner.:smileycool:
Best Regards,
Ümit.