■EEPROMデバイスの接続
・EEPROMデバイス
   デバイス名:AT24C256、種別:EEPROM
   メモリー容量:256kbit、ページサイズ:64byte
   インターフェイス:I2C、ボード上に電源インジケータ付き
   基板サイズ:36.5*12mm
   電源電圧min.:1.8V、max.:5.5V
   クロック周波数max.:1MHz、書込時間:5ms、書込回数:1M
   動作温度min.:-55℃、max.:125℃
・今回のピンアサイン
   Vcc:3.3V
   SDA:GPIO16(I2C0)
   SCL:GPFIO17(I2C0)
   GND:GND
・EEPROMボード上のジャンパ
   WP:Write Protect、H:書込禁止、L:書込許可
   A0、A1、A2:アドレスセット(すべてオフでEEPROMスレーブアドレス0x50)

■EEPROM書込上の注意
AT24C256のページサイズは64byteなので、1ページを超えるサイズを越えた分のバイトアレイデータはページ最初から上書きになる。
 

■サンプルコード(EEPROMスレーブアドレス:80(0X50)、読書スレーブアドレス:0の場合)

'''EEPROMデバイスの接続
・ピンアサイン
   Vcc:3.3V
   SDA:GPIO16(I2C0)
   SCL:GPFIO17(I2C0)
   GND:GND
・ボード上のジャンパ
   WP:Write Protect、H:書込禁止、L:書込許可
   A0、A1、A2:アドレスセット(すべてオフでEEPROMスレーブアドレス0x50)
'''

from machine import I2C,Pin
from time import sleep

# setting I2C
id_i2c=0
pin_sda=Pin(16) 
pin_scl=Pin(17)
num_freq=400000
mcs_timeout=50000
i2c = I2C(id_i2c,scl=pin_scl,sda=pin_sda,freq=num_freq,timeout=mcs_timeout)

# test-data
#データの数
num_data = 10
#データの数だけバイトアレイでセット
data_write = bytearray([0,1,2,4,8,16,32,64,128,255])

#データ書込

#(EEPROMスレーブアドレス=80、レジスタアドレス=0、レジスタアドレスビット幅=16)
i2c.writeto_mem(80,0,data_write,addrsize=16)

#スリープ(なくてもよい)
sleep(1)


#データ読出
data_read = i2c.readfrom_mem(80, 0, num_data, addrsize=16)


#1データ(1byte)ずつデータの数だけデータを表示。
for i in range(0,num_data):
    print(i," :",data_read[i])

#注意!オブジェクトまるごとをprintで表示すると

#最初の5バイトと最後のバイトだけ表示される。