我正在进行一个项目,在那里我需要通信我的从设备EEPROM (从地址为0x54)。但是当我给出i2cdetect -r -y 10命令时,它会显示单个硬件的8个不同地址。我已经按设备地址为0x54配置了硬件。但它显示0x50到0x57。有人能提出这种行为的原因吗?
$ sudo i2cdetect -r -y 10
...
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --发布于 2022-06-23 15:11:39
I2C协议只允许寻址7或10位。默认的(并且主要使用)是7位地址.这意味着第一个字节有地址和R/W位。现在,每个I2C地址都可以在EEPROM中有一个实际地址,即8位,这意味着可寻址长度为256个字节(这样做很可能是为了简化硬件部分)。因此,我们有256个字节,这就是单个I2C设备在总线上的最大内存大小。这就是为什么我们的想法是解决更大的EEPROM,并将它们表示为I2C总线上的几个地址。因此,每个地址是256字节的内存。对于您的情况,它有8个地址,EEPROM的大小很可能是2千字节。
这将在EEPROM数据表的第3.6章设备寻址中进行描述。
在相同的数据表中,表8-1: PIN函数表解释了为什么您没有成功地将其移动到另一个地址(TL;DR: PIN没有连接)。
https://stackoverflow.com/questions/72696456
复制相似问题