клас 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 – роздільна здатність АЦП-перетворення в бітах (зазвичай 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 В, за умови дотримання відповідних налаштувань тактової частоти, швидкості доступу до флеш-пам’яті та режиму програмування.