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.

  • resolution ist die ADC-Wandlungsauflösung in Bit (typischerweise 8, 10 oder 12).

  • mask ist eine 32-Bit-Bitmaske, die auswählt, welche Kanäle aktiviert werden sollen; Bit N aktiviert Kanal N. Der Standardwert ist 0xffffffff (alle Kanäle). Die internen Kanäle liegen an den Bits 16 (Temperatur), 17 (VBAT) und 18 (VREF), sodass Sie 0x70000 ü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 (015) geben unskalierte Rohwerte mit der konfigurierten Auflösung zurück; die internen Kanäle (1618) 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.