classe ADCAll – accès à tous les canaux ADC

ADCAll expose tous les canaux ADC du MCU à travers un seul objet – à la fois les broches d’entrée analogique externes et les canaux internes pour la température de la puce, la référence de 1,21 V et VBAT. C’est utile pour surveiller le rail d’alimentation du MCU et les capteurs intégrés sans instancier un ADC par broche.

Exemple

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()

Constructeurs

class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)

Fournit un accès simultané à tous les canaux ADC du MCU, y compris les canaux internes pour la température de la puce, la référence interne de 1,21 V et VBAT. La construction de cet objet bascule en mode entrée analogique toutes les broches ADC externes masquées.

  • resolution est la résolution de conversion de l’ADC en bits (généralement 8, 10 ou 12).

  • mask est un masque de bits de 32 bits sélectionnant les canaux à activer ; le bit N active le canal N. La valeur par défaut est 0xffffffff (tous les canaux). Les canaux internes se trouvent aux bits 16 (température), 17 (VBAT) et 18 (VREF), donc pour activer uniquement les canaux internes, passez 0x70000.

Le capteur de température intégré est calibré en usine et précis à environ ±1 °C, mais il mesure la température de la puce – qui est généralement de plusieurs dizaines de degrés au-dessus de la température ambiante lorsque le MCU est actif. Les lectures ne sont significatives comme approximation de l’ambiant que sur une carte fraîchement réveillée.

Avertissement

Les tensions d’entrée analogiques ne doivent jamais dépasser la tension d’alimentation réelle.

Méthodes

read_channel(channel: int) int

Lit le canal ADC donné. Les canaux externes (015) renvoient des valeurs brutes non mises à l’échelle à la résolution configurée ; les canaux internes (1618) renvoient eux aussi des valeurs brutes, mais les fonctions d’aide dédiées ci-dessous les convertissent en tensions.

read_core_temp() float

Renvoie la température de la puce en degrés Celsius, calculée à partir du canal de température interne et des valeurs de calibration d’usine stockées dans le MCU.

read_core_vbat() float

Renvoie la tension de la batterie de secours en volts. La lecture est effectuée via un diviseur de tension intégré (de sorte que la marge ne restreint pas la plage d’entrée de l’ADC) et remise à l’échelle pour obtenir la tension réelle de la batterie. Le diviseur n’est actif que pendant la conversion de l’ADC, de sorte que la consommation en veille sur la batterie de secours est négligeable.

read_core_vref() float

Renvoie la tension de référence interne de 1,21 V (nominale) en volts, mesurée avec l’alimentation du MCU comme référence de l’ADC. Il s’agit du résultat de conversion brut.

read_vref() float

Renvoie la tension d’alimentation du MCU en volts. Calculée en mesurant la référence de tension interne et en effectuant une remise à l’échelle inverse à l’aide de sa valeur de calibration d’usine. Avec un rail sain de 3,3 V, la lecture sera proche de 3.3. Le MCU continue de fonctionner – et les conversions ADC restent significatives – avec une alimentation aussi basse qu’environ 2 V, à condition de respecter les réglages appropriés d’horloge du MCU, de vitesse d’accès à la mémoire flash et de mode de programmation.