class ADCAll -- すべてのADCチャンネルにアクセスする

ADCAll は、MCU上のすべてのADCチャンネルを単一のオブジェクトを通じて公開します。外部アナログ入力ピンと、ダイ温度、1.21 V基準電圧、VBAT の内部チャンネルの両方が対象です。これは、ピンごとに 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.21 V基準電圧、VBAT の内部チャンネルを含め、MCU上のすべてのADCチャンネルへの同時アクセスを提供します。このオブジェクトを構築すると、マスクされたすべての外部ADCピンがアナログ入力モードに切り替わります。

  • resolution はADC変換解像度をビット単位で指定します(通常は 81012)。

  • mask は、どのチャンネルを有効にするかを選択する32ビットのビットマスクです。ビット N はチャンネル N を有効にします。デフォルトは 0xffffffff(すべてのチャンネル)です。内部チャンネルはビット 16(温度)、17(VBAT)、18(VREF)に配置されているため、内部チャンネルのみを有効にするには 0x70000 を渡します。

オンチップの温度センサーは工場で校正されており、おおよそ±1 °Cの精度がありますが、測定するのはダイ温度です。これはMCUが動作中のとき、通常は周囲温度より数十度高くなります。読み取り値が周囲温度の代用として意味を持つのは、起動直後のボードに限られます。

警告

アナログ入力電圧は、実際の電源電圧を決して超えてはなりません。

メソッド

read_channel(channel: int) int

指定したADCチャンネルを読み取ります。外部チャンネル(0 -- 15)は、設定された解像度でスケーリングされていない生の値を返します。内部チャンネル(16--18)も生の値を返しますが、以下の専用ヘルパーがそれらを電圧に変換します。

read_core_temp() float

ダイ温度を摂氏で返します。これは内部温度チャンネルと、MCUに格納された工場校正値から計算されます。

read_core_vbat() float

バックアップ電池の電圧をボルト単位で返します。読み取りはオンチップの分圧器を介して行われ(そのためヘッドルームがADCの入力範囲を制限しません)、実際の電池電圧にスケーリングし直されます。分圧器はADC変換の間だけ有効になるため、バックアップ電池のスタンバイ時の消費は無視できる程度です。

read_core_vref() float

内蔵の1.21 V(公称)基準電圧をボルト単位で返します。MCU電源をADC基準として測定されます。これは生の変換結果です。

read_vref() float

MCUの電源電圧をボルト単位で返します。内部基準電圧を測定し、その工場校正値を用いて逆スケーリングすることで計算されます。3.3 Vレールが正常であれば、読み取り値は 3.3 に近くなります。適切なMCUクロック、フラッシュアクセス速度、プログラミングモードの設定が守られていれば、MCUは約2 Vまでの低電源でも動作を続け、ADC変換も意味を持ち続けます。