このアプリケーションは、100SPS (TSAMPLE = 10ms) を必要とします。18µHのインダクタと33pFのコンデンサを使用したセンサを使用しています。ピン、パターン、およびワイヤによる追加の容量が20pFであるため、合計容量は53pFです。
L および C を使用して、fSENSOR = 1/2π√(LC) = 1/2π√(18*10-6 * 50*10-12) = 5.15MHz となります。これは、最大センサ周波数を表しています。センサ容量を増加すると、周波数は低下します。
CLKIN ピンに印加されるシステムのコントローラ クロックの 40MHz を使用することで、内部クロック周波数を柔軟に設定できます。センサ コイルは、チャネル0(IN0AおよびIN0Bピン)、チャネル1(IN1AおよびIN1Bピン)、チャネル2(IN2AおよびIN2Bピン)に接続されています。
電源投入後は、FDC はスリープ モードになります。以下に示すようにレジスタをプログラミングします(例ではチャネル0のレジスタのみを設定しています。チャネル1およびチャネル2のレジスタも等価な設定を使用します)。
- チャネル0の分周値を設定します。
- センサはシングルエンド構成であるため、センサ周波数選択レジスタは 2 に設定します。これは、フィールド CH0_FIN_SEL を b10 に設定することを意味します。
- 設計上の制約として、fREF0 > 4 × fSENSOR とする必要があります。この制約を満たすために、fREF0 は 20.6MHz より大きくなければならないので、基準分周値は 1 に設定します。これは、CH0_FREF_DIVIDERフィールドを0x01に設定することで行います。
- これらの組み合わせにより、チャネル0分周値レジスタ(0x14)の値は0x2001となります。
- センサ駆動電流: 発振振幅を1.2V~1.8Vの範囲内とするために、発振振幅をオシロスコープで測定してIDRIVEの値を調整するか、または内蔵のFDC GUI機能を使用して最適な設定を決定します。この場合は、IDRIVE の値を 15 (10 進) に設定し、発振振幅は 1.68V(pk) となります。INIT_DRIVE 電流フィールドを 0x00 に設定します。これらの組み合わせにより、DRIVE_CURRENT_CH0レジスタ(アドレス0x1E)の値は0x7C00となります。
- チャネル 0 のセトリング時間をプログラミングします (「マルチチャネルおよびシングル チャネル動作」を参照)。
- CHx_SETTLECOUNT > Vpk × fREFx × C × π2 / (32 × IDRIVEX) → 7.5、切り上げて 8 とします。システムの公差に対する余裕を見て、より大きな値10を選択します。
- レジスタ 0x10 を最小値 10 にプログラムします。
- セトリング時間は次のとおりです。(10 x 16)/40,000,000 = 4µs
- チャネル0 SETTLECOUNTレジスタ(0x10)の値は0x000Aとなります。
- チャネル切り替え遅延時間は、fREF = 40MHz に対して約 1μs です (「マルチチャネルおよびシングル チャネル動作」を参照)
- チャネル0の基準カウントをプログラミングして、変換時間を設定します。変換時間の目安は次のとおりです。1/N * (TSAMPLE – セトリング時間 – チャネル切替え遅延時間) = 1/3 (10,000 – 4 – 1) = 3.33ms
- 変換時間レジスタの値を決定するには、次の式を使用し、CH0_RCOUNTについて解きます。変換時間 (tC0)= (CH0_RCOUNTˣ16)/fREF0。
- この結果、CH0_RCOUNTの値は10進で8329となります(小数点以下切り捨て)。これにより、ENOB > 13ビットとなることに注意してください。
- CH0_RCOUNTレジスタ(0x08)を0x2089に設定します。
- ERROR_CONFIGレジスタ(アドレス0x19)に対してはデフォルト値を使用します。デフォルトでは、すべての割り込みがディスエーブルです。
- MUX_CONFIGレジスタをプログラミングします。
- AUTOSCAN_ENをb1に設定して、シーケンシャル モードをイネーブルにします。
- RR_SEQUENCEをb10に設定して、3つのチャネルでのデータ変換をイネーブルにします(チャネル0、チャネル1、チャネル2)。
- DEGLITCHをb101に設定して、入力デグリッチ フィルタの帯域幅を10MHzに設定します。これは、発振タンク周波数を超える最小の設定です。
- これらの組み合わせにより、MUX_CONFIGレジスタ(アドレス0x1B)の値は0xC20Dとなります。
- 最後に、CONFIGレジスタを次のようにプログラミングします。
- ACTIVE_CHANフィールドをb00に設定して、チャネル0を選択します。
- SLEEP_MODE_ENフィールドをb0に設定して、変換をイネーブルにします。
- SENSOR_ACTIVATE_SELをb0に設定して、センサ起動時に全電流駆動を行います。
- REF_CLK_SRCフィールドをb1に設定して、外部クロック ソースを使用します。
- 他のフィールドはそれぞれデフォルト値に設定します。
- これらの組み合わせにより、CONFIGレジスタ(アドレス0x1A)の値は0x1601となります。
次に、レジスタ アドレス0x00~0x05からチャネル0~チャネル2の変換結果を10msごとに読み取ります。
上記の設定例に対して、以下のレジスタ書き込みシーケンスを推奨します。
表 8-1 推奨されるレジスタの初期設定値 (マルチチャネル動作)アドレス | 値 | レジスタ名 | 備考 |
---|
0x08 | 0x8329 | RCOUNT_CH0 | タイミング要件(100 SPS)と分解能要件から計算された基準カウント |
0x09 | 0x8329 | RCOUNT_CH1 | タイミング要件(100 SPS)と分解能要件から計算された基準カウント |
0x0A | 0x8329 | RCOUNT_CH2 | タイミング要件(100 SPS)と分解能要件から計算された基準カウント |
0x10 | 0x000A | SETTLECOUNT_CH0 | 選択したセンサの最小セトリング時間 |
0x11 | 0x000A | SETTLECOUNT_CH1 | 選択したセンサの最小セトリング時間 |
0x12 | 0x000A | SETTLECOUNT_CH2 | 選択したセンサの最小セトリング時間 |
0x14 | 0x2002 | CLOCK_DIVIDER_CH0 | CH0_FIN_DIVIDER = 1、CH0_FREF_DIVIDER = 2 |
0x15 | 0x2002 | CLOCK_DIVIDER_CH1 | CH2_FIN_DIVIDER = 1、CH2_FREF_DIVIDER = 2 |
0x16 | 0x2002 | CLOCK_DIVIDER_CH2 | CH2_FIN_DIVIDER = 1、CH2_FREF_DIVIDER = 2 |
0x19 | 0x0000 | ERROR_CONFIG | ステータスおよびエラー状態を通知するためにデフォルト値から変更可能 |
0x1B | 0xC20D | MUX_CONFIG | チャネル0、1、2をイネーブル(シーケンシャル モード)、入力デグリッチ帯域幅を10MHzに設定 |
0x1E | 0x7C00 | DRIVE_CURRENT_CH0 | チャネル0のセンサ駆動電流を設定 |
0x1F | 0x7C00 | DRIVE_CURRENT_CH1 | チャネル1のセンサ駆動電流を設定 |
0x20 | 0x7C00 | DRIVE_CURRENT_CH2 | チャネル2のセンサ駆動電流を設定 |
0x1A | 0x1601 | CONFIG | センサ起動中の全電流駆動をイネーブル、外部クロック ソースを選択、デバイスをウェイクアップして変換を開始。FDCがアクティブ モードの間はデバイスの設定が許可されないため、このレジスタへの書き込みは最後に行う必要があります。 |