Can we change value in looping the DMA?

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

cross mob
koMi_4274846
Level 1
Level 1
First question asked First reply posted First like received

Hi, I'm using the DMA.

Is it possible to change value of source in transferring from memory to original component?

I'm using DMA in loop.

I tried to change memory array of td when DMA transfer other td.

It is like that change td[10] value when trinsfer td[3]

But, It was unchanged values of transferred..

If you have advice could you help me?

Thank you!

0 Likes
2 Replies
RodolfoGL
Employee
Employee
250 solutions authored 250 sign-ins 5 comments on KBA

Yes, that is possible.

There is a component that dynamically changes the TD of a DMA - the MDIO Interface component. You could import it in PSoC Creator and see how it is done.

Refer to the DmaInit() function in MDIO_Interface.c. More specifically the AddDMA. That's the one modifying the source/destination address of other DMAs.

0 Likes
Len_CONSULTRON
Level 9
Level 9
Beta tester 500 solutions authored 1000 replies posted

koMi,

Take a look at the DMA component datasheet.   There are two DMA transfer methods "Indexed DMA" and "Nested DMA" where the DMA td factors are changed on-the-fly without CPU intervention.

If either of these techniques will not work, then your only choice is to stop the TD (or let the TD finish) then to initialize other TDs via the CPU intervention.

Len

Len
"Engineering is an Art. The Art of Compromise."
0 Likes