Skip to main content
Visitor II
July 6, 2025
Solved

ADC in 16 bit and differential mode

  • July 6, 2025
  • 1 reply
  • 246 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!

    This topic has been closed for replies.
    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

    TDKAnswer
    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.