serglg
Jan 18 2018, 12:36
Там в каких единицах? ADC1 у меня задан 12-бит. При 0,4 вольта на входе считываю 25. При 3,3 вольта - 204. Я увидел, что там Vbat/4. Но всё равно при 3,3В получается 816. Опорное у меня - VDDA=3,3V. У них там разрядность особая для этого входа? Монотонность видна, но как считать? Так и принять 3300мВ=816?
Вот так вычисляю напряжение батареи в милливольтах. Перед этим внутреннее опорное измеряю (храню в Sensors.Ref). Вот с ним и сравниваю.
Там еще делитель напряжения с батареи (он на 2 делит) включаю перед измерением, а после измерения выключаю. Потому и сдвигаю результат.
uint32_t Bat = (ADC1->DR << 1) * 1210 / Sensors.Ref;
serglg
Jan 18 2018, 13:21
Цитата(ViKo @ Jan 18 2018, 18:49)

Вот так вычисляю напряжение батареи в милливольтах. Перед этим внутреннее опорное измеряю. Вот с ним и сравниваю.
Там еще делитель напряжения с батареи (он на 2 делит) включаю перед измерением, а после измерения выключаю.
uint32_t Bat = (ADC1->DR << 1) * 1210 / Sensors.Ref;
А что такое 1210?
Цитата(serglg @ Jan 18 2018, 16:21)

А что такое 1210?
Внутреннее опорное напряжение в милливольтах, согласно datasheet.
Проверьте еще, к какому краю данные в АЦП прижаты.