今回はラズパイで動作させるのでPython版。

出典元のみさなま、勉強になります。まことにありがとうございます。

 

出典1:

SMBUS2を使え、ということがわかりました。(まだ理解できておりません)

ラズパイのコンソールで、

 PIP3 install smbus2

でインストールできますが、最初から入っていたみたいです。

 

■サンプルコード:出典1からコピペ・・・

 

from smbus2 import SMBus, i2c_msg
ADDR = 0x50  # A0, A1, A2 -> Low
PAGE_SIZE = 128
xxx = 512  # 24LCxxx

def read_n_bytes(bus, address, n):
    # EEPROMからnバイト読み込み
    w = i2c_msg.write(ADDR, [address>>8, address&0x00ff])

    # [アドレス上位, アドレス下位]
    r = i2c_msg.read(ADDR, n)
    bus.i2c_rdwr(w, r)  # 実行
    return list(r)

def writ_page(bus, page, data):
    # EEPROMにページ書き込み
    assert len(data) <= PAGE_SIZE
    address = page*PAGE_SIZE
    w = i2c_msg.write(ADDR, [address>>8, address&0x00ff, *data])
    bus.i2c_rdwr(w)
    return
 

if __name__ == "__main__":
    i2c = SMBus(1)
    i2c.pec = 1
    #write_page(i2c, 0, [0xff]*PAGE_SIZE)  # ページ0を0xffで満たす
    for i in range(xxx//8*1024//16):

    # i : 記憶領域全体を16バイトごとに区切った時の先頭アドレス
        line = read_n_bytes(i2c, i*16, 16)  # 16バイト読み込み
        # 16バイトずつ改行して表示
        for n in line:
            print("{:02X} ".format(n), end="")
        print()
    i2c.close()
 

■動作結果

・・・本日時間切れになりました。動作検証は後日です。

 

以上

追記予定