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)[ソース]

ベースクラス: _Base

I2C バスの読み書き関数

パラメータ:
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: int) None[ソース]

[非推奨] I2C レジスタに 1 バイトを書き込みます

パラメータ:

data (int) -- 書き込むデータ

_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() int[ソース]

[非推奨] I2C バスから 1 バイトを読み取ります

戻り値:

I2C バスから読み取ったバイト

戻り値の型:

int

_read_byte_data(reg: int) int[ソース]

[非推奨] I2C バスから 1 バイトを読み取ります

パラメータ:

reg (int) -- レジスタアドレス

戻り値:

I2C バスから読み取ったバイト

戻り値の型:

int

_read_word_data(reg: int) list[ソース]

[非推奨] I2C バスから ワードを読み取ります

パラメータ:

reg (int) -- レジスタアドレス

戻り値:

I2C バスから読み取ったワード

戻り値の型:

list

_read_i2c_block_data(reg: int, length: int) list[ソース]

[非推奨] I2C レジスタから ブロックデータを読み取ります

パラメータ:
  • reg (int) -- レジスタアドレス

  • length (int) -- 受信するバイト数

戻り値:

受信した bytearray データ、またはエラー時は False

戻り値の型:

list