cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H747 ADC Internal Reference usage and stability

Kranthi
Associate II

Hello

I am new to STM32 family and currently I was working on STM32H747I-DISCO board with HAL device support.

Is it possible to change the ADC reference from external Vref+ to internal Vref ? if possible how to configure? why because there is no parameter to configure ADC reference in HAL libraries.

And while using with external reference voltage Vref+ the ADC count was fluctuating even if the configured ADC channel was connected to ground. How to stabilize it?

Thank You

9 REPLIES 9
berendi
Principal

If there is a way, then you can find it in the reference manual.

HAL can't do everything that the MCU can do. The reference manual is the authorative documentation, HAL is a collection of examples that helps beginners getting started.

Thank you for your quick response.

I found VREFBUF registers in reference manual. Is it possible to configure VREFBUF registers while configuring ADC ?

In my board Vref+ was connected to +3.3.V supply, is it possible to configure internal reference?

Change VREF before configuring the ADC, because the ADC should be recalibrated afterwards anyway. But don't expect much improvement.

Getting stable ADC readings requres noise-free Vdda, Vssa and Vref supplies, something that cannot be fixed in software.

Kranthi
Associate II

Thank you

>> Is it possible to change the ADC reference from external Vref+ to internal Vref ?

No. The internal voltage reference is internally connected to the input channel ADC3 VINP[19]. The internal voltage reference can be monitored to have a reference point for evaluating the ADC VREF+ voltage level.

From reference manual "26.4.35 Monitoring the internal voltage reference".

But according to chapter 28 Voltage Reference Buffer you can configure Internal reference voltage for ADC and DAC reference voltage and you can also select the voltage levels with VREFBUF_CSR.

I tried and configured for 1.5V, it is working.

I am using STM32H747I-DISO board. Vdda and Vssa was getting 3.2V and i configured Internal Vref as 1.5V and observed it on Vref+ pin. I observed these on oscilloscope, looks stable. But my ADC count was varying. what I need to do? How to reduce the noise ?

Vref+ and Vrefint are two different signals.

Read AN2834 How to get the best ADC accuracy in STM32 microcontrollers if you havent read it yet.

Looks like there is not much that can be done on the hardware level, but here is an idea.

The application note speaks of reducing pin noise, i.e. suspending as much external activity as possible during conversion. Try to synchronize ADC to the worst offenders on the system. E.g. if the display is active and the framebuffer is in the external SDRAM, that means a lot of activity on the memory and display bus, so try to start conversions in the vertical retrace interval, when the last scanline has been displayed (request an LTDC interrupt, see LTDC_LIPCR).