2025-07-06 5:57 AM
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!
Solved! Go to Solution.
2025-07-06 6:26 AM
> 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.
2025-07-06 6:26 AM
> 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.