2 Replies Latest reply on Nov 17, 2020 6:03 AM by LePo_1062026

    Can we change value in looping the DMA?


      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!

        • 1. Re: Can we change value in looping the DMA?

          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.

          • 2. Re: Can we change value in looping the DMA?



            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.