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.resolutionis de ADC-conversieresolutie in bits (gewoonlijk8,10of12).maskis een 32-bits bitmasker dat selecteert welke kanalen worden ingeschakeld; bitNschakelt kanaalNin. Standaard0xffffffff(alle kanalen). De interne kanalen bevinden zich op de bits16(temperatuur),17(VBAT) en18(VREF), dus om alleen de interne kanalen in te schakelen geef je0x70000op.
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 (
0–15) geven ongeschaalde ruwe waarden terug bij de geconfigureerde resolutie; de interne kanalen (16–18) 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.