cancel
Showing results for 
Search instead for 
Did you mean: 

ADC in 16 bit and differential mode

FRAUBRY
Associate II

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!

1 ACCEPTED SOLUTION

Accepted Solutions
TDK
Super User

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

View solution in original post

1 REPLY 1
TDK
Super User

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