fusion_hat._i2c モジュール
I2C バスの読み書き関数
smbus2 ライブラリのシンプルなラッパーです。
サンプル
I2C をインポート
>>> from fusion_hat.i2c import I2C
アドレス 0x17 で I2C バスを初期化
>>> i2c = I2C(address=0x17)
1 バイト 0x00 を書き込み
>>> i2c.write_byte(0x00)
レジスタ 0x01 に 1 バイト 0x01 を書き込み
>>> i2c.write_byte_data(0x01, 0x01)
レジスタ 0x01 に ワード 0x0001 を書き込み
>>> i2c.write_word_data(0x01, 0x0001)
LSB ファーストで レジスタ 0x01 に ワード 0x0001 を書き込み
>>> i2c.write_word_data(0x01, 0x0001, lsb=True)
レジスタ 0x01 に バイト列(ブロック)を書き込み
>>> i2c.write_block_data(0x01, [0x00, 0x01, 0x02])
1 バイトを読み取り
>>> print(i2c.read_byte())
0
レジスタ 0x01 から 1 バイトを読み取り
>>> print(i2c.read_byte_data(0x01))
1
レジスタ 0x01 から ワードを読み取り
>>> print(i2c.read_word_data(0x01))
256
LSB ファーストで レジスタ 0x01 から ワードを読み取り
>>> print(i2c.read_word_data(0x01, lsb=True))
1
レジスタ 0x01 から バイト列(ブロック)を読み取り
>>> print(i2c.read_block_data(0x01))
[0, 1, 2]
- class fusion_hat._i2c.I2C(*args, address: int = None, bus: int = 1, **kwargs)[ソース]
ベースクラス:
_BaseI2C バスの読み書き関数
- パラメータ:
address (int) -- I2C デバイスアドレス
bus (int) -- I2C バス番号
*args --
fusion_hat._base._Baseに渡すパラメータ。**kwargs --
fusion_hat._base._Baseに渡すキーワード引数。
- RETRY = 5
- DEFAULT_BUS = 1
- write_byte(**kwargs)
- write_byte_data(**kwargs)
- write_word_data(**kwargs)
- write_i2c_block_data(**kwargs)
- read_byte(**kwargs)
- read_byte_data(**kwargs)
- read_word_data(**kwargs)
- read_i2c_block_data(**kwargs)
- is_ready(**kwargs)
- static scan(bus: int = 1, force: bool = False) list[ソース]
I2C バス上のデバイスをスキャンします
- パラメータ:
bus (int, optional) -- I2C バス番号。デフォルトは 1 です
force (bool, optional) -- I2C バスへの強制アクセスを行う場合は True、それ以外は False。デフォルトは False です
- 戻り値:
検出されたデバイスの I2C アドレスの一覧
- 戻り値の型:
list
- write(data: int | list | bytearray) None[ソース]
I2C デバイスにデータを書き込みます
- パラメータ:
data (int | list | bytearray) -- 書き込むデータ
- 例外:
ValueError -- 書き込みデータが int、list、または bytearray でない場合
- read(length: int = 1) list[ソース]
I2C デバイスからデータを読み取ります
- パラメータ:
length (int) -- 受信するバイト数
- 戻り値:
受信したデータ
- 戻り値の型:
list
- mem_write(data: int | list | bytearray, memaddr: int) None[ソース]
特定のレジスタアドレスにデータを書き込みます
- パラメータ:
data (int | list | bytearray) -- 送信するデータ
memaddr (int) -- レジスタアドレス
- 例外:
ValueError -- データが int、list、または bytearray でない場合
- mem_read(length: int, memaddr: int) list[ソース]
特定のレジスタアドレスからデータを読み取ります
- パラメータ:
length (int) -- 受信するバイト数
memaddr (int) -- レジスタアドレス
- 戻り値:
受信した bytearray データ、またはエラー時は False
- 戻り値の型:
list
- is_avaliable() bool[ソース]
I2C デバイスが利用可能かどうかを確認します
- 戻り値:
I2C デバイスが利用可能な場合は True、それ以外は False
- 戻り値の型:
bool
- _write_byte_data(reg: int, data: int) None[ソース]
[非推奨] I2C レジスタに バイトデータを書き込みます
- パラメータ:
reg (int) -- レジスタアドレス
data (int) -- 書き込むデータ
- _write_word_data(reg: int, data: int) None[ソース]
[非推奨] I2C レジスタに ワードデータを書き込みます
- パラメータ:
reg (int) -- レジスタアドレス
data (int) -- 書き込むデータ
- _write_i2c_block_data(reg: int, data: list) None[ソース]
[非推奨] I2C レジスタに ブロックデータを書き込みます
- パラメータ:
reg (int) -- レジスタアドレス
data (list) -- 書き込むデータ
- _read_byte_data(reg: int) int[ソース]
[非推奨] I2C バスから 1 バイトを読み取ります
- パラメータ:
reg (int) -- レジスタアドレス
- 戻り値:
I2C バスから読み取ったバイト
- 戻り値の型:
int