2024-08-06 05:00 AM - edited 2024-08-06 08:05 AM
In various STM32 microcontroller applications, the Ethernet reference clock (ETH_REF_CLK) has been observed to introduce noise into ADC (analog-to-digital converter) measurements. This article explores the problem, its manifestations, and potential solutions to mitigate its impact.
The issue primarily arises in STM32 microcontrollers where the Ethernet reference clock operates at high frequencies, such as 50 MHz. This high-speed clock can interfere with the ADC's performance, leading to increased noise in the ADC readings.
The problem is particularly pronounced in microcontrollers like the STM32F7xx and STM32F437, STM32H5, and STM32H7 series as well where the ADC pins are located close to the oscillator and RMII_CLK pins.
In this section, we provide a detailed example of the issue as well as some occurrences across some impacted STM32 series.
Below is an example of the noise that we observe with ADC on an STM32F7 when ADC is connected to ground and to VDD with 12b resolution respectively. This is induced by the phy clock input of the Ethernet peripheral:
Several solutions can be proposed to mitigate the impact of the Ethernet reference clock on ADC performance:
The interference of the Ethernet reference clock with ADC measurements in STM32 microcontrollers could be visible across a range of products when combining their usage. Its affect can vary depending on the package and mode used for booth Ethernet and ADC.
By implementing the proposed solutions: oversampling, lowering resolution, ensuring proper PCB routing, and switching to MII mode, the impact of this noise can be significantly reduced. These solutions can help achieve more accurate and reliable ADC readings in applications involving high-speed Ethernet clocks.
My research on nucleo-H743zi2 shows that problem is not 50 MHz clock itself, but Ethernet IC:
Pictures demonstrate spikes on Vdd = 3.3V power line.
This affects not only ADCs, but DACs as well via V-Reference.
Spikes on voltage rail are always there, I mean on my nucleo-H743 Ethernet was not configured, all jumpers associated with Ethernet were Removed as described in UM2407.
The solution is to cut power to IC: LAN8742a de-soldering L1 inductor, completely shouting down Ethernet feature .
For new design, I'd suggest install another 3.3V LDO exclusively for powering Ethernet sub-module. Basically, "split" power domains between main uCPU and Ethernet.