class ADCAll – acceso a todos los canales ADC¶
ADCAll expone todos los canales ADC del MCU a través de un único objeto: tanto los pines de entrada analógica externos como los canales internos de temperatura del troquel, la referencia de 1,21 V y VBAT. Es útil para monitorizar el riel de alimentación del MCU y los sensores integrados sin instanciar un ADC por cada pin.
Ejemplo:
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()
Constructores¶
- class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)¶
Proporciona acceso simultáneo a todos los canales ADC del MCU, incluidos los canales internos de temperatura del troquel, la referencia interna de 1,21 V y
VBAT. Construir este objeto cambia todos los pines ADC externos enmascarados al modo de entrada analógica.resolutiones la resolución de conversión del ADC en bits (normalmente8,10o12).maskes una máscara de bits de 32 bits que selecciona qué canales habilitar; el bitNhabilita el canalN. El valor predeterminado es0xffffffff(todos los canales). Los canales internos residen en los bits16(temperatura),17(VBAT) y18(VREF), por lo que para habilitar solo los canales internos pase0x70000.
El sensor de temperatura integrado está calibrado de fábrica y tiene una precisión de aproximadamente ±1 °C, pero mide la temperatura del troquel, que suele estar decenas de grados por encima de la ambiente cuando el MCU está activo. Las lecturas solo son significativas como aproximación de la temperatura ambiente en una placa recién despertada.
Advertencia
Los voltajes de entrada analógica nunca deben exceder el voltaje de alimentación real.
Métodos¶
- read_channel(channel: int) int¶
Lee el canal ADC indicado. Los canales externos (
0–15) devuelven valores brutos sin escalar a la resolución configurada; los canales internos (16–18) también devuelven valores brutos, pero las funciones auxiliares dedicadas que se indican a continuación los convierten en voltajes.
- read_core_temp() float¶
Devuelve la temperatura del troquel en grados Celsius, calculada a partir del canal interno de temperatura y los valores de calibración de fábrica almacenados en el MCU.
- read_core_vbat() float¶
Devuelve el voltaje de la batería de respaldo en voltios. La lectura se realiza a través de un divisor de voltaje integrado (de modo que el margen no restringe el rango de entrada del ADC) y se reescala al voltaje real de la batería. El divisor solo está activo durante la conversión del ADC, por lo que el consumo en reposo de la batería de respaldo es insignificante.
- read_core_vref() float¶
Devuelve el voltaje de referencia interno de 1,21 V (nominal) en voltios, medido con la alimentación del MCU como referencia del ADC. Este es el resultado bruto de la conversión.
- read_vref() float¶
Devuelve el voltaje de alimentación del MCU en voltios. Se calcula midiendo la referencia de voltaje interna y reescalando hacia atrás usando su valor de calibración de fábrica. Con un riel sano de 3,3 V, la lectura será cercana a
3.3. El MCU sigue funcionando – y las conversiones del ADC siguen siendo significativas – con una alimentación tan baja como unos 2 V, siempre que se respeten los ajustes adecuados de reloj del MCU, velocidad de acceso a la memoria flash y modo de programación.