class ADCAll – 모든 ADC 채널 접근

ADCAll 은 외부 아날로그 입력 핀과 다이 온도, 1.21V 기준 전압, VBAT 을 위한 내부 채널 양쪽 모두를 포함하여 MCU의 모든 ADC 채널을 하나의 객체로 노출합니다. 핀마다 ADC 를 인스턴스화하지 않고도 MCU의 공급 레일과 온칩 센서를 모니터링하는 데 유용합니다.

예제:

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

생성자

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

다이 온도, 내부 1.21V 기준 전압, VBAT 을 위한 내부 채널을 포함하여 MCU의 모든 ADC 채널에 동시에 접근할 수 있게 합니다. 이 객체를 생성하면 마스크된 모든 외부 ADC 핀이 아날로그 입력 모드로 전환됩니다.

  • resolution 은 비트 단위의 ADC 변환 해상도입니다(일반적으로 8, 10 또는 12).

  • mask 는 활성화할 채널을 선택하는 32비트 비트마스크입니다. 비트 N 은 채널 N 을 활성화합니다. 기본값은 0xffffffff (모든 채널)입니다. 내부 채널은 비트 16 (온도), 17 (VBAT), 18 (VREF)에 위치하므로, 내부 채널만 활성화하려면 0x70000 을 전달하세요.

온칩 온도 센서는 공장에서 보정되어 약 ±1°C의 정확도를 갖지만, 다이 온도를 측정하는데 이는 MCU가 활성 상태일 때 일반적으로 주변 온도보다 수십 도 높습니다. 측정값은 갓 깨어난 보드에서만 주변 온도의 대용값으로 의미가 있습니다.

경고

아날로그 입력 전압은 절대로 실제 공급 전압을 초과해서는 안 됩니다.

메서드

read_channel(channel: int) int

지정한 ADC 채널을 읽습니다. 외부 채널(015)은 설정된 해상도에서 스케일링되지 않은 원시 값을 반환합니다. 내부 채널(1618)도 원시 값을 반환하지만, 아래의 전용 헬퍼들이 이를 전압으로 변환합니다.

read_core_temp() float

내부 온도 채널과 MCU에 저장된 공장 보정 값으로부터 계산한 다이 온도를 섭씨로 반환합니다.

read_core_vbat() float

백업 배터리 전압을 볼트 단위로 반환합니다. 측정값은 온칩 전압 분배기를 통해 취해지며(따라서 헤드룸이 ADC의 입력 범위를 제한하지 않습니다) 실제 배터리 전압으로 다시 스케일링됩니다. 분배기는 ADC 변환 중에만 활성화되므로 백업 배터리에 대한 대기 소모는 무시할 수 있을 정도입니다.

read_core_vref() float

MCU 공급 전압을 ADC 기준으로 측정한 내부 1.21V(공칭) 기준 전압을 볼트 단위로 반환합니다. 이는 원시 변환 결과입니다.

read_vref() float

MCU 공급 전압을 볼트 단위로 반환합니다. 내부 전압 기준을 측정하고 그 공장 보정 값을 사용해 역스케일링하여 계산됩니다. 정상적인 3.3V 레일이라면 측정값은 3.3 에 가깝습니다. 적절한 MCU 클럭, 플래시 접근 속도, 프로그래밍 모드 설정이 준수된다면, MCU는 약 2V만큼 낮은 공급 전압에서도 계속 동작하며 ADC 변환도 의미를 유지합니다.