b-volkov 0 9 октября, 2015 Опубликовано 9 октября, 2015 · Жалоба В даташитах на сам 51й я вообще не нашел внятной инструкции о том, как пересчитывать результаты измерения с учетом опорника, только сказано, что в такой-то ячейке лежит калибровочное значение, и все. В референсе на STM32L0x1 это расписано подробнее. Насколько я понял, калибровочное значение, это результат измерения опорного напряжения при VDDA = 3в. Сейчас я играюсь с STM32F0Dicovery, там напряжение питания как раз 3в (ну 2.95. не принципиально), калибровочное значение 1522, а по 17-му каналу вместо близкого значения я получаю число 1630! При этом на остальных входах АЦП все измеряется правильно. Что я не так делаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 9 октября, 2015 Опубликовано 9 октября, 2015 · Жалоба В даташитах на сам 51й я вообще не нашел внятной инструкции о том, как пересчитывать результаты измерения с учетом опорника, только сказано, что в такой-то ячейке лежит калибровочное значение, и все. А у меня в даташите всё написано. VREFINT_CAL......Raw data acquired at temperature of 30°C VDDA=3.3 V......0x1FFF F7BA - 0x1FFF F7BB Вот даже не знаю, что ещё там нужно написать. Что я не так делаю? Это же очевидно: не читаете даташит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ukpyr 0 9 октября, 2015 Опубликовано 9 октября, 2015 (изменено) · Жалоба это значит что VCC != 3.3V. текущее VCC в милливольтах: vref_mv = *(u16*)0x1FFFF7BA * 3300uL / 0x1000; vcc_mv = vref_mv * 0xFFFuL / ADC_17; Изменено 9 октября, 2015 пользователем ukpyr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться