MPC5674F EDMA_A to EDMA_B channel linking is possible ?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MPC5674F EDMA_A to EDMA_B channel linking is possible ?

Jump to solution
605 Views
u_kayacik
Contributor II

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.

Labels (1)
1 Solution
504 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

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.

View solution in original post

2 Replies
505 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

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.

504 Views
u_kayacik
Contributor II

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.

0 Kudos