図2にSTM32のA-Dコンバータのサンプリング回路を示します。
この図2はデータシートに記載されています。図1に比べるとかなり複雑に思えますが、CADCが電圧保持用コンデンサ、RAINとRADCを合計したものが充電経路の抵抗成分Rになります。理論上、基板の寄生容量(Capacity)や端子リーク電流やマイコンの端子の保護ダイオードの影響も受けますが、実際には影響が小さいので、ここでは無視します。
これらを無視して簡略化した回路を図3(a)に示します。
サンプリング期間中、VAINからRAINとRADC経由でCADCが充電され、理想的にはCADCの電圧がVAINと同じになる必要があります。しかし実際には長時間かかってしまいますので、どこかで妥協しなければなりません。今回は、1/4LSBの誤差の値になるまでの時間で計算してみます。
図3(a)を見てください。ここでRAINとRADCの直列の値をひとつの抵抗Rmaxと定義します。
VAINの値は測定したい値なので、現時点では不明です。したがって、最大値を想定して計算します。最大値となるのは、測定可能な最大電圧になります。すなわちVAINをVREF+に置き換えて計算します。
VcをCADCの両端の電圧(サンプリングされる電圧)とすると、【1】式で表わされます。実際にVcがVREF+と同じになるまでには時間がかかるので、今回は1/4LSB分は誤差(Error)として考慮し、VREF+から1/4LSB相当の電圧を引いた値に達する時間をサンプリング時間とします。今回、誤差を1/4LSBにしましたが、これはユーザーが自由に定義できます。1/2LSBで計算すればサンプリング時間は少し短くなりますが精度が落ちます。1/8LSBで計算すればサンプリング時間は少し長くなりますが精度が上がります。
Errorは【2】式で表されます。一方、LSBは測定可能な電圧の最大値VREF+をA-Dコンバータの分解能Nで割った値になるので、【3】式でも表すことができます。サンプリング時間をtsとすると【2】=【3】から【4】→【5】→【6】→【7】が成立します。
【7】式でtsを計算するには、A-Dコンバータの分解能NとRAINとRADCとCADCが必要です。Nはマイコンの仕様から12ビットです。RADCとCADCはデータシートに記載されていて、CADC=12pF、RADC=1kΩです。RAINはユーザーが被測定電源の出力抵抗を調べる必要があります。ここでは3.6kΩとします。すると【8】式のようにtsは535.7n秒(ナノ秒)になります。実際のマイコンでのサンプリング時間の設定はA-Dコンバータの動作クロック数で設定します。STM32ではA-Dコンバータの動作クロックは14MHzですので、1クロックの周期は約71.4n秒です。535.7n秒÷71.4n秒=7.5サイクルと計算できますので、サンプリング時間は7.5サイクルと設定します。
A-Dコンバータのトータルの変換時間は、サンプリング時間と変換時間と内部の処理時間の合計になります。図4に今回の場合のトータル変換時間を示しました。
サンプリング時間が535.7n秒(7.5サイクル)、二分検索による変換時間はビット数のサイクル数になりますので、12サイクルの857.1n秒。STM32の場合は、二分検索の変換の後処理に0.5サイクルかかりますので、35.7n秒が加わります。したがってトータル変換時間は1428.5n秒(20サイクル)になります。
Copyright © ITmedia, Inc. All Rights Reserved.