Добрый день.
Работаю с процом F411, включаю внутреннее АЦП на порт температурного датчика (мукс 0x18) и получаю код (в среднем 0x0200), который после расчетов (параметры взяты из даташита) с использованием смещения 0.9в и коэф передачи 0.00295в/градус получаю -210 градусов цельсия.
Само собой, что цифра врет.
Думал что врут настройки АЦП. Но по другим каналам (внешним входам) соответствующие напряжения, поданные на вход АЦП (т.е. после пересчета напряжений получаю соответствующие ед. АЦП). Решил измерить VDD, включил соответственно мукс на 0x19 и получил соответственно 0x0FFF, что и должно быть. Думал что не включил сам датчик (в регистр REF0CN пишу 0x17), решил записать в REF0CN 0x13 (т.е. по даташиту его выключить). Получил на этом канале значения в пределах 0x0008 (т.е. реально выключился). Вернул все обратно (т.е. включил REF0CN=0x17). И цифра опять в том же пределе 0x0200 ед АЦП.
Подскажите пожалуйста формулу пересчета ед АЦП в температуру с конкретными значениями констант и если она такая же как и у меня, то как мне добиться правильного значения термодатчика в ед АЦП?
Формула:
T=((adc_dat.U_temp_dat*ADC_Vref/ADC_razr)-ADC_offeset_temp)/ADC_slope_temp;
adc_dat.U_temp_dat - значение канала в ед АЦП
ADC_Vref - 2.2 (величина ИОН)
ADC_razr - 2^12 (4096)
ADC_offeset_temp - 0.9
ADC_slope_temp - 0.00295
PS условия измерений - комнатная температура (отлаживаю прогу). Не ожидал споткнуться на этом месте. Корректная работа термодатчика нужна в проекте.