STM32のADC解析

組込みシステムでは、測定・制御の対象となる温度、圧力、流量、速度、電圧などはすべて連続的に変化する物理量です。この連続的に変化する物理量は、通常、アナログ量と呼ばれますコンピュータが測定と制御に参加する場合、コンピュータによって処理される信号はデジタル量であり、デジタル量は時間と数値の両方で離散的な量を指しますアナログをデジタルに変換するデバイスは、アナログ/デジタル コンバーター (ADC) と呼ばれます。コンピュータ処理の結果もデジタル量ですが、実行コンポーネントを直接制御できないため、アナログ量に変換する必要があります。デジタルをアナログに変換するデバイスは、デジタル/アナログ コンバーター (DAC) と呼ばれます。

STM32 12 ビット ADC は、逐次比較型アナログ/デジタル コンバータです。最大 18 チャンネルがあり、16 の外部信号ソースと 2 つの内部信号ソースを測定できます。各チャンネルのA/D変換は、ワンショット、連続、スキャン、または間欠モードで行うことができます。ADC の結果は、左詰めまたは右詰めの方法で 16 ビット データ レジスタに格納できます。(STM32 データシートより)
STM32 の ADC は、テクニカル指標、変換原理、動作プロセス、動作モードの側面から理解できます。

テクニカル指標

1. 分解能:入力信号の最小変化に対する AD コンバータの感度を指し、デジタル出力の最下位ビットに対応するアナログ信号を示します。計算式:信号範囲/((2^n)-1)。STM32 マイクロコントローラーの解像度は 12 ビットです。
2. 変換時間:変換信号の開始から変換信号の終了までの有効時間間隔。STM32 ADC の合計変換時間は、T CONV = サンプリング時間 + 12.5 ADC サイクルです。
例: ADCCLK=14MHz (1 サイクル時間は 1/(14* 10 6 ) 秒) の場合、サンプリング時間は 1.5 ADC サイクルとなり、T CONV = 1.5 サイクル + 12.5 サイクル = 14 ADC サイクル = 1* 10 -6 となります。 s=1μs
3. 入力電圧範囲:0~3.3V、変換結果範囲:0~4095

変換原理

一般的なAD変換原理は逐次比較型と二重積分型に分けられます。両者の違いは次のとおりです。
逐次比較型: 一般にコンパレータ、D/A コンバータ、バッファレジスタ、制御ロジック回路で構成され、変換時間は基本的に固定されており、変換精度は一般的で、変換速度は速く、電力は高くなります。消費量が少なく、抗干渉能力が優れています。
二重一体型: シンプルな構造、強力な耐干渉性、高精度、外部デバイスが少なく、使いやすく、コストパフォーマンスが高いが、変換時間が長い (数十から数百ミリ秒); 遅い信号変化、低いサンプリングレート要件に適しています、高精度 高い要件または重大なオンサイト干渉を伴うシナリオ。

STM32 の ADC は 12 ビット段階的近似型 ADC であるため、主に逐次比較の変換原理が導入されています。ADC0809 を例として、逐次比較型 ADC 変換の原理を紹介します。ADC0809は8ビットの逐次比較型ADCチップで、その構成図は以下のとおりです。
ここに画像の説明を挿入
上の図に示すように、入力、比較、出力の 3 つの主要な部分に分けることができます。
入力部は8チャンネル入力で、どのチャンネル入力がチャンネル選択アドレス信号(ADDA/ADDB/ADDC)によって決まり、チャンネル選択アドレス信号がチャンネル選択スイッチに入力され、チャンネル選択スイッチが対応するチャンネルを入力します
。信号を比較部に送ります。ALE はアドレス ラッチ イネーブル信号で、ハイ レベルでアクティブになります。つまり、ALE=1 の場合、入力が許可されます。
出力部はパラレル出力ポートであり、OE はハイレベルでアクティブとなる出力イネーブル信号です。つまり、OE=1 の場合、チップはラッチの内容を出力します。ラッチの機能は、AD変換の結果をラッチし、出力可能な場合に出力し、変換結果を保存する役割を果たします。
最も重要な部分は比較部分であり、コンパレータ、逐次比較レジスタ、DACで構成されます。DAC の役割は基準レベルを提供することです。比較プロセスは、まず連続する比較レジスタをクリアし、次に最上位を設定し、レジスタ内のデータと入力データを比較します。U o < U iの場合はビットが保存され、それより大きい場合はビットが保存されます。を破棄し、再度上位を設定して比較を継続します。

4 ビット AD 変換を例にとると、プロセスは次のようになります。
ここに画像の説明を挿入
入力が 3.3V の場合。1回目の比較では、最も高い位置は1である。このとき、U=8V>3.3Vは捨てられ、最も高い位置は0である。2回目の比較では、2番目に高い位置は1である。このとき、U 0=4V>3.3V は破棄され、3 回目の比較が行われるとき、2 番目に上位のビットは 0、2 番目に下位のビットは 1 となり、このビットは 4 回目の比較時に U o =2V<3.3V 用に予約されますが行われ、最下位ビットは 1 であり、このビットはU o これは 4 ビットの AD 変換処理ですが、8 ビットおよび 12 ビットの AD 変換処理も同様です。

これらの 3 つの部分に加えて、ADC0809 にはいくつかの制御ビットがあります。CLOCK はクロック信号入力であり、ドライバー チップはクロック信号でのみ動作できます。START は AD 変換イネーブル信号です。変換トリガー信号と考えることができます。 ; EOC は変換終了信号で、AD 変換が完了するとこのビットが 1 になり、変換が完了したことを示します。V REF(+)と V REF(-)は基準電圧で、通常は VCC と GND に接続されます。
STM32 は 12 ビット ADC であり、ADC0809 は 8 ビット AD 変換チップですが、その変換プロセスは 12 ビットと同様であるため、12 ビット AD 変換プロセスを理解するのに役立ちます。

作業過程

ここに画像の説明を挿入
STM32 マイクロコントローラー ADC の構造ブロック図を図に示します。主に入力部、トリガー部、変換部、出力部のいくつかの部分に分かれています。

ADC チャネルの選択

STM32 の ADC には 16 個の多重化チャネルがあり、変換は通常のチャネル グループと注入チャネル グループの 2 つのグループに分けることができます。チャネル グループは、一連の変換されたチャネルで構成されます。
通常チャネル グループは最大 16 個の変換チャネルで構成され、インジェクション チャネル グループは最大 4 個の変換チャネルで構成されます。( ADC1 には 2 つの内部チャネル入力も含まれており、合計 18 チャネル入力があります) ADC によって変換されたデータは、通常のチャネル データ レジスタ (1) と注入チャネル データ レジスタ (4) に分割されます。つまり、インジェクション グループは同時に 4 つの変換データを保存できますが、ルール グループは 1 つの変換データのみを保存できるため、ルール グループを使用して複数のチャネル データを変換する場合、DMA を使用して変換データを移動できます。データが上書きされないように、他の場所に保存されますまた、注入チャネルの変換により通常チャネルの変換を中断することができ、注入チャネルの変換後も中断と同様に通常チャネルの変換を継続することができる。

ADCトリガ選択

ADC 部分は変換を開始するためにトリガー信号を受信する必要があります。ADC1 および ADC2 の場合、トリガ信号は外部 (通常のチャネル グループは EXTI_11、注入チャネル グループは EXTI_15) から取得することも、内部タイマー (TIM1 ~ TIM4 の関連イベント) やソフトウェア トリガから取得することもできます。も使用できます。外部トリガ信号を使用する場合、立ち上がりエッジのみが変換を開始できます。ADC3 の場合、トリガー信号は内部タイマー (TIM1 ~ TIM4、TIM5、および TIM8 の関連イベント) から来るか、ソフトウェアによってトリガーできます。

ADC変換時間

ADC クロックは高速ペリフェラル APB2 クロック (最大 72MHz) から供給され、ADC プリスケーラの後、PCLK2 を 2、4、6、8 で分周して生成されますが、最大値は 14MHz を超えません。
ここに画像の説明を挿入
AD 変換では、アナログ信号をサンプリングし、一定期間保持してから量子化し、デジタル コードを使用して信号値を表す必要があります。ADC 部はトリガ信号を受け取ると、ADCCLK クロックの駆動で入力チャンネルの信号をサンプリングし、アナログ/デジタル変換を行います。ADC が変換を開始する前に、安定するまでの時間が必要です。変換が開始された後、完了するまでに少なくとも 14 クロック サイクルかかります。このとき、16 ビットデータレジスタには変換結果が保持されます。
ADC 変換時間の式は次のとおりです。 T CONV = サンプリング時間 + 12.5 ADC サイクル

データアライメント

STM32 の ADC は 12 ビット ADC であるため、変換結果は 12 ビット データとなり、データ レジスタは 16 ビットであるため、変換されたデータは、左寄せと右寄せの 2 つの方法で配置されます。データレジスタ。ルールグループを例に挙げると、
ここに画像の説明を挿入
データが右詰めの場合、データレジスタの上位 4 ビットに 0 が埋められ、
ここに画像の説明を挿入
データが左詰めの場合、データレジスタの 4 ビット目に 0 が埋められます。 。

アナログウォッチドッグ

STM32 ADC は、アナログ ウォッチドッグを使用して構成することもできます。その機能は、ADC の変換結果を監視することです。ADC 変換結果にしきい値を超える電圧があるか、電圧がしきい値より低い場合、アラームが発行されます。 。

ADC割り込み

通常のチャネルとインジェクション チャネルの変換が完了すると、ADC の変換終了イベントをトリガーできます。ADC0809 と同様に、STM32 チップは変換完了後に変換終了信号を送信します。ルールの変換終了信号グループは EOC、注入グループの信号は JEOC です。どちらの信号も ADC 割り込み要求を発行できます。アナログ ウォッチドッグが設定されており、収集された電圧がしきい値を超えると、ウォッチドッグ割り込みがトリガーされます。
ここに画像の説明を挿入
注: ADC1 と ADC2 割り込みは同じ割り込みベクトルにマップされ、ADC3 は別の割り込みベクトルにマップされます。

動作モード

一般的に使用される ADC 変換モードは次の 4 種類に分類できます。

シングル変換、非スキャンモード

ここに画像の説明を挿入
変換プロセスは上図に示すとおりです。単一の変換とは、ADC が変換完了後に EOC 信号を送信することを意味します。変換完了後、次の変換に入るには新しいトリガー信号が必要であり、変換は実行できません。継続的に実行されること。非スキャンとは、1 回の変換で 1 つのチャンネルの信号のみが変換されることを意味します。

連続変換、非スキャンモード

ここに画像の説明を挿入
変換プロセスは上の図に示されています。連続変換とは、変換が完了した後、ADC が EOC 信号を送信しますが、変換は停止せず、次の変換プロセスに入ります。連続変換では、トリガーを 1 つだけ必要とします。会話。非スキャンとは、1 回の変換で 1 つのチャンネルの信号のみが変換されることを意味します。

シングル変換、スキャンモード

ここに画像の説明を挿入
変換処理は上図のようになり、スキャンモードとは複数チャンネルの信号を一度の変換で変換できるモードであり、変換順序はチャンネル入力の順序に従います。単一変換とは、複数のチャネルを変換した後、ADC が EOC 信号を送信して変換を終了することを意味します。次の変換には新しいトリガー信号が必要です。

連続変換、スキャンモード

ここに画像の説明を挿入
動作プロセスは上図のとおりで、連続変換スキャンモードとは、1回の変換で複数チャンネルの変換が完了した後にEOC信号を送信しますが、変換は終了せずに次の複数チャンネルの変換に入ります。チャンネル信号。

動作モードの概要

上記のいくつかの動作モードから、一般的に使用される 4 つの動作モードは、シングル変換、マルチ変換、スキャン モード、および非スキャン モードの 4 つのサブモードで構成されていることがわかります。
シングル変換とマルチ変換の違いは、1 つの変換が完了した後に変換を停止するかどうかで、変換を停止した場合はシングル変換、変換を停止せずに次の変換に入った場合はマルチ変換となります。会話。単一の変換には変換ごとに新しいトリガー信号が必要ですが、複数の変換に必要なトリガー信号は 1 つだけです。
スキャンモードと非スキャンモードの違いは、1回の変換で複数のチャンネルを変換できることです。1つのチャンネルのみ変換できる場合は非スキャンモード、複数のチャンネルを一度に変換できる場合はスキャンモードです。 。

要約する

AD 変換は STM32 アプリケーションでよく使用される部分であり、8 ビット AD 変換チップの動作プロセスを理解すると、STM32 の 12 ビット ADC に似ているため、STM32 の ADC がより単純に見えるようになります。逐次比較ADCの変換プロセスでは、逐次比較の変換プロセスを理解することが重要です。
ここに画像の説明を挿入
STM32 ADCの動作ブロック図をまとめると上図のようになり、チャネルセレクタからの入力後、ADコンバータに到達してデータ変換され、変換結果がデータレジスタに入力されます。変換終了フラグ EOC は、ADC 割り込みをトリガーできます。アナログ ウォッチドッグが設定されている場合、収集された電圧がしきい値を超えると、ウォッチドッグ割り込みがトリガーされます。遷移をトリガーするソースはいくつかあります。ADC クロックは APB2 バスに搭載されており、事前分周後に最大 14MHz に達します。

おすすめ

転載: blog.csdn.net/Tao_9/article/details/130009872