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.

  • resolution es la resolución de conversión del ADC en bits (normalmente 8, 10 o 12).

  • mask es una máscara de bits de 32 bits que selecciona qué canales habilitar; el bit N habilita el canal N. El valor predeterminado es 0xffffffff (todos los canales). Los canales internos residen en los bits 16 (temperatura), 17 (VBAT) y 18 (VREF), por lo que para habilitar solo los canales internos pase 0x70000.

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 (015) devuelven valores brutos sin escalar a la resolución configurada; los canales internos (1618) 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.