W mikrokontrolerach STM32, napięcie referencyjne jest podłączane do jednego z kanałów ADC i nie jest napięciem stricte referencyjnym podczas konwersji, czyli nie zasila układu SAR.
Takie podejście ma sens, ponieważ te uC mogą pracować w dość szerokim zakresie napięć zasilających, a z wielu powodów nie chcemy dodawać osobnego źródła napięcia odniesienia. Zaletę takiego podejścia widać głównie w aplikacjach z zasilaniem bateryjnym. Załóżmy, że nie ma wewnętrznego Vref, a zamiast tego jest zewnętrzny układ, który zasila SAR. Wynik każdej konwersji będzie w zakresie od GND do VREFext. Jeżeli napięcie zasilania siada, to w pewnym momencie VREFext też zacznie siadać. Mierząc napięcie baterii względem VREFext, nie będzie widać spadku napięcia baterii. W efekcie, nie można prawidłowo wyznaczyć napięcia baterii, nie można zamknąć systemu, nie można wiarygodnie określić poziomu naładowania baterii.
Mając wewnętrzne Vref i zasilając ADC z baterii, od razu widać, że wynik konwersji rośnie. To samo można uzyskać z zewnętrznym Vref podpiętym do osobnego kanału, ale to jest dodatkowy element, który generuje koszty (dobór elementu, koszt elementu, dodatkowy pin do włączania, miejsce na płytce, montaż, testowanie, ew. kalibracja). Jeżeli do tego zewnętrzna referencja jest oddalona od układu, to może pływać termicznie. Kiedy jest w jednej strukturze, możliwa jest lepsza kompensacja i większa dokładność.
Kolejny powód, dla którego VREFint jest wbudowane w strukturę i podłączone do jednego z kanałów, to możliwość szybkiego włączenia napięcia odniesienia na krótki czas, kiedy rzeczywiście jest potrzebne. Przez resztę czasu może być wyłączone, co pozwala zauważalnie oszczędzać energię; vide STM32L0xx. W aplikacjach bateryjnych to ma duże znaczenie.
Wzory dotyczące sposobu przeliczania wyniku konwersji ADC na wartość napięcia są w RM.
Informacje dotyczące lokalizacji danych kalibracyjnych oraz dokładności są w DS.
Odradzam stosowanie starych układów, np. STM32F1xx, ponieważ tam stosowane VREF i ADC, miały ograniczoną funkcjonalność.