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 (tipicamente 8, 10 o 12).

  • mask è una bitmask a 32 bit che seleziona quali canali abilitare; il bit N abilita il canale N. Il valore predefinito è 0xffffffff (tutti i canali). I canali interni si trovano ai bit 16 (temperatura), 17 (VBAT) e 18 (VREF), quindi per abilitare solo i canali interni passa 0x70000.

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 (015) restituiscono valori grezzi non scalati alla risoluzione configurata; i canali interni (1618) 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.