今回はラズパイで動作させるので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()
■動作結果
・・・本日時間切れになりました。動作検証は後日です。
以上
追記予定