JAJU896 June   2023 ADS131M08 , MSPM0G1507

 

  1.   1
  2.   概要
  3.   リソース
  4.   特長
  5.   アプリケーション
  6.   6
  7. 1システムの説明
    1. 1.1 最終製品
    2. 1.2 電気メータ
    3. 1.3 電力品質メータ、電力品質アナライザ
    4. 1.4 主なシステム仕様
  8. 2システム概要
    1. 2.1 ブロック図
    2. 2.2 設計上の考慮事項
      1. 2.2.1 TPS3840 を使用する外部電源電圧スーパーバイザ (SVS)
      2. 2.2.2 TMAG5273 リニア 3D ホール効果センサによる磁気改ざん検出
      3. 2.2.3 アナログ入力
        1. 2.2.3.1 電圧測定のアナログ・フロント・エンド
        2. 2.2.3.2 電流測定のアナログ・フロント・エンド
    3. 2.3 主な使用製品
      1. 2.3.1  ADS131M08
      2. 2.3.2  MSPM0G3507
      3. 2.3.3  セグメント LCD ディスプレイ駆動用の MSP430FR4131
      4. 2.3.4  TPS3840
      5. 2.3.5  THVD1400
      6. 2.3.6  ISO6731
      7. 2.3.7  ISO6720
      8. 2.3.8  TRS3232E
      9. 2.3.9  TPS709
      10. 2.3.10 TMAG5273
  9. 3システム設計理論
    1. 3.1  計測テスト用のソフトウェアを実装する方法
    2. 3.2  クロック供給システム
    3. 3.3  GUI 通信用の UART のセットアップ
    4. 3.4  リアルタイム・クロック (RTC)
    5. 3.5  MSP430FR4131 の LCD コントローラ
    6. 3.6  ダイレクト・メモリ・アクセス (DMA)
    7. 3.7  ADC のセットアップ
    8. 3.8  フォアグラウンド・プロセス
      1. 3.8.1 数式
    9. 3.9  バックグラウンド・プロセス
    10. 3.10 ソフトウェア関数 per_sample_dsp()
      1. 3.10.1 電圧と電流の信号
      2. 3.10.2 周波数測定とサイクル・トラッキング
    11. 3.11 LED パルスの生成
    12. 3.12 位相補償
  10. 4ハードウェア、ソフトウェア、テスト要件、テスト結果
    1. 4.1 必要なハードウェアとソフトウェア
      1. 4.1.1 ハードウェア
      2. 4.1.2 注意および警告
    2. 4.2 テスト構成
      1. 4.2.1  TIDA-010243 を計量テスト機器に接続する
      2. 4.2.2  電源オプションとジャンパ設定
      3. 4.2.3  電気メータの計測精度のテスト
      4. 4.2.4  計測読み取り値の表示とキャリブレーション
        1. 4.2.4.1 LCD から結果を表示する
        2. 4.2.4.2 PC からのキャリブレーションと結果の表示
      5. 4.2.5  MSPM0+ MCU のキャリブレーションとフラッシュの設定
      6. 4.2.6  ゲインのキャリブレーション
      7. 4.2.7  電圧および電流ゲインのキャリブレーション
      8. 4.2.8  有効電力ゲインのキャリブレーション
      9. 4.2.9  オフセット・キャリブレーション
      10. 4.2.10 位相キャリブレーション
      11. 4.2.11 ソフトウェア・コードの例
    3. 4.3 テスト結果
      1. 4.3.1 SVS 機能テスト
      2. 4.3.2 電気メータの計測精度の結果
  11. 5設計とドキュメントのサポート
    1. 5.1 設計ファイル
      1. 5.1.1 回路図
      2. 5.1.2 BOM
      3. 5.1.3 PCB レイアウトに関する推奨事項
      4. 5.1.4 レイアウトのプリント
      5. 5.1.5 ガーバー・ファイル
    2. 5.2 ツールとソフトウェア
    3. 5.3 ドキュメントのサポート
    4. 5.4 サポート・リソース
    5. 5.5 商標
  12. 6著者について

バックグラウンド・プロセス

電圧と電流のサンプリング時に発生するさまざまなイベントを、図 3-3 に示します。灰色の項目は、テスト・ソフトウェアではなくハードウェア設定によって行われます。

GUID-20230518-SS0I-XDT3-CRNH-JVB85P6HLDL1-low.svg図 3-3 電圧と電流のサンプリング・イベント

図 3-3 に示されているプロセスを実行するため、各相について、すべての OSR ごと (この設計では 512 ごと) に新しい電流サンプルが準備され、SPI バスを経由して MSPM0+ MCU に、毎秒 8000 のサンプルが送られます。各サンプル には 30 バイト、ADC チャネルごとに 3 バイトのデータが含まれています。ADS131M08 デバイスからの最新の位相電流および電圧のサンプルが、N - 1 番目の電流および電圧のサンプル、または Iphx[N - 1] および Vphx[N - 1] に対応していると想定します。新しいサンプルの準備ができた時点で、ADS131M08 によって DRDY ピンが Low にアサートされます。ADS131M08 の DRDY ピンの立ち下がりエッジにより、MSPM0+ MCU で GPIO ポート割り込みが発生し、ポート ISR がトリガされて、バックグラウンド・プロセスがポート ISR 内で実行されます。バックグラウンド・プロセスを、図 3-4 に示します。このプロセスは主に、テスト・ソフトウェアでタイミング・クリティカルなイベントを処理します。

GUID-20230518-SS0I-MMXM-CRZ8-RMKT1MB2PBWN-low.svg図 3-4 バックグラウンド・プロセス

バックグラウンド・プロセスでは、以前に取得した電圧サンプル (Vphx[N - 2]) と、以前に取得した電流サンプル (Iphx[N - 2]) が保存され、後から per_sample_dsp 関数で使用できます。この関数は、計測パラメータの計算に使用される中間ドット積の数量を更新します。

以前に取得した電圧と電流のサンプルを保存した後、チップ・セレクトを Low にアサートし、ADS131M08 との通信がイネーブルされます。次に DMA が、ADS131M08 デバイスの最新の電流と電圧のサンプル (Iphx[N - 1] と Vphx[N - 1]) へのリクエストを送信し、ADS131M08 からのデータ・パケット応答を受信するように構成されます。現在のサンプルの要求と受信は、DMA モジュールによって自動的に行われます。

MSPM0+ MCU の DMA によって送信されるパケットと、DMA によって受信および結合される ADS131M08 からの応答パケットを、図 3-5 に示します。送信および受信パケットには 10 ワードが含まれ、各ワードは 3 バイト長なので、SPI バス経由で 30 バイトの DMA トランザクションが発生します。

GUID-20230518-SS0I-T22Q-RQSH-DCGJ2CK0BDSB-low.svg図 3-5 ADS131M08 ADC のサンプル・リクエスト・パケット

ADS131M08 デバイスから ADC データを要求するとき、ADS131M08 に送信する必要がある最初のワードはコマンド・ワードです。テスト・ソフトウェアでは、ADS131M08 の設定を変更する必要はなく、標準的な ADC のサンプル読み出し時にレジスタを読み取る必要もないため、ADS131M08 に NULL コマンドが送信され、設計者はデバイスの状態を変更せずに ADS131M08 から ADC サンプルを取得できます。NULL コマンドの実際のサイズは 16 ビットですが、24 ビットのワードが使用されるため、16 ビット・コマンドの末尾に値 0x00 を追加してパディングする必要があります。したがって、送信される NULL コマンド・ワードの値は 0x00 00 00 です。MSPM0+ MCU がコマンド・ワードをシフトアウトするのと同時に、MCU は前のパケットのコマンド・ワードに対する応答ワードをシフトインします。NULL コマンドに対する応答ワードは、STATUS レジスタの内容です。この設計では、STATUS レジスタの内容は使用されないため、ADS131M08 から受信された最初のワードは無視されます (ソフトウェア・コードで処理されない)。

コマンド・ワードを書き込んだ後で、読み取る各バイトについてダミーの書き込みを行う必要があります。ADS131M08 デバイスからバイトを読み取るには、SPI クロックをイネーブルする必要があり、そのためにはダミー・バイトの書き込みが必要です。ダミー・バイトの書き込みごとに、SPI 送信レジスタに値 0x00 が書き込まれます。コマンド・バイトの書き込み直後に 3 つのダミー・バイトを書き込むと、MSPM0+ MCU は ADS131M08 のチャネル 0 から、3 バイトの ADC 値を受信できます。次の 21 のダミー・バイトを書き込むと、チャネル 1、チャネル 2 の順に、チャネル 7 までの ADC データが取得されます。最後に、次の 3 つのダミー・バイトを書き込むと、CRC ワードを取得します。CRC ワードは 24 ビットですが、実際の CRC は 16 ビットしかなく、24 ビット・ワードの最上位ビットに配置されています。このため、CRC ワードを解析するとき最後のバイトは必要ありません (ただし、ADS131M08 を適切に動作させるため、この 0 でパッドされたバイトのダミー書き込みは送信する必要があります)。

図 3-3 は、DMAが Iphx[N - 1] パケットの全体を受信するたびに、DMA ISR が自動的に呼び出されることを示しています。ISR 内では、9 つのコマンドおよび ADC ワード (合計 9 × 3 = 27 バイト) にわたって CRC が計算されます。この CRC 計算は 2 つのモードで行うことができます。MSPM0G3507 MCU の CRC モジュールを使用する方法と、memcpy() 関数を使用して 27 バイトの ADC データを、CRC16 が自動計算される特別なメモリ領域に移動する方法です。

どちらの方法も、テスト・ソフトウェアに正しく実装されています。verify_add_CRC() ルーチンを参照してください。memcpy() の実装は、バイト単位のフィードで CRC16 レジスタを使用するより約 5 倍も速く計算できるため、デフォルトで使用されます。CRC モジュールには 8 ビットまたは 16 ビットのデータをフィードできます。データは合計 27 バイトなので、CRC モジュールはバイトごとに更新されます。パケット全体で計算された CRC は、ADS131M08 から送信されたパケットで取得された CRC と比較されます。送信された CRC は、バイト 28 と 29 から解析されます (バイト 30 は CRC16 のゼロパディングなので、このバイトの値は無視されます)。

計算された CRC と解析された CRC が等しい場合、CRC チェックは成功し、ADC データが解析されて、N - 1 の時点での電圧および電流サンプルの値が得られます。解析された電圧と電流のサンプルは一時バッファに格納され、次の割り込みで per_sample_dsp 関数が呼び出されると、この情報が使用されます。DMA を介した SPI 転送が終了すると、CS (チップ・セレクト) ラインが自動的に MSPM0+ MCU から再び High になり、次の電流サンプル読み取りの準備ができる前に ADS131M08 の通信が正しくリセットされます。

最新の電流および電圧サンプル Iphx[N - 1] および Vphx[N - 1] を DMA チャネルを使用して MSPM0+ MCU に転送すると同時に、ADS131M08 は次の電圧 (Vphx[N]) および電流サンプル (Iphx[N]) を既にサンプリングしています。一方、テスト・ソフトウェアは、ADS131M08 から取得した以前の電圧 (Vphx[N - 2]) と電流サンプル (Iphx[N - 2]) に対して、サンプル単位の処理を実行します。このサンプルごとの処理を使用して、計測パラメータの計算に使用される中間ドット積の数量を更新します。サンプル処理の後、バックグラウンド・プロセスは、エネルギー比例パルスの計算と出力に「per_sample_energy_pulse_processing」を使用します。per_sample_energy_pulse_processing が完了すると、テスト・ソフトウェアはポート ISR を終了します。