可以 read/write EEPROM 地址但是只能 read/write 第一个内存页
Can read/write EEPROM address however can only read/write first memory page
编辑: 我对 BITS 和 BYTES 有点困惑,文档指定位而不是字节,并将位作为字节读取。这解释了我的错误。为什么制造商使用位而不是字节来指定容量?这有点令人困惑。 ;-)
我在备用板上找到了 Atmel 24C02n 2kb EEPROM,想试一试,看看这个芯片里面有什么样的数据,我是否可以重新使用它。从未做过 reading/writing 外部存储器。接线很简单 (i2c) 并且工作得很好。
运行 i2cScanner,它在总线上找到了 8 个地址,0x50 .. 0x57。首先想到:"strange, 8 addresses for one device." 文档描述有 8x256 字节,好吧,8 个地址用于 8 个 256 字节的页面。
但是,当我想访问另一个页面时,例如0x51,我得到了相同的数据并且它似乎写入了相同的内存页面。我在这里错过了什么吗?
这是我使用 wire 库的示例代码:
#include <Wire.h>
int A24C_PAGE_COUNT = 8;
uint8_t A24C_PAGE_ADDR[8] = { 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57 };
int A24C_PAGE_SIZE = 256;
uint8_t eepromReadAddress(int address, int from_addr)
{
Wire.beginTransmission(address);
Wire.write(from_addr);
Wire.requestFrom(address, 1);
uint8_t iResult = (Wire.available())?Wire.read():0x32;
Wire.endTransmission();
return iResult;
}
void eepromWriteAddress(uint8_t address, uint8_t from_addr, uint8_t* data)
{
Wire.beginTransmission(address);
Wire.write(from_addr);
while( *data )
{ Wire.write( *data++ ); }
Wire.endTransmission();
}
void eepromRead()
{
int iByte = 0;
int iPage = 0;
while( iPage < A24C_PAGE_COUNT )
{
Serial.print( "PAGE: " );
Serial.println( iPage+1 );
while( iByte < A24C_PAGE_SIZE )
{
//Serial.print( "0x" );
Serial.print( (char)eepromReadAddress( A24C_PAGE_ADDR[ iPage ], iByte ) );
++iByte;
Serial.print(( iByte % 16 == 0 )?"\n":",");
}
iByte=0;
++iPage;
}
}
void setup()
{
Wire.begin();
Serial.begin(9600);
delay( 1000 );
//eepromWriteAddress( 0x50, 128, "Hello world!" );
eepromRead();
}
void loop() {
}
第一页第128位写入"Hello world!"后的输出,我会得到:
PAGE: 1
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 2
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 3
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 4
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 5
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 6
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 7
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 8
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
每个地址都指向同一个页面????
好的,另一种方法,更改以下变量以读取一个大页面(只是尝试看看会发生什么):
int A24C_PAGE_COUNT = 1;
int A24C_PAGE_SIZE = 2048;
同样的结果,只显示第一页但是重复了 8 次。那我做错了什么?为什么一台设备有 8 个地址?
RAM 和 ROM 的内存容量通常以 位 表示,而不是您假设的 字节 。
所以您所指的这个芯片有 8 x 256 位 的 EEPROM,您似乎期望的内存比实际存在的多得多 - 您可以存储 256 bytes 在那个芯片中。
低容量芯片显然与高容量芯片使用相同的地址解码机制,因此您看到的似乎是一个简单的地址环绕,同时您一遍又一遍地读取相同的字节(参见 "roll-over" 上数据表的第 10 页)。
关于您的 "answers to more than one I2C address" - 您是如何连接 A0、A1、A2 线的?它们需要硬连线才能创建设备地址。
编辑: 我对 BITS 和 BYTES 有点困惑,文档指定位而不是字节,并将位作为字节读取。这解释了我的错误。为什么制造商使用位而不是字节来指定容量?这有点令人困惑。 ;-)
我在备用板上找到了 Atmel 24C02n 2kb EEPROM,想试一试,看看这个芯片里面有什么样的数据,我是否可以重新使用它。从未做过 reading/writing 外部存储器。接线很简单 (i2c) 并且工作得很好。
运行 i2cScanner,它在总线上找到了 8 个地址,0x50 .. 0x57。首先想到:"strange, 8 addresses for one device." 文档描述有 8x256 字节,好吧,8 个地址用于 8 个 256 字节的页面。
但是,当我想访问另一个页面时,例如0x51,我得到了相同的数据并且它似乎写入了相同的内存页面。我在这里错过了什么吗?
这是我使用 wire 库的示例代码:
#include <Wire.h>
int A24C_PAGE_COUNT = 8;
uint8_t A24C_PAGE_ADDR[8] = { 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57 };
int A24C_PAGE_SIZE = 256;
uint8_t eepromReadAddress(int address, int from_addr)
{
Wire.beginTransmission(address);
Wire.write(from_addr);
Wire.requestFrom(address, 1);
uint8_t iResult = (Wire.available())?Wire.read():0x32;
Wire.endTransmission();
return iResult;
}
void eepromWriteAddress(uint8_t address, uint8_t from_addr, uint8_t* data)
{
Wire.beginTransmission(address);
Wire.write(from_addr);
while( *data )
{ Wire.write( *data++ ); }
Wire.endTransmission();
}
void eepromRead()
{
int iByte = 0;
int iPage = 0;
while( iPage < A24C_PAGE_COUNT )
{
Serial.print( "PAGE: " );
Serial.println( iPage+1 );
while( iByte < A24C_PAGE_SIZE )
{
//Serial.print( "0x" );
Serial.print( (char)eepromReadAddress( A24C_PAGE_ADDR[ iPage ], iByte ) );
++iByte;
Serial.print(( iByte % 16 == 0 )?"\n":",");
}
iByte=0;
++iPage;
}
}
void setup()
{
Wire.begin();
Serial.begin(9600);
delay( 1000 );
//eepromWriteAddress( 0x50, 128, "Hello world!" );
eepromRead();
}
void loop() {
}
第一页第128位写入"Hello world!"后的输出,我会得到:
PAGE: 1
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 2
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 3
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 4
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 5
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 6
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 7
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
PAGE: 8
G, ,?,?,, ,,k, ,, ,, ,., ,
,, ,!,,,,?, ,,!,?, ,Q,?,4
,?, ,,I,?, ,<, ,?,?,?,?,?,?,?
?, ,D, ,,<, ,,?, ,, ,,t, ,
?, ,?,?,?,?,?, , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , ,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,H,e,l,l,o, ,w,o,r,l,d,!,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
每个地址都指向同一个页面????
好的,另一种方法,更改以下变量以读取一个大页面(只是尝试看看会发生什么):
int A24C_PAGE_COUNT = 1;
int A24C_PAGE_SIZE = 2048;
同样的结果,只显示第一页但是重复了 8 次。那我做错了什么?为什么一台设备有 8 个地址?
RAM 和 ROM 的内存容量通常以 位 表示,而不是您假设的 字节 。
所以您所指的这个芯片有 8 x 256 位 的 EEPROM,您似乎期望的内存比实际存在的多得多 - 您可以存储 256 bytes 在那个芯片中。
低容量芯片显然与高容量芯片使用相同的地址解码机制,因此您看到的似乎是一个简单的地址环绕,同时您一遍又一遍地读取相同的字节(参见 "roll-over" 上数据表的第 10 页)。
关于您的 "answers to more than one I2C address" - 您是如何连接 A0、A1、A2 线的?它们需要硬连线才能创建设备地址。