- I2C の Python ライブラリ
Raspberry Pi 4 の Python I2C ライブラリは,smbus :
import smbus
# get_clock 用
import time
- I2C 通信の設定
Linux でネイティブにサポートされている I2C アクセス用デバイスドライバは,i2c-dev。
これと smbus の関係は,つぎのようになる:
smbus のうちに,
<i2c-dev を介した Linux SMBus アクセス>
がある
通信回路と slave アドレスを設定する。
既に,MCU に 「I2C1, 0x10」 を設定している。
これを書く。
# 回路は I2C1 を使う
bus_number = 1
bus = smbus.SMBus( bus_number )
# slave のアドレスは 0x10 を使う
addr = 0x10
- 目標電流値を bytes に変換
IC2 は byte しか送れないので,目標電流値を bytes に変換する。
データの bytes変換と復元
- 送信
これは,
motor_store_buffer (アドレス 0x10)
への書き込み :
bus.write_i2c_block_data(
0x10,
0x00,
data
)
0x00 は,書き込みの起点となるレジスタアドレス。
motor_store_buffer の先頭アドレスと対応している。
なお,write_i2c_block で送れるのは 32byte 以下だが,data は
モータ12個分:2byte × 12 = 24 byte
なので,OK。
備考.
Python の I2C送信のコマンドには,つぎのものがある:
write_byte_data(
slave_address, command, byte_data
)
write_word_data(
slave_address, command, word_data
)
write_block_data(
slave_address, command, data[]
)
write_i2c_block_data(
slave_address, command, data[]
)
|