cancel
Showing results for 
Search instead for 
Did you mean: 

Fluctuations in ADC value of STM32H743 MCU

James1
Associate II

Hi,

I have been working with STM ADC’s from quite a long time. I had used STM32F373 and F4 series MCU ADC’s earlier for my applications. As, now my application requires huge amount of RAM, memory and computation speed I have shifted to STM32H743 MCU . Earlier when I used F3 series ADC the noisy LSB was around 4 LSB which is a quite good resolution for 16 bit ADC . But as I have shifted to STM32H743 the noise level fluctuation is around 300LSB for 16 bit ADC resolution for single ended channel. When I hook up ground to ADC pin it shows a value fluctuation of about 100LSB . I use Analog accelerometer for my application and I need to see a resolution of 1 mg and with such amount of noise I won’t be able to achieve such high resolution.

The code is generated using CubeMx.The ADC is clocked using external clock and the MCU is powered from a 3.3 V regulator supply and Analog and digital grounds are properly separated.

I checked into their errata sheet and I couldn’t find any possible solution.

Any solutions will be highly appreciated .

Thank you

26 REPLIES 26

Yes, I removed L1 on the NUCLEO H743ZI2 board.

MasterT
Senior III

I wish, I read this topic earlier.

I was working with DDS synthesizer on nucleo-H743zi ("Y" revision) and after long time troubleshooting noise interference I observed, I came to the same conclusion. That ethernet chip is a beast in response.

https://community.st.com/s/question/0D50X0000BmmUjJSQU/high-noise-level-in-the-analog-domain-on-nucleoh743zi

Removing L1 is a "hardware" option to shutdown ethernet. There may be a software option in the huge piece of HAL_ driver code.

One more things, that complicates noise reduction on the first revision of H743 nucleo board, is inability to activate VREFBUF. VREF+ is connected right to VDDA and consequently to VDD.

For lucky owners of the nucleo-H743zi-2 (like myself), to improve ADC/ DAC performance you should remove R36 ("0"R) jumper and switch on internal reference:

__HAL_RCC_VREF_CLK_ENABLE();
  HAL_SYSCFG_VREFBUF_HighImpedanceConfig(SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE);
  HAL_SYSCFG_EnableVREFBUF();

Pity, STM didn't provide "manually operated" jumper that doesn't require de-soldering.

mcu8484
Associate

I was quite disappointed with unacceptable ADC noise level on the Nucleo-H743ZI2 as I was looking to replace another controller/external ADC combo and thought I would have to go back until I found this thread. Thanks for the great analysis and info in this thread. I was able to finally power down the Ethernet PHY and disable Ethernet clock via software and observed ~60% ADC noise reduction. Quite remarkable. I hope ST will update documentation and implement a hardware fix.

HThre.1
Associate

Removing L2 from a F429ZI Nucleo board solved my analog noise issue... Thanks for the post, and thorough effort to figure out the problem!

GVG
Associate II

@omuzychko​ Thank you very much for debugging the issue! It helped me so much!

I have a NUCLEO-H723ZG board and I can confirm that the Ethernet was the cause of the extremely noisy ADC measurements in this case as well. After tombstoning the L1 ferrite bead (in case of H723 it is L1 and not L2) the noise was reduced drastically. I would just like to elaborate one more thing. When the project in CubeIDE is created and all peripherals with their Default mode is initialized, the Ethernet is enabled as well. So don't forget to disable Ethernet in CubeMX/CubeIDE besides disconnecting the ferrite bead, otherwise Ethernet wants to be configured and your firmware/application will get stuck.

@GVG 

Hi, I am also facing the same problem with the ADC. I want to know If I remove the L1, do I need to provide external reference voltage or I don't have to change anything else.

Can you tell me how to disable the Ethernet in CubeIDE. I attached the screenshot of my try to disable it

AbdurRehman_1-1687919938597.png

 

Hi, can you please guide me how to  power down the Ethernet PHY and disable Ethernet clock via software .