2293193_en-US

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2293193_en-US

2293193_en-US

MCXA346 DMA channel link

Hello.

I'm trying to modify the official routine frdmmcxa346_edma3_channel_link to make the memory carry once again and have configured the source and destination addresses, but after the first carry is complete, starting the second carry, it won't start, attached is my modified program.

346500452_1-1768385066331.png


346500452_0-1768384962192.png



Looking forward to a reply! Thank you!

MCXARe: MCXA346 DMA channel link

Hi

Your understanding is correct. It is indeed what I wanted to do.

The reason why I want to try this example is that I want to use DMA and ADC together.

I want to achieve the function of synchronous acquisition of 3 ADCs. Currently, I have accomplished this using a certain method. The three ADCs use the timer to trigger for synchronous acquisition, and a DMA channel is configured for each ADC. In the DMA channel interrupt, it is determined whether the current data acquisition is completed. This means that there are three ADCs corresponding to three DMA channels.

After the DMA transfer is completed, since it is a 3-channel operation, there will be three DMA channel interrupt service functions.

1. I want to reduce the number of DMA interrupts from three to one in order to lower the system load.

2. Since it is a synchronous collection, it is impossible to determine which DMA transfer was completed first. Therefore, it is necessary to check whether all three channels have been completed.

I have studied the channel joint function of DMA. Can I achieve the above function by using 3 minor loops and 1 major loop? This way, there will only be one DMA channel interruption, and it can ensure that each ADC data is successfully transferred.

I'm not sure if my understanding is correct. Please let me know if I'm wrong.

Thank you.

Re: MCXA346 DMA channel link

Hi @346500452 

I use a translate tool to support you, I understood that you want to modify the example to do more than one transfer, but your code gets stuck waiting the g_Transfer_Done to set. Let me know if something is missing in translation. 

You need to modify the EDMA_PrepareTransfer params, please review the function brief and params. If you are not interested in the Channel Link functionality, I recommend you review the edma3_memory_to_memory examples instead. 

Re: MCXA346 DMA channel link

Hi @346500452 

Thanks for confirming the translation and giving more details about your goal.

You are correct you could accomplish it with 3 minor loops and 1 major loop, my recommendation is to channel link with Minor and Major loops to trigger the 3 eDMA configs simultaneously but only enable one channel major loop interrupt. 

carlos_o_0-1768589171209.png

At the interrupt you could review the other 2 eDMA status to know if they finished the transfer. 

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-17-2026 02:27 AM
更新者: