■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バイトと最後のバイトだけ表示される。