#概要
RaspberryPi上で動作するPythonで、i2cデバイスと通信をする際に使用できるSMBusライブラリのコマンドの一部をロジアナで見てみます。挙動の参考にしてみてください。
#ロジアナ解析
##write_byte_data(slave_address, command, byte_data)
write_byte_data(0x3e, 0xaa00, 0xaaff)
- slaveアドレスに続き、コマンド8bit、データ8bitがslaveデバイスへ送信されています。ソースでは故意に16bitデータを入力させましたが、上位8bitは無視されていました。
##write_word_data(slave_address, command, word_data)
write_word_data(0x3e, 0xaa00, 0xeedd)
- コマンド8bit、データ16bitが送信されています。コマンドは下位8bitのみ、データはwordなので16bit分ですがLSB 7:0、MSB15:8の順に送信されています。
##write_i2c_block_data(slave_address, command, data[])
write_i2c_block_data(0x3e, 0xaa00, [0x01,0x02,0x03])
- データを配列で指定し、一気に送信しています。コマンドは0x00、データは0x01,0x02,0x03の三つになります。
##write_block_data(slave_address, command, data[])
write_block_data(0x3e, 0xaa00, [0x01,0x02,0x03])
- 基本的に上のwrite_i2c_block_dataと同じだと思っていたのですが何故か引数で指定していない0x03が入ってしまい、原因不明です。分かるかたいらっしゃったらご教示いただけると助かります。