アプリケーションノート 3839

LabViewによるシリアル通信モジュールDS3900の制御

筆者: Hrishikesh Shinde

要約: このアプリケーションノートは、シリアル通信モジュールのDS3900と、組込みアプリケーション開発用のグラフィカルなプログラミングプラットフォームであるLabViewについて説明します。この記事は、DS3900とのLabViewベースのインタフェース用のユーザガイドとして役立ちます。

はじめに

LabViewは、組込みアプリケーションを開発するためのグラフィカルなプログラミングプラットフォームとして普及しています。シリアル通信モジュールのDS3900は、PCのシリアルポートを通じてI2Cインタフェースを装備したデバイスと通信する汎用インタフェースボードです。DS3900の命令セットによって、アプリケーションソフトウェアはI2Cデバイスと直接通信することができます。

このアプリケーションノートは、DS3900とのLabViewベースのインタフェース用のユーザガイドです。このアプリケーションを使用するには、LabViewをインストールする必要があります。このプログラムをロードし、実行するための標準的なVIが提供されています。このアプリケーションノートのLabViewコードをダウンロードすることができます(ZIP、321K)。

LabViewソフトウェアの使用方法

VIをロードした後に、プログラムを実行し、以下のステップを実行する必要があります(図1参照)。

Figure 1. LabView screen from which the user configures a system for operation.
図1. 動作させるためにシステムを設定するLabViewの画面

  1. まず、DS3900の設定用に使用されるシリアルポートを選択してください。LabViewは利用可能なシリアルポートリソースを自動的に検索し、リソースをドロップダウンリストに表示します。DS3900が接続されているシリアルポートを選択してください。

    : DS3900が通信するデフォルトのボーレートは、57600です。このアプリケーションは、このボーレートで試験され、正常に動作します。アプリケーション使用時に、このボーレートを変更しないでください。

  2. シリアルポートが正しく設定されている場合は、LEDのオン/オフ機能が動作するはずです。エンドアプリケーションがDS3900のパルス出力に接続されたLEDを備えている場合は(端子P3)、[LED on/off]ボタンが押されると、このLEDはターンオン/オフされるはずです。
  3. 次に、FIND I2C ADDRESSボタンをクリックして、I2Cバス上の全デバイスのスレーブアドレスを検索してください。Set I2C Addressフィールドを使って、VIの通信先のスレーブアドレスを入力してください。
  4. 最上部にあるタブによって、使用したい特定の機能が決まります。以下の各種オプションを利用することができます。
    1. 1BYTE:1度に1バイトの1つのレジスタの書込みまたは読取り。
    2. 2BYTE:2つの連続メモリアドレスの書込みまたは読取り。ここでは、デバイスの内部アドレスカウンタは、読取りまたは書込みが行われるごとに自動的にインクリメントすると仮定しています。
    3. Manual:I2Cの動作方式を決定する制御。数例が、以下のマニュアル制御の項に示されています。

1バイトの読取りおよび書込み

Figure 2. When performing a single-byte operation, the user selects among four addresses for communicating with the I2C device.
図2. 1バイト動作を実行する際には、I2Cデバイスとの通信用の4つのアドレスの中から選択します。

通信元の4種類のアドレスを選択するオプションを備えています(図2)。READ DATAは、各ビットの操作を容易にするために対応するWRITE DATAセクションにコピーされます。

2バイトの読取りおよび書込み

Figure 3. The 2BYTE tab lets the user read data from two registers.
図3. 2BYTEタブを通じて、データを2つのレジスタから読み取ることができます。

特定デバイスの場合は、1レジスタは、メモリ内の2バイト連続のバイトから構成されることもあります。この2BYTEタブ(図3)によって、デバイス内のメモリアドレスポインタが次のレジスタまで自動的にインクリメントする場合は、2つの連続レジスタの値を読み取ることができます。読み取られた値は、WRITE DATA TOエントリセクションに自動的にコピーされます。

マニュアル制御

Figure 4. The MANUAL control tab lets the user define the number of bytes and intended read or write operation.
図4. MANUAL制御タブを通じて、バイト数と希望する読取りまたは書込み動作を設定することができます。

MANUAL制御(図4)を使って、バイト数と希望する特定の動作を決定します。標準的な1バイト書込みおよび2バイト読取りを実行する例が以下に示されています。

1バイトの書込み

START
SEND WRITE (DEVICE
ADDRESS FOR WRITE)
SEND BYTE (MEMORY
ADDRESS)
SEND BYTE (DATA TO
BE WRITTEN)
STOP

2バイトの読取り
START
SEND WRITE
(DEVICE
ADDRESS
FOR WRITE)
SEND BYTE
(MEMORY
ADDRESS)
SEND
START
(REPEATED
START)
SEND READ
(DEVICE
ADDRESS
FOR READ)
READ WITH
ACK (READ
1ST BYTE)
READ WITH
NACK (READ
2ND BYTE)
STOP

重要な注意事項:データ読み取り時には、最後のバイトは、「Read with NACK」である必要があります。これによって、必要なだけのバイトを読み取ることができます。もうデータは送出されないことをデバイスに通知するには、「Read with NACK」が必要です。

また、I2Cバスをリセットすることもできます。ユーザがマニュアル通信中に迷い、バスを未知の状態にした場合に、このリセットは役立ちます。SCL High/LowおよびSDA High/Lowボタンを通じて、これらの端子を希望する状態に強制することができます。

結論

このアプリケーションノートに付属するLabView VIは、DS3900と通信するのにLabViewはどれほど役立つかを示します。これらの最初のコンセプトを理解すると、VIを修正したり、または特定のブロックをコピーして、特定アプリケーションのニーズに対応することができます。