class ADCAll – toegang tot alle ADC-kanalen

ADCAll stelt elk ADC-kanaal op de MCU beschikbaar via één enkel object – zowel de externe analoge-ingangspinnen als de interne kanalen voor die-temperatuur, de 1,21 V-referentie en VBAT. Het is handig om de voedingsrail en de on-chip sensoren van de MCU te bewaken zonder per pin een ADC te instantiëren.

Voorbeeld:

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

Constructors

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

Biedt gelijktijdige toegang tot elk ADC-kanaal op de MCU, inclusief de interne kanalen voor die-temperatuur, de interne 1,21 V-referentie en VBAT. Het construeren van dit object schakelt alle gemaskeerde externe ADC-pinnen om naar de analoge-ingangsmodus.

  • resolution is de ADC-conversieresolutie in bits (gewoonlijk 8, 10 of 12).

  • mask is een 32-bits bitmasker dat selecteert welke kanalen worden ingeschakeld; bit N schakelt kanaal N in. Standaard 0xffffffff (alle kanalen). De interne kanalen bevinden zich op de bits 16 (temperatuur), 17 (VBAT) en 18 (VREF), dus om alleen de interne kanalen in te schakelen geef je 0x70000 op.

De on-chip temperatuursensor is in de fabriek gekalibreerd en nauwkeurig tot ongeveer ±1 °C, maar hij meet de die-temperatuur – die doorgaans tientallen graden boven de omgevingstemperatuur ligt wanneer de MCU actief is. Metingen zijn alleen zinvol als een benadering van de omgevingstemperatuur op een net ontwaakt bord.

Waarschuwing

Analoge ingangsspanningen mogen nooit de werkelijke voedingsspanning overschrijden.

Methoden

read_channel(channel: int) int

Lees het opgegeven ADC-kanaal. Externe kanalen (015) geven ongeschaalde ruwe waarden terug bij de geconfigureerde resolutie; de interne kanalen (1618) geven eveneens ruwe waarden terug, maar de speciale helpers hieronder zetten ze om naar spanningen.

read_core_temp() float

Geef de on-die temperatuur in graden Celsius terug, berekend uit het interne temperatuurkanaal en de in de fabriek gekalibreerde waarden die in de MCU zijn opgeslagen.

read_core_vbat() float

Geef de spanning van de backupbatterij in volt terug. De meting wordt gedaan via een on-chip spanningsdeler (zodat de marge het ingangsbereik van de ADC niet beperkt) en teruggeschaald naar de werkelijke batterijspanning. De spanningsdeler is alleen actief tijdens de ADC-conversie, zodat het stand-byverbruik van de backupbatterij verwaarloosbaar is.

read_core_vref() float

Geef de interne 1,21 V (nominale) referentiespanning in volt terug, gemeten met de MCU-voeding als ADC-referentie. Dit is het ruwe conversieresultaat.

read_vref() float

Geef de MCU-voedingsspanning in volt terug. Berekend door de interne spanningsreferentie te meten en terug te schalen met behulp van de in de fabriek gekalibreerde waarde. Bij een gezonde 3,3 V-rail ligt de meting dicht bij 3.3. De MCU blijft werken – en ADC-conversies blijven zinvol – bij een voeding tot ongeveer 2 V, mits de juiste instellingen voor MCU-klok, flashtoegangssnelheid en programmeermodus worden aangehouden.