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.resolutionest la résolution de conversion de l’ADC en bits (généralement8,10ou12).maskest un masque de bits de 32 bits sélectionnant les canaux à activer ; le bitNactive le canalN. La valeur par défaut est0xffffffff(tous les canaux). Les canaux internes se trouvent aux bits16(température),17(VBAT) et18(VREF), donc pour activer uniquement les canaux internes, passez0x70000.
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 (
0–15) renvoient des valeurs brutes non mises à l’échelle à la résolution configurée ; les canaux internes (16–18) 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.