class ADCAll – доступ ко всем каналам ADC¶
ADCAll предоставляет доступ ко всем каналам ADC на MCU через единый объект — как к внешним выводам аналогового входа, так и к внутренним каналам для температуры кристалла, опорного напряжения 1.21 В и VBAT. Это полезно для мониторинга шины питания MCU и встроенных датчиков без создания отдельного ADC для каждого вывода.
Пример:
import pyb
# 12-bit resolution, internal channels only (temp + VBAT + VREF).
adcall = pyb.ADCAll(12, 0x70000)
temp = adcall.read_core_temp()
vbat = adcall.read_core_vbat()
vref = adcall.read_core_vref()
vdda = adcall.read_vref()
Конструкторы¶
- class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)¶
Предоставляет одновременный доступ ко всем каналам ADC на MCU, включая внутренние каналы для температуры кристалла, внутреннего опорного напряжения 1.21 В и
VBAT. Создание этого объекта переключает все замаскированные внешние выводы ADC в режим аналогового входа.resolution— это разрешение преобразования ADC в битах (обычно8,10или12).mask— это 32-битная битовая маска, выбирающая, какие каналы включить; битNвключает каналN. По умолчанию0xffffffff(все каналы). Внутренние каналы расположены на битах16(температура),17(VBAT) и18(VREF), поэтому для включения только внутренних каналов передайте0x70000.
Встроенный датчик температуры откалиброван на заводе и имеет точность примерно ±1 °C, но он измеряет температуру кристалла, которая обычно на десятки градусов выше окружающей, когда MCU активен. Показания имеют смысл как приближение к температуре окружающей среды только на только что включённой плате.
Предупреждение
Напряжения аналогового входа никогда не должны превышать фактическое напряжение питания.
Методы¶
- read_channel(channel: int) int¶
Считывает указанный канал ADC. Внешние каналы (
0–15) возвращают немасштабированные сырые значения с настроенным разрешением; внутренние каналы (16–18) также возвращают сырые значения, но специальные вспомогательные методы ниже преобразуют их в напряжения.
- read_core_temp() float¶
Возвращает температуру кристалла в градусах Цельсия, вычисленную по внутреннему каналу температуры и заводским калибровочным значениям, хранящимся в MCU.
- read_core_vbat() float¶
Возвращает напряжение резервной батареи в вольтах. Показание снимается через встроенный делитель напряжения (чтобы запас не ограничивал диапазон входа ADC) и масштабируется обратно к фактическому напряжению батареи. Делитель активен только во время преобразования ADC, поэтому ток утечки резервной батареи в режиме ожидания пренебрежимо мал.
- read_core_vref() float¶
Возвращает внутреннее опорное напряжение 1.21 В (номинальное) в вольтах, измеренное при использовании питания MCU в качестве опорного напряжения ADC. Это сырой результат преобразования.
- read_vref() float¶
Возвращает напряжение питания MCU в вольтах. Вычисляется путём измерения внутреннего опорного напряжения и обратного масштабирования с использованием его заводского калибровочного значения. При исправной шине 3.3 В показание будет близко к
3.3. MCU продолжает работать — и преобразования ADC остаются осмысленными — при питании всего около 2 В, при условии соблюдения соответствующих настроек тактовой частоты MCU, скорости доступа к флеш-памяти и режима программирования.