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.resolutionje rozlišení převodu ADC v bitech (typicky8,10nebo12).maskje 32bitová bitová maska vybírající, které kanály povolit; bitNpovoluje kanálN. Výchozí hodnota je0xffffffff(všechny kanály). Interní kanály se nacházejí na bitech16(teplota),17(VBAT) a18(VREF), takže pro povolení pouze interních kanálů předejte0x70000.
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 (
0–15) vracejí neškálované surové hodnoty v nakonfigurovaném rozlišení; interní kanály (16–18) 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.