cancel
Showing results for 
Search instead for 
Did you mean: 

Can DMA_ADC be used with Memory-to-Memory DMA in fast data acquisition and transfer, as well as noise problem with external PHY?

QZhao
Associate

Hello,

I have an application in which waveform is generated (DAC1, updated triggered with T6), data is acquired (ADC1_INP2 and ADC2_INP3, dual simultaneous mode, triggered with T3), T2 is used to control the waveform, ADC_DMA in circular mode is employed. I have options of using either the internal PHY or external PHY (Waveshare USB3300) for transferring data back to the host PC. The data transfer takes place at DMAHalfComplete and DMAComplete interrupts, respectively. With the internal PHY the program runs ok but I want to go faster up to at least 2MHz of ADC sampling rate and transfer chunks of data back to the host PC. But I have confronted problem with the external PHY. So far I can make the software run with a few wonders:

  1. How fast can ADC go in this case (dual simultaneous ADC)?
  2. DAC1 is on pin PC4, the external PHY CLK on pin PC5, ADC2_INP3 on PC6, ADC1_INP2 on PF11. A crosstalk (guess from the ULPI CLK pin) of 2000/65536 is measured on ADC2_INP3. I couldn't reach 2MHz of ADC sampling if DAC1 is connected to either of ADC1_INP and ADC2_INP3. Is this crosstalk just due to the Nucleo board or inherent from the chip STMH743ZI?
  3. Since the data is being transferred live and needs to be tagged on the LSB. The data is transferred only in the interrupt of DMAComplete (not including DMAHalfCompete interrupt), hence the data in the first half of DMA needs to be stored in another array being protected from erased by new data (which comes in while the data in the whole DMA is being processed after the entire DMA is full). I have tried using a memory-to-memory DMA to move the data in DMA_ADC half by half at DMA_ADC haflComplete and FullComplete interrupt, but no lucky. I would like to know if it is possible or not.

Any input would be appreciated!

Many thanks,

0 REPLIES 0