メディア

A-Dコンバーターの4つのトラブル事例と対策Q&Aで学ぶマイコン講座(107)(2/4 ページ)

» 2025年09月30日 15時30分 公開
解説します

アナログ回路の起動時間を考慮しなかった

 アナログ回路には起動時間が必要です。例えばSTマイクロエレクトロニクスの汎用32ビットMCUのSTM32H5シリーズ*1)のリファレンスマニュアルには、A-Dコンバーターの最初の説明に、次のように記載されています(原文は英文)

 デフォルトでは、ADCはディープパワーダウンモードに設定されており、リーク電流を低減するために内部で電源がオフになっています(ADC_CRレジスタのDEEPPWDビットのリセット状態は1です)。ADC動作を開始するには、まずDEEPPWDビットを0に設定してディープパワーダウンモードを終了する必要があります。

 次に、ADC_CRレジスタのADVREGENビットを1に設定して、ADC内部電圧レギュレーターを有効化する必要があります。ソフトウェアは、キャリブレーションを開始したりADCを有効化したりする前に、ADC電圧レギュレーター(TADCVREG_STUP)の起動時間を待つ必要があります。この待ち時間はソフトウェアで実装する必要があります。

 ADC電圧レギュレーターの起動時間については、デバイスのデータシートのTADCVREG_STUPパラメータを参照してください。

 そこで、STM32H563のデータシート(外部リンク)のTADCVREG_STUPを見ると5マイクロ秒Typ、10マイクロ秒Maxと記載されています(図1

<strong>図1:ADC電圧レギュレーターの起動時間</strong> 図1:ADC電圧レギュレーターの起動時間[クリックで拡大]
STM32H563データシートから抜粋

 従って、ユーザーはソフトウェアまたはハードウェアを使って10マイクロ秒の待ち時間を作る必要があります。正確に10マイクロ秒を測れば、問題は起こりませんが、初期化ルーティンなどで、大体10マイクロ秒経過するだろうと曖昧に考えていると間違いを起こす原因になります。

 STM32ファミリーのHAL(ハードウェア抽象化レイヤー)には、HAL_Delay() という関数があり、待ち時間を容易に作れますので、活用してください。*)

*)参考:HAL_DELAY「UM1725 User Manual Description of STM32F4xx HAL drivers」

電流値が予想よりも大きい

 「A-Dコンバーターの電流値の実測データとデータシートの値が異なっている」という問い合わせがあります。多くの場合、ユーザーが測定している電流値には、A-Dコンバーター以外の電流値が含まれています。

 データシートには、アナログ回路単体の電流値が示されていますが、実際はその他の電流要因が含まれるので、総合的に考える必要があります。

 マイコンの消費電流値は、次の式で求められます。

 総消費電流=動的(ダイナミック)電流×(動作周波数 MHz)+静的(スタティック)電流

 A-Dコンバーターが消費する電流は、「静的(スタティック)電流」に含まれます(図2

<strong>図2:アナログ回路の「静的(スタティック)電流」</strong> 図2:アナログ回路の「静的(スタティック)電流」[クリックで拡大]

 しかし、実際にマイコンの消費電流を測定すると、その中に動的(ダイナミック)電流に起因する電流や、A-Dコンバーター以外の機能の静的電流も含まれます。逆に言うと、実測値からこれらの電流値を取り除くことはほぼ不可能です。

 マイコンの消費電流を検討する場合は、マイコン全体が消費する電流をベースに検討することをお勧めします。具体的な検討方法は、「Q&Aで学ぶマイコン講座(23):消費電力の計算方法」を参考にしてください。

Copyright © ITmedia, Inc. All Rights Reserved.

特別協賛PR
スポンサーからのお知らせPR
Pickup ContentsPR
Special SitePR
あなたにおすすめの記事PR

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.