RP2040: ADC noise coupled into input signal path - Page 1
Forum section: electronics / general

author: light655
author_rank: Newbie
timestamp: June 07, 2025, 09:40:59 am
content: Hello guys,I am testing the noise of the RP2040 ADC on the Raspberry Pi Pico. The testing schematic is shown below.When the RP2040 is disconnected from the test circuit, the PSU is measured to have about 350uVrms of noise.When I connect the RP2040 ADC pin and GND to the circuit, the noise increased to around 800uVrms.With further testing I found that if the ADC isn't used in the code, the noise drops back to 350uVrms.It seems like the noise of the switch-mode power supply has coupled onto the ADC input via the ADC when it is activated.I wonder if this is normal? I thought PSU noise will only affect the conversion result.In hindsight, the level of noise would have been less than the ENOB of the ADC, but I still don't like the fact the ADC is injecting noise into the input signal.Note: I am aware of the DNL/INL issue with this ADC.

author: ataradov
author_rank: Super Contributor
timestamp: June 07, 2025, 03:15:11 pm
content: This is common with all SAR ADCs. This is called ADC kickback. They have has a switched capacitor bank that is connected and disconnected from the input every conversion cycle. This generates noise. If this is a problem, you need to buffer the input signal.And on fast and high-resolution ADCs this noise can be much higher than 1 LSB. And if your source can't recover in time for the next sample, then you will start seeing that noise in the sampled data.

author: radiolistener
author_rank: Super Contributor
timestamp: June 07, 2025, 03:59:27 pm
content: It's important to keep in mind that the increase in noise you're observing is not caused solely by the ADC being active - any functional block within the microcontroller, including CPU activity, peripheral clocks, or even the type of instructions being executed, can introduce additional noise into the system.The ADC is indeed a common contributor, especially due to its internal switching (sampling capacitor charging), but it's only part of a larger picture. In practice, everything in and around your system can contribute to the overall noise floor:- the switching power supply,- the microcontroller core itself,- digital IOs toggling,- internal clock trees,- the PCB layout and grounding,- nearby instruments like oscilloscopes or microvoltmeters,- and even environmental EMI.What you observe at a given point in the circuit is the sum of all noise sources, interacting through various coupling mechanisms - conducted, radiated, or ground loop-related. Some sources may dominate, but many smaller contributions can add up in ways that are not always intuitive.Therefore, changes in code, MCU activity, or measurement setup can all affect the analog behavior of your circuit, even if you're not directly modifying the analog signal path. Designing for low-noise measurements means minimizing and managing all of these contributions as part of a system-wide approach.If you are concerned that noise injected through the ADC input might affect the measured signal (in your case, the switching power supply and the circuits powered from it), a practical solution is to use a buffer operational amplifier. This will isolate the measured signal from the switching currents and noise of the ADC itself, providing a stable load to the signal source and minimizing any back influence of the ADC on the rest of the circuit.Such noise coupling from the ADC input back into the measured signal is a fairly common phenomenon. For example, when I connect two different digital radio receivers to the same antenna, I often observe interference from the first receiver appearing on the second receiver at certain frequencies - while the first receiver itself, which is the source of these disturbances on the antenna line, does not detect this interference. This happens because such noise is usually synchronized with ADC clock.

author: iMo
author_rank: Super Contributor
timestamp: June 07, 2025, 05:25:45 pm
content: .. also mind the pr2040 ADC is broken..

author: light655
author_rank: Newbie
timestamp: June 08, 2025, 02:30:57 am
content: Thank you all for replying. I gained a lot of insight into ADC noise.The noise of this ADC is right around 1 LSB. Since last three bits of the RP2040 ADC is basically broken, I think this issue will only cause annoyance not actual concern. Still, it's a good opportunity for me learn about ADC noise.I did some more tests to investigate the noise source.1. Disabling the SMPS on the Pico and providing the 3.3V rail directly with the bench power supply. - ADC noise (coupled onto the input) unchanged.2. Changing to RP2350 on the Pico 2. - Observed similar level of ADC noise coupled onto the input.3. Repeating 1. with the RP2350. - ADC noise (coupled onto the input) unchanged.So it turns out that the noise is not from the SMPS, it's probably from somewhere on the chip itself.It would be very interesting if I could measure the power spectral density of the noise to see the frequency components.I was going to design a cheap DAQ with the RP2350, so I was comparing the noise of the RP2350 and the RP2040. In hindsight, choosing RPi microcontrollers for analogue is probably a bad idea for now.

author: ataradov
author_rank: Super Contributor
timestamp: June 08, 2025, 02:43:48 am
content: If the noise is from the sampling capacitor, as I think it is, then it won't affect the ADC readings if the source impedance is low enough to recover between the samples.I would experiment with the sampling rate and see how that affects the noise. Also try to trigger on the spikes, if there are any visible and measure their frequency.