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 (tipicamente8,10ou12).maské uma bitmask de 32 bits que seleciona quais canais habilitar; o bitNhabilita o canalN. O padrão é0xffffffff(todos os canais). Os canais internos residem nos bits16(temperatura),17(VBAT) e18(VREF), portanto, para habilitar apenas os canais internos, passe0x70000.
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 (
0–15) retornam valores brutos não escalonados na resolução configurada; os canais internos (16–18) 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.