classe ADCAll – acesso a todos os canais ADC

ADCAll expõe todos os canais ADC do MCU por meio de um único objeto – tanto os pinos externos de entrada analógica quanto os canais internos de temperatura do die, a referência de 1,21 V e VBAT. É útil para monitorar o trilho de alimentação do MCU e os sensores no chip sem instanciar um ADC por pino.

Exemplo:

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

Construtores

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

Fornece acesso simultâneo a todos os canais ADC do MCU, incluindo os canais internos de temperatura do die, a referência interna de 1,21 V e VBAT. A construção deste objeto comuta todos os pinos ADC externos mascarados para o modo de entrada analógica.

  • resolution é a resolução de conversão do ADC em bits (tipicamente 8, 10 ou 12).

  • mask é uma bitmask de 32 bits que seleciona quais canais habilitar; o bit N habilita o canal N. O padrão é 0xffffffff (todos os canais). Os canais internos residem nos bits 16 (temperatura), 17 (VBAT) e 18 (VREF), portanto, para habilitar apenas os canais internos, passe 0x70000.

O sensor de temperatura no chip é calibrado de fábrica e tem precisão de aproximadamente ±1 °C, mas mede a temperatura do die – que é tipicamente dezenas de graus acima da ambiente quando o MCU está ativo. As leituras só são significativas como uma aproximação da temperatura ambiente em uma placa recém-despertada.

Aviso

As tensões de entrada analógica nunca devem exceder a tensão de alimentação real.

Métodos

read_channel(channel: int) int

Lê o canal ADC fornecido. Os canais externos (015) retornam valores brutos não escalonados na resolução configurada; os canais internos (1618) também retornam valores brutos, mas as funções auxiliares dedicadas abaixo os convertem em tensões.

read_core_temp() float

Retorna a temperatura no die em graus Celsius, calculada a partir do canal interno de temperatura e dos valores de calibração de fábrica armazenados no MCU.

read_core_vbat() float

Retorna a tensão da bateria de backup em volts. A leitura é feita por meio de um divisor de tensão no chip (de modo que a margem não restrinja a faixa de entrada do ADC) e reescalonada de volta para a tensão real da bateria. O divisor só fica ativo durante a conversão do ADC, portanto o consumo em standby da bateria de backup é desprezível.

read_core_vref() float

Retorna a tensão de referência interna de 1,21 V (nominal) em volts, medida usando a alimentação do MCU como referência do ADC. Este é o resultado bruto da conversão.

read_vref() float

Retorna a tensão de alimentação do MCU em volts. Calculada medindo a referência de tensão interna e reescalonando com base em seu valor de calibração de fábrica. Com um trilho de 3,3 V saudável, a leitura ficará próxima de 3.3. O MCU continua operando – e as conversões do ADC permanecem significativas – com uma alimentação tão baixa quanto cerca de 2 V, desde que sejam observadas as configurações apropriadas de clock do MCU, velocidade de acesso à flash e modo de programação.