The transfer of DMA is completed in the middle unintentionally

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
hiyac_351831
Level 3
Level 3
25 replies posted 10 replies posted 10 questions asked

Hello.

I have just created attachment project, but the transfer of DMA is completed in the middle.

I want to send from ROM to RAM, DMA transfer 100 Word.(finally, want to enter DMA transfer interrupt routine)
But Actually, when after a few byte transfer, enter DMA transfer interrupt routine.

How do I fix it?
Please give me some advice.

Best regards,

0 Likes
1 Solution
MeenakshiR_71
Employee
Employee
100 likes received 50 likes received 25 likes received

Hello,

From your comment, I assume that you want to trigger the DMA completion interrupt after transferring 100 words of data from Flash to RAM. Is this correct?

If yes, then you can use the below settings. Quick walkthrough of the below settings (the ones that matter most in your case):

Interrupt - Trigger on every X loop transfer completion: Triggers DMA interrupt after transferring X loop i.e. 100 words of data.

Channel State - Disable: I am disabling the channel after completing the transfer (both X and Y). You can leave it enabled. However that combined with "Chain to Descriptor_1" and an infinite trigger from software, will keep transferring data from Flash to RAM indefinitely

Trigger retriggering - Immediate: Again since you were using infinite trigger in the software, I have configured it to retrigger immediately. Again, options other than "Wait for reactivation" will trigger continuously. The wait for reactivation, will require you to deactivate the trigger in firmware and then reactivate it. One other thing, since you are transferring only "One transfer (word) per trigger", every trigger will only transfer one word. And if you want to see the transfer of 100 words in one shot/trigger, then select "One X loop transfer per trigger" as input type. However since you are providing an infinite trigger in the firmware, I did not modify this field and just changed the retriggering mechanism.

Number of X loops - 1: we are transferring only one set of 100 words. The other two fields in Y Loop transfer does not matter as after one X loop transfer, the descriptor is complete. However if you are transferring more than one loop, be sure to modify Src/Dst increment (in number of Data element size) as per your requirements.

You can refer to the component datasheet for details on other parameters.

pastedImage_0.png

Let me know if this helps.

Regards,

Meenakshi Sundaram R

View solution in original post

0 Likes
2 Replies
MeenakshiR_71
Employee
Employee
100 likes received 50 likes received 25 likes received

Hello,

From your comment, I assume that you want to trigger the DMA completion interrupt after transferring 100 words of data from Flash to RAM. Is this correct?

If yes, then you can use the below settings. Quick walkthrough of the below settings (the ones that matter most in your case):

Interrupt - Trigger on every X loop transfer completion: Triggers DMA interrupt after transferring X loop i.e. 100 words of data.

Channel State - Disable: I am disabling the channel after completing the transfer (both X and Y). You can leave it enabled. However that combined with "Chain to Descriptor_1" and an infinite trigger from software, will keep transferring data from Flash to RAM indefinitely

Trigger retriggering - Immediate: Again since you were using infinite trigger in the software, I have configured it to retrigger immediately. Again, options other than "Wait for reactivation" will trigger continuously. The wait for reactivation, will require you to deactivate the trigger in firmware and then reactivate it. One other thing, since you are transferring only "One transfer (word) per trigger", every trigger will only transfer one word. And if you want to see the transfer of 100 words in one shot/trigger, then select "One X loop transfer per trigger" as input type. However since you are providing an infinite trigger in the firmware, I did not modify this field and just changed the retriggering mechanism.

Number of X loops - 1: we are transferring only one set of 100 words. The other two fields in Y Loop transfer does not matter as after one X loop transfer, the descriptor is complete. However if you are transferring more than one loop, be sure to modify Src/Dst increment (in number of Data element size) as per your requirements.

You can refer to the component datasheet for details on other parameters.

pastedImage_0.png

Let me know if this helps.

Regards,

Meenakshi Sundaram R

0 Likes

Hello msur-san,

Thank you for your quick reply.
Thanks to you I was able to resolve that.

Best regards,