class ADCAll – accesso a tutti i canali ADC¶
ADCAll espone ogni canale ADC del MCU attraverso un singolo oggetto – sia i pin di ingresso analogico esterni sia i canali interni per la temperatura del die, il riferimento da 1.21 V e VBAT. È utile per monitorare la linea di alimentazione del MCU e i sensori on-chip senza istanziare un ADC per ogni pin.
Esempio:
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()
Costruttori¶
- class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)¶
Fornisce l’accesso simultaneo a ogni canale ADC del MCU, inclusi i canali interni per la temperatura del die, il riferimento interno da 1.21 V e
VBAT. La costruzione di questo oggetto commuta in modalità ingresso analogico tutti i pin ADC esterni mascherati.resolutionè la risoluzione di conversione dell’ADC in bit (tipicamente8,10o12).maskè una bitmask a 32 bit che seleziona quali canali abilitare; il bitNabilita il canaleN. Il valore predefinito è0xffffffff(tutti i canali). I canali interni si trovano ai bit16(temperatura),17(VBAT) e18(VREF), quindi per abilitare solo i canali interni passa0x70000.
Il sensore di temperatura on-chip è calibrato in fabbrica ed è accurato fino a circa ±1 °C, ma misura la temperatura del die – che è tipicamente decine di gradi superiore a quella ambiente quando il MCU è attivo. Le letture sono significative come stima della temperatura ambiente solo su una scheda appena risvegliata.
Avvertimento
Le tensioni di ingresso analogiche non devono mai superare la tensione di alimentazione effettiva.
Metodi¶
- read_channel(channel: int) int¶
Legge il canale ADC specificato. I canali esterni (
0–15) restituiscono valori grezzi non scalati alla risoluzione configurata; i canali interni (16–18) restituiscono anch’essi valori grezzi, ma gli helper dedicati indicati di seguito li convertono in tensioni.
- read_core_temp() float¶
Restituisce la temperatura del die in gradi Celsius, calcolata dal canale di temperatura interno e dai valori di calibrazione di fabbrica memorizzati nel MCU.
- read_core_vbat() float¶
Restituisce la tensione della batteria di backup in volt. La lettura viene effettuata attraverso un partitore di tensione on-chip (in modo che il margine non limiti l’intervallo di ingresso dell’ADC) e riscalata alla tensione effettiva della batteria. Il partitore è attivo solo durante la conversione dell’ADC, quindi l’assorbimento in standby sulla batteria di backup è trascurabile.
- read_core_vref() float¶
Restituisce la tensione di riferimento interna da 1.21 V (nominale) in volt, misurata usando l’alimentazione del MCU come riferimento dell’ADC. Questo è il risultato grezzo della conversione.
- read_vref() float¶
Restituisce la tensione di alimentazione del MCU in volt. Calcolata misurando il riferimento di tensione interno e riscalando in base al suo valore di calibrazione di fabbrica. Con una linea da 3.3 V in buono stato la lettura sarà vicina a
3.3. Il MCU continua a funzionare – e le conversioni dell’ADC rimangono significative – con un’alimentazione fino a circa 2 V, purché vengano rispettate le impostazioni appropriate di clock del MCU, velocità di accesso alla flash e modalità di programmazione.