Klasse ADCAll – Zugriff auf alle ADC-Kanäle¶
ADCAll macht jeden ADC-Kanal des MCU über ein einziges Objekt zugänglich – sowohl die externen analogen Eingangspins als auch die internen Kanäle für die Chiptemperatur, die 1,21-V-Referenz und VBAT. Es ist nützlich, um die Versorgungsschiene des MCU und die On-Chip-Sensoren zu überwachen, ohne für jeden Pin einen ADC zu instanziieren.
Beispiel:
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()
Konstruktoren¶
- class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)¶
Bietet gleichzeitigen Zugriff auf jeden ADC-Kanal des MCU, einschließlich der internen Kanäle für die Chiptemperatur, die interne 1,21-V-Referenz und
VBAT. Beim Erzeugen dieses Objekts werden alle maskierten externen ADC-Pins in den Analog-Eingangsmodus geschaltet.resolutionist die ADC-Wandlungsauflösung in Bit (typischerweise8,10oder12).maskist eine 32-Bit-Bitmaske, die auswählt, welche Kanäle aktiviert werden sollen; BitNaktiviert KanalN. Der Standardwert ist0xffffffff(alle Kanäle). Die internen Kanäle liegen an den Bits16(Temperatur),17(VBAT) und18(VREF), sodass Sie0x70000übergeben, um nur die internen Kanäle zu aktivieren.
Der On-Chip-Temperatursensor ist werkseitig kalibriert und auf etwa ±1 °C genau, misst jedoch die Chiptemperatur – die bei aktivem MCU typischerweise mehrere Dutzend Grad über der Umgebungstemperatur liegt. Die Messwerte sind nur als Näherung für die Umgebungstemperatur auf einem frisch aufgewachten Board aussagekräftig.
Warnung
Analoge Eingangsspannungen dürfen niemals die tatsächliche Versorgungsspannung überschreiten.
Methoden¶
- read_channel(channel: int) int¶
Liest den angegebenen ADC-Kanal. Externe Kanäle (
0–15) geben unskalierte Rohwerte mit der konfigurierten Auflösung zurück; die internen Kanäle (16–18) geben ebenfalls Rohwerte zurück, doch die speziellen Hilfsfunktionen weiter unten wandeln sie in Spannungen um.
- read_core_temp() float¶
Gibt die On-Chip-Temperatur in Grad Celsius zurück, berechnet aus dem internen Temperaturkanal und den im MCU gespeicherten werkseitigen Kalibrierungswerten.
- read_core_vbat() float¶
Gibt die Spannung der Backup-Batterie in Volt zurück. Der Messwert wird über einen On-Chip-Spannungsteiler erfasst (sodass der Spielraum den Eingangsbereich des ADC nicht einschränkt) und auf die tatsächliche Batteriespannung zurückskaliert. Der Spannungsteiler ist nur während der ADC-Wandlung aktiv, sodass die Standby-Belastung der Backup-Batterie vernachlässigbar ist.
- read_core_vref() float¶
Gibt die interne (nominale) 1,21-V-Referenzspannung in Volt zurück, gemessen mit der MCU-Versorgung als ADC-Referenz. Dies ist das rohe Wandlungsergebnis.
- read_vref() float¶
Gibt die Versorgungsspannung des MCU in Volt zurück. Sie wird berechnet, indem die interne Spannungsreferenz gemessen und mithilfe ihres werkseitigen Kalibrierungswerts zurückskaliert wird. Bei einer gesunden 3,3-V-Schiene liegt der Messwert nahe bei
3.3. Der MCU arbeitet weiter – und ADC-Wandlungen bleiben aussagekräftig – bei einer Versorgung von bis zu etwa 2 V, sofern die geeigneten Einstellungen für MCU-Takt, Flash-Zugriffsgeschwindigkeit und Programmiermodus beachtet werden.