třída ADCAll – přístup ke všem kanálům ADC

ADCAll vystavuje každý kanál ADC na MCU prostřednictvím jediného objektu – jak externí piny analogového vstupu, tak interní kanály pro teplotu čipu, referenci 1,21 V a VBAT. Je užitečný pro monitorování napájecí větve MCU a senzorů na čipu bez nutnosti instancovat ADC pro každý pin.

Příklad:

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)

Poskytuje současný přístup ke každému kanálu ADC na MCU, včetně interních kanálů pro teplotu čipu, interní referenci 1,21 V a VBAT. Konstrukce tohoto objektu přepne všechny maskované externí piny ADC do režimu analogového vstupu.

  • resolution je rozlišení převodu ADC v bitech (typicky 8, 10 nebo 12).

  • mask je 32bitová bitová maska vybírající, které kanály povolit; bit N povoluje kanál N. Výchozí hodnota je 0xffffffff (všechny kanály). Interní kanály se nacházejí na bitech 16 (teplota), 17 (VBAT) a 18 (VREF), takže pro povolení pouze interních kanálů předejte 0x70000.

Teplotní senzor na čipu je tovární kalibrovaný a přesný přibližně na ±1 °C, ale měří teplotu čipu – která je obvykle o desítky stupňů vyšší než okolní teplota, když je MCU aktivní. Hodnoty jsou smysluplné jako náhrada za okolní teplotu pouze na čerstvě probuzené desce.

Varování

Napětí analogového vstupu nesmí nikdy překročit skutečné napájecí napětí.

Metody

read_channel(channel: int) int

Přečte daný kanál ADC. Externí kanály (015) vracejí neškálované surové hodnoty v nakonfigurovaném rozlišení; interní kanály (1618) také vracejí surové hodnoty, ale specializované pomocné funkce níže je převádějí na napětí.

read_core_temp() float

Vrátí teplotu na čipu ve stupních Celsia, vypočtenou z interního teplotního kanálu a továrních kalibračních hodnot uložených v MCU.

read_core_vbat() float

Vrátí napětí záložní baterie ve voltech. Hodnota se odečítá přes napěťový dělič na čipu (takže rezerva neomezuje vstupní rozsah ADC) a škáluje se zpět na skutečné napětí baterie. Dělič je aktivní pouze během převodu ADC, takže odběr záložní baterie v pohotovostním režimu je zanedbatelný.

read_core_vref() float

Vrátí interní referenční napětí 1,21 V (nominální) ve voltech, měřené s napájením MCU jako referencí ADC. Toto je surový výsledek převodu.

read_vref() float

Vrátí napájecí napětí MCU ve voltech. Vypočtené měřením interní napěťové reference a zpětným škálováním pomocí její tovární kalibrační hodnoty. Při zdravé větvi 3,3 V bude hodnota blízko 3.3. MCU pokračuje v provozu – a převody ADC zůstávají smysluplné – s napájením až tak nízkým jako kolem 2 V, za předpokladu dodržení odpovídajících nastavení hodin MCU, rychlosti přístupu k flash paměti a programovacího režimu.