Electronic – Please help me identify this noise on the ADC

adcaudioaudio-codecnoise

I have a CS4270 codec hooked up to a Raspberry Pi more or less according to the "recommended layout" in the datasheet (P7), shown below. This device sinks power from three different places (VA = power for analog subcircuits, VD = power for DSP, VLC = power for control port (I2C and clocks). Currently VA is sourced by an LT1965 (in turn powered from an Adafruit Powerboost connected to a LiPo battery) while VLC and VD are sourced from the Raspberry Pi's 3.3V output.

Recommended layout

I am able to record from the device as expected using SoX on or arecord on the Pi, however I am confronted with a troubling amount of noise on the signal. These images are representative of what I'm seeing:

Full spectrum, 0-96kHz
full-spectrum spectrogram

Bottom of the spectrum, about 0-1kHz
spectrogram from 0 to about 1kHz

In the top spectrogram, I see spikes of broadband noise repeating at about 33.3Hz, though the exact period seems to vary from recording to recording (I just saw some at about 50Hz in another recording). In the bottom spectrogram, I see narrowband noise at 50-60Hz and some bad harmonics. I haven't even started work on the signal chain leading into the ADC yet because these artifacts are everywhere on the board — I've plugged the inputs into ground, VA/2, even the codec's own midpoint reference voltage (VQ) and I see the same kind of thing everywhere, albeit with varying levels of intensity.

Clearly, 60Hz harmonics screams noise from the power main, but the whole setup is disconnected entirely from the wall (powered by battery at the moment).

Here's a shot of my actual current layout. In this case the ADC inputs are tied to VA / 2 through a simple passive filter (lower board), which in an ideal world would produce a bunch of zeroes on the ADC. The LT1965 is powered through a filter with a few decades' worth of caps and a ferrite bead — not strictly necessary but it did seem to help with actual mains noise. These particulars aren't super relevant since varying the power source or the input still results in the same artifacts.

enter image description here

I would really, really appreciate some assistance in identifying potential culprits for this noise. Is this something characteristic of the topology? Or is this to be expected on a $1 Chinese breadboard with jumpers everywhere, and I should just order a PCB with the same layout for further testing? Obviously this is difficult to debug remotely — my hope is that someone will see this and say, "aha! I've seen this before!"

EDIT: highly unlikely to be relevant, but here's the driver (mostly a wrapper around the CS4270 driver currently) that I am using, along with a device tree overlay that is almost identical to the HifiBerry DAC+ Pro one in RPi Linux. Unlikely to be part of the problem, but may be of interest to Linux nerds.

Best Answer

Proto-boards are hardware platforms quite sensitive to noise. Note that it is build with a lot of metalic rails inside. In addition the aerial wirings just catch extra EMI from air. You could at least minimise the noise amplitude by grounding the surrounding non used rails of the proto-board, as well as shielding the wire with brings the signal to the board, along with spreading ceramic capacitors at power rails close to the AD.