I ported the software used for the SINAD indicator on the ESP32-C3 dev kit super mini onto a Python version on a PC (Windows 11). I compared the ESP32-C3 version, which uses a 10kHz ADC sampling rate, with the Python version, which uses PC audio hardware(44kHz, 16bits), using test signal sources.
The test signal sources used were a 1000Hz signal from a smart phone (Android OPPO A73 with an audio signal generation app installed), and two built-in test signals from the ESP32-C3 R909-SINAD indicator: signal 1 (a 1000Hz sine wave generated by PWM and passed through a low-pass filter) and signal 2 (a 1000Hz pulse that switches ON/OFF every 2000Hz).

Based on the above test values, the performance limit of the ESP32's built-in ADC can be estimated.
| Signal Source | Signal condition | ESP32 SINAD readout | PC SINAD readout | Note |
| The generator in smart phone (1kHz sine wave) | Very pure | 29-38 dB | 49-67 dB | 20-30dB difference |
| ESP32 DDS (saw tooth+LPF) | course(with harmonics) | 10.9-13.8 dB | 12.5 dB | About 1-2dBdifference |
| ESP32 DDS ON/OFF (pulse) | course(with harmonics) | 6.5 dB | 7.6 dB | About 1dB difference |
Analogical evaluation from these data
1. The first experiment (smart phone oscillator) measured the "ADC performance of the ESP32".
• When a pure sine wave (with very few harmonic components) is input, the nonlinearity and noise of the ESP32's ADC become dominant.
• As a result, there was a difference of 20-30 dB compared to PC audio → This is the performance limit of the ESP32's ADC.
2. The remaining experiments measured the "quality of the signal being measured."
• The "saw tooth wave + LPF" and "square wave" output by the ESP32's built-in DDS inherently contain a lot of harmonic distortion.
• In this case, because the signal's SINAD is low (10-13dB, 6-7dB), the performance impact of the ADC is relatively small.
• The 1-2dB difference between the ESP32 version and the PC version is due to the difference in distortion detection capability of the signal being measured.
3. Conclusion: The ESP32's ADC appears to be usable around a 12dB SINAD.
SINAD Measurement Range | ESP32 Version Reliability | Reason |
10-20dB (Core range for SINAD measurement) | Usable | Signal distortion itself is dominant. ADC noise influence is within 1-2dB. |
20-30dB | Caution required. | ADC noise influence begins to appear. |
40dB and above | Practically impossible. | ADC self-noise/distortion is dominant. |
nobcha
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.