kelas ADCAll -- akses semua kanal ADC

ADCAll mengekspos setiap kanal ADC pada MCU melalui satu objek -- baik pin input analog eksternal maupun kanal internal untuk suhu chip, referensi 1,21 V, dan VBAT. Berguna untuk memantau rel suplai MCU dan sensor on-chip tanpa membuat instans ADC per pin.

Contoh:

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

Konstruktor

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

Menyediakan akses simultan ke setiap kanal ADC pada MCU, termasuk kanal internal untuk suhu chip, referensi internal 1,21 V, dan VBAT. Konstruksi objek ini mengalihkan semua pin ADC eksternal yang ter-mask ke mode input analog.

  • resolution adalah resolusi konversi ADC dalam bit (biasanya 8, 10, atau 12).

  • mask adalah bitmask 32-bit yang memilih kanal mana yang akan diaktifkan; bit N mengaktifkan kanal N. Defaultnya adalah 0xffffffff (semua kanal). Kanal internal berada di bit 16 (suhu), 17 (VBAT), dan 18 (VREF), sehingga untuk mengaktifkan hanya kanal internal, lewatkan 0x70000.

Sensor suhu on-chip dikalibrasi di pabrik dan akurat hingga sekitar ±1 °C, tetapi mengukur suhu chip -- yang biasanya puluhan derajat di atas suhu sekitar ketika MCU aktif. Pembacaan hanya bermakna sebagai proksi untuk suhu sekitar pada board yang baru saja diaktifkan.

Peringatan

Tegangan input analog tidak boleh melebihi tegangan suplai aktual.

Metode

read_channel(channel: int) int

Membaca kanal ADC yang diberikan. Kanal eksternal (0 -- 15) mengembalikan nilai mentah tanpa skala pada resolusi yang dikonfigurasi; kanal internal (16--18) juga mengembalikan nilai mentah, tetapi helper khusus di bawah ini mengonversinya ke tegangan.

read_core_temp() float

Mengembalikan suhu on-die dalam derajat Celsius, dihitung dari kanal suhu internal dan nilai kalibrasi pabrik yang tersimpan dalam MCU.

read_core_vbat() float

Mengembalikan tegangan baterai cadangan dalam volt. Pembacaan diambil melalui pembagi tegangan on-chip (sehingga headroom tidak membatasi rentang input ADC) dan diskalakan kembali ke tegangan baterai aktual. Pembagi hanya aktif selama konversi ADC, sehingga drain standby pada baterai cadangan dapat diabaikan.

read_core_vref() float

Mengembalikan tegangan referensi internal 1,21 V (nominal) dalam volt, diukur dengan suplai MCU sebagai referensi ADC. Ini adalah hasil konversi mentah.

read_vref() float

Mengembalikan tegangan suplai MCU dalam volt. Dihitung dengan mengukur referensi tegangan internal dan melakukan back-scaling menggunakan nilai kalibrasi pabriknya. Dengan rel 3,3 V yang sehat, pembacaan akan mendekati 3.3. MCU terus beroperasi -- dan konversi ADC tetap bermakna -- dengan suplai serendah sekitar 2 V, asalkan pengaturan clock MCU, kecepatan akses flash, dan mode pemrograman yang sesuai dipatuhi.