汎用IO通信テストレジスタアクセス(I2C)

テンプレート説明

TC-3000がI2Cマスターとして テスト対象機器 の各レジスタへ Read / Write を順次実行し、応答が仕様通りであることを確認します。

 

  • 1 レジスタ定義テーブルの読み込み
    レジスタアクセス定義テーブルから 1 エントリを取り出し、操作種別(Read / Write / Write-Read)に応じた I2C トランザクションを構築します。
  • 2 I2C トランザクション送信・応答受信
    ①で構築したトランザクションをスレーブアドレスへ送信し、Write 時は ACK を、Read / Write-Read 時はACK/受信データを取得します。
  • 3 期待値照合と全エントリ繰り返し
    ②で取得した ACK 状態または受信データを期待値と照合して PASS / FAIL を判定し、①②をレジスタ定義テーブルの全エントリ分繰り返します。
初期ユニット配置
 ・スロット1:DIOユニット(TC-IFDIO) ※1

※1 ユニットを別スロットへ変更する場合、ユニット設定のスロット割り付け変更を行うことで、設定値などを引き継ぎ可能です。

接続図

TC-3000のI2C端子とテスト対象機器のI2C端子を接続します。

 

TC-3000 Luaスクリプト register_table 参照・送受信 op sub_addr write 期待値 R nil 0x12 R nil 0x01 WR 0x10 0x01 W 0x11 0xFF ACK WR 0x20 0x00 ①コマンド送信 ④レスポンス取得 DIOユニット(TC-IFDIO) I2C1 マスター(I2C1) テスト対象機器 I2C スレーブ I2C スレーブ ②コマンド送信 ③レスポンス受信

 ※必ずGNDは接続してください。

設定変数

全設定変数を記載しています。実機の仕様に合わせて変更してください。

変数名

内容

初期値

SLOT

使用するユニットのスロット番号。使用するユニットに応じて変更。

DIO1

CH

I2Cチャンネル番号

I2C1

SLAVE_ADDR

テスト対象機器 の I2C スレーブアドレス

0x50

RESP_SIZE

Read 時に取得するバイト数

1

register_table

レジスタアクセス定義テーブル。1 エントリが 1 つの I2C トランザクションに対応します。

フィールド 内容
sub_addr スレーブ内部のレジスタアドレス(バイト列)。Read 専用エントリでは nil を指定します。
op 操作種別。"R"=Read のみ、"W"=Write のみ、"WR"=Write→Restart→Read。
write_data 書き込み値(op="W" のときのみ使用)
read_expected Read レスポンスの期待値(バイト列、op="R" / "WR" のときのみ使用)
desc レジスタの説明ラベル(ログ出力用)

サンプル有
使用例は接続図参照

判定条件

各レジスタアクセス実行後に取得した結果が以下を満たす場合に PASS と判定します。

判定項目

合格条件

Write 時の ACK 応答

テスト対象機器 から ACK を受信していること(NACK でないこと)

Read 時の応答有無

テスト対象機器 から NACK が返されていないこと

Read 時の受信データ

受信バイト列が、当該レジスタに設定した期待値と一致すること