Loading...
 
Skip to main content

System Workbench for STM32


Stm32f405rgt6 stm32f407vgt6 spike noise

Title: STM32F405RGT6 ADC3 → DMA → DAC1: Random Short Glitches at 100 kHz
Hello,
I am working on a real-time audio ADC-to-DAC loopback using an STM32F405RGT6.
My current structure is:
ADC3: PA3
DAC1: PA4
Timer trigger: TIM8 TRGO
Sample rate: 100 kHz
ADC: 12-bit with DMA
DAC: 12-bit with DMA
Separate ADC and DAC buffers
No filter or signal processing
I built this structure myself. I am not looking for ready-made code. I am mainly looking for the experience of people who have worked with STM32F405/F407 audio ADC-to-DAC systems and may have encountered the same problem.
The problem: short random spikes / glitches
The main waveform looks correct and continuous, but occasionally I see a very short random spike/glitch on the DAC output.
The glitch is extremely short compared with the audio waveform.
I can also hear it as a small click/crackle in the audio.
A good analogy is touching a stranded wire repeatedly against the positive terminal of a 12 V battery. The connection is almost continuous, but tiny moments of contact/disconnection can produce a small electrical spark and crackling sound.
This is similar to what I see on the oscilloscope: the normal waveform is present, but occasionally there is a very short sharp jump/spike.
I want to find the actual cause of these glitches rather than hide them with filtering.
I am particularly interested in experience with:
ADC → DMA → RAM → DAC → DMA timing
ADC/DAC synchronization
TIM8 TRGO synchronization
DMA transfer timing or underrun
ADC and DAC DMA interaction
Separate buffer synchronization
DMA buffer size
Bus or memory timing on STM32F405/F407
ADC sampling time
DAC DMA configuration
Any relevant STM32F4 errata or known limitations
Has anyone built an STM32F405/F407 audio ADC → DMA → memory → DAC → DMA loopback and encountered similar short random spikes or glitches?
If so, I would really appreciate hearing what caused the problem and how you diagnosed it.
I can provide my CubeIDE/CubeMX configuration, DMA settings, TIM8 configuration, source code, and oscilloscope screenshots if useful.
My main goal is to understand why this very short discontinuity occurs and find a reliable way to obtain a continuously updated DAC waveform.
Thank you.

 
Collapse/expand modules below