Skip to main content
Associate II
July 6, 2025
Solved

ADC in 16 bit and differential mode

  • July 6, 2025
  • 1 reply
  • 247 views

For my project I'm using an STM32F743VIT6 with ADC1 and ADC2 in 16-bit differential mode.
In the reference manual (RM0433) §25.4.7 it is written:
Converted value = ADC_Full_Scale / 2 x [1 + (VINP-VINN)/VREF+].
For 16 bits, ADC_Full_Scale is 0xFFFF. What exactly is ADC_Full_Scale / 2 ? 32768 (0x8000) or 32767(0x7FFF), the value for 0V input?

I ask this question because in both cases there are not the same number of steps between 0 and the median value and between the median value and the full scale!

Best answer by TDK

STM32F743VIT6 

Guessing you meant STM32H743VIT6.

 

Given some amount of noise in the system, the average value should be:

ADC_Full_Scale / 2 = 32767.5

 

Big picture: The ADC isn't nearly accurate to 1 LSB in 16-bit mode so it hardly matters if it's 32768 or 32767. You won't be getting 16 bits of precision.

 

1 reply

TDK
TDKBest answer
Super User
July 6, 2025

STM32F743VIT6 

Guessing you meant STM32H743VIT6.

 

Given some amount of noise in the system, the average value should be:

ADC_Full_Scale / 2 = 32767.5

 

Big picture: The ADC isn't nearly accurate to 1 LSB in 16-bit mode so it hardly matters if it's 32768 or 32767. You won't be getting 16 bits of precision.

 

"If you feel a post has answered your question, please click ""Accept as Solution""."