klasa ADCAll – dostęp do wszystkich kanałów ADC

ADCAll udostępnia każdy kanał ADC w MCU poprzez pojedynczy obiekt – zarówno zewnętrzne piny wejść analogowych, jak i kanały wewnętrzne dla temperatury matrycy, napięcia odniesienia 1,21 V oraz VBAT. Jest przydatny do monitorowania szyny zasilania MCU oraz sensorów na układzie bez tworzenia instancji ADC dla każdego pinu.

Przykład:

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()

Konstruktory

class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)

Zapewnia jednoczesny dostęp do każdego kanału ADC w MCU, w tym do kanałów wewnętrznych dla temperatury matrycy, wewnętrznego napięcia odniesienia 1,21 V oraz VBAT. Utworzenie tego obiektu przełącza wszystkie zamaskowane zewnętrzne piny ADC w tryb wejścia analogowego.

  • resolution to rozdzielczość konwersji ADC w bitach (zwykle 8, 10 lub 12).

  • mask to 32-bitowa maska bitowa wybierająca, które kanały włączyć; bit N włącza kanał N. Domyślnie wynosi 0xffffffff (wszystkie kanały). Kanały wewnętrzne znajdują się na bitach 16 (temperatura), 17 (VBAT) oraz 18 (VREF), więc aby włączyć tylko kanały wewnętrzne, przekaż 0x70000.

Sensor temperatury na układzie jest kalibrowany fabrycznie i ma dokładność około ±1 °C, ale mierzy temperaturę matrycy – która zwykle jest o kilkadziesiąt stopni wyższa od temperatury otoczenia, gdy MCU jest aktywny. Odczyty są miarodajne jako przybliżenie temperatury otoczenia tylko na świeżo wybudzonej płytce.

Ostrzeżenie

Analogowe napięcia wejściowe nigdy nie mogą przekraczać rzeczywistego napięcia zasilania.

Metody

read_channel(channel: int) int

Odczytuje podany kanał ADC. Kanały zewnętrzne (015) zwracają nieskalowane wartości surowe w skonfigurowanej rozdzielczości; kanały wewnętrzne (1618) również zwracają wartości surowe, ale dedykowane funkcje pomocnicze poniżej przeliczają je na napięcia.

read_core_temp() float

Zwraca temperaturę matrycy w stopniach Celsjusza, obliczoną na podstawie wewnętrznego kanału temperatury oraz fabrycznych wartości kalibracyjnych zapisanych w MCU.

read_core_vbat() float

Zwraca napięcie baterii podtrzymującej w woltach. Odczyt jest dokonywany przez dzielnik napięcia na układzie (tak aby zapas nie ograniczał zakresu wejściowego ADC) i przeskalowywany z powrotem do rzeczywistego napięcia baterii. Dzielnik jest aktywny tylko podczas konwersji ADC, więc pobór prądu z baterii podtrzymującej w trybie czuwania jest pomijalny.

read_core_vref() float

Zwraca wewnętrzne napięcie odniesienia 1,21 V (nominalnie) w woltach, mierzone z zasilaniem MCU jako odniesieniem ADC. Jest to surowy wynik konwersji.

read_vref() float

Zwraca napięcie zasilania MCU w woltach. Obliczane przez pomiar wewnętrznego napięcia odniesienia i przeskalowanie wstecz z użyciem jego fabrycznej wartości kalibracyjnej. Przy zdrowej szynie 3,3 V odczyt będzie zbliżony do 3.3. MCU nadal działa – a konwersje ADC pozostają miarodajne – przy zasilaniu obniżonym nawet do około 2 V, pod warunkiem przestrzegania odpowiednich ustawień zegara MCU, szybkości dostępu do pamięci flash oraz trybu programowania.