Измерение VDD на stm32 в Ардуино
- Войдите на сайт для отправки комментариев
Пнд, 31/01/2022 - 18:31
Всем привет. Есть ли возможность измерить напряжение питания камня STM32F103C8T6 в Среде Ардуино, ядро использую - https://github.com/stm32duino/Arduino_Core_STM32. Тут реализация через DMA - https://github.com/stm32duino/Arduino_Core_STM32
Поправка, через DMA тут https://microtechnics.ru/izmerenie-napryazheniya-pitaniya-mikrokontrollera-stm32/
что через ДМА? Измерение одного напряжения??? - зачем?
Непосредственно как измерить - описано буквально в первых трех абзацах по вашей ссылке. Переключаете АЦП на канал ADC1_IN17 и получаете напряжение внутреннего референса платы относительно напряжения питания. Зная напряжение референса - напряжение питания считается по формуле
VDD = (4095/x) * Vref, где x - результат измерения 17-канала во внутренних "попугаях" ADC
как именно в вашем конкретном ядре переключить АЦП на канал ADC1_IN17 - смотрите в справке или в исходниках
Спасибо, большое. Буду пробовать
Все получилось. Оставлю свой пример здесь, если у кого-то возникнет такая-же необходимость измерять напряжение питания
#include "stm32yyxx_ll_adc.h" // Библиотека встроена в пакет c ядром #include <SoftwareSerial.h> #define VREFINT 1200 #define ADC_RANGE 4096 SoftwareSerial mySerial(PA10, PA9); // RX, TX void setup() { mySerial.begin(9600); // Разрешение АЦП analogReadResolution(12); } void loop() { int32_t VRef = VREFINT * ADC_RANGE / analogRead(AVREF); mySerial.print ("VRef(mv) = "); mySerial.println (VRef); delay(500); }