Skip to main content
Barry Richards
Associate III
September 3, 2017
Question

DAC noise on SDCARD reads - SOLVED

  • September 3, 2017
  • 11 replies
  • 2489 views
Posted on September 03, 2017 at 23:44

I have a custom board (2 layer) using a STM32F446RETx (3.3v) with STM32CubeMX, V4.22 with firmware V1.16.0.  I am reading/processing MP3 files from a sdcard and there is a low-level but perceptible 'thump' in the audio when the card is read.  I can change the noise interval by changing the size of the fatfs read buffer. Also see waveform, top trace is SDIO D0 and bottom trace is DAC1

0690X000006086LQAQ.png

processor speed is 120MHz

SDIO clk 48MHz

SDCARD 4-bit with DMA and a lower priority than DAC

Allowing SDCARD reads but forcing DAC output to a set level (2047) the 'thump' is still heard when the card read takes place. (sounds rather like listening to a heartbeat in a stethoscope).

Changing the DAC from 12 bit to 8 bit had no effect.

Enabling or disabling the DAC output buffer has no effect.

Changing slew rate on the GPIO pins has no effect.

Changing SDIOCLK divisor has no effect.

Using 3 different sdcards has no effect.

I re-did the board, moving the SDCARD slot away from the CPU and added a 33uF cap across SDCARD pwr supply.

SDCARD slot is not under or in close proximity to the MCU and SD traces are not in parallel or close to the DAC traces.

The sound quality of the DAC output is fine except for the noise when the card is read.

I thought this would not be a problem since the card and dac are on separate DMA controllers.

Should I give up on using the internal DACs and go with a I2S external DAC?

Thanks for any suggestions.

    This topic has been closed for replies.

    11 replies

    Tesla DeLorean
    Guru
    September 4, 2017
    Posted on September 04, 2017 at 04:01

    Managing current flows and power on 2-layer boards is always a nightmare.

    Perhaps focus on the bulk and decoupling capacitors on the digital supplies, and what's happening with the VCAP pins.

    Perhaps looks at a choke/inductor on the VDDA/VREF+

    Other might have a better idea if noise on the die can be reliably kept from the DAC/ADC side of things.

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
    Barry Richards
    Associate III
    September 4, 2017
    Posted on September 04, 2017 at 17:13

    Thank you for the suggestions Clive1.

    I did manage to get a small inductor soldered between V+ and the 1uF cap on VDDA.  I also tried changing the 1uF cap to 10uF but in both cases, there was no detectable difference.

    Unless someone can say the DAC and SD paths inside the mcu should not interfere with concurrent activity, I think I will try a external DAC next, then failing that, go with the 4-layer board.

    waclawek.jan
    Super User
    September 4, 2017
    Posted on September 04, 2017 at 17:26

    Take a similar scan with the scope than the first one, except that now with VDDA instead of DAC output at channel 2.

    JW

    waclawek.jan
    Super User
    September 4, 2017
    Posted on September 04, 2017 at 20:40

    DAC is only an 'adjustable divider from VDDA'. So make VDDA clean and you're done.

    Note that GND is part of the circuit, and that there's nothing like zero resistance track.

    JW

    Barry Richards
    Associate III
    September 5, 2017
    Posted on September 05, 2017 at 03:09

    It seems making VDDA clean can't be done with capacitors or inductors.

    I think I see a 4-layer board in my future.

    Thanks for all the suggestions.

    waclawek.jan
    Super User
    September 5, 2017
    Posted on September 05, 2017 at 08:59

    While harder, it's still perfectly possible to achieve the same level of noise on a multilayer board if you don't know what are you doing.

    Start with your current board. Cut GND and VCC just next to SDCard. Run two wires to it directly from the regulator. Measure (and be sure you place the ground clip and probe tip to the very same spots as previously). Any change?

    JW

    Barry Richards
    Associate III
    September 23, 2017
    Posted on September 24, 2017 at 01:35

    For anyone who comes across this thread, the DAC/SDIO DMA was not the problem. 

    The DAC output goes to a opamp biased with a voltage divider.  When the SD card was read, it caused enough of a drop in the power supply to pull the divider down slightly.  By putting a capacitor across the voltage divider, the noise went away.