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.