Accessing variable starting points in an array with DMA

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

cross mob
Anonymous
Not applicable

Hello my PSoC heros!

   


Theoretical setup:

   

A series of 11 arrays with 4000 bytes each filled by  DMA_1 with chained TDs as a circular buffer of 8bit audio samples from an ADC_DelSig (44ksps). 

   

uint8 adc_bufferArray1[4000]={0};
"
"
uint8 adc_bufferArray11[4000]={0};

   

DMA_2 is configured as a chain of TDs (advanced by the same ADC_DelSig EOC) to transfer a new byte from the circular buffer to a VDAC but with an offset starting point to cause a delayed output.

   

The goal is to control this offset with a variable to change the delay time. 

   

I've almost wrapped my head around how to change DMA_2's starting TD with a variable giving 10 or 11 different delay times. In the meantime priority is given to DMA_1 to avoid conflicts, although I think there's a way to track this with a counter/status register or something.

   

My question: is there a way, using DMA, to vary the starting TD and the byte in that particular source with a variable?

   

(I have the variable obtained and scaled via SAR_ADC and a potentiometer.)

   

Thank you in advance for any wisdom you may offer and the time to articulate it!!! I've been reading your posts for months and really appreciate your guidance and ideas.

0 Likes
1 Reply