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. Внешние каналы (015) возвращают немасштабированные сырые значения с настроенным разрешением; внутренние каналы (1618) также возвращают сырые значения, но специальные вспомогательные методы ниже преобразуют их в напряжения.

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, скорости доступа к флеш-памяти и режима программирования.