器件型号: SK-AM64B
您好:
使用最新 SDK 时、请遵循的现有问题: mcu_plus_sdk_am64x_11_02_00_24
客户支持部门已指示 I2C EEPROM 写入/读取错误应由此 SDK 版本修复。 但显然没有。
在 board.c 文件中:

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号: SK-AM64B
您好:
使用最新 SDK 时、请遵循的现有问题: mcu_plus_sdk_am64x_11_02_00_24
客户支持部门已指示 I2C EEPROM 写入/读取错误应由此 SDK 版本修复。 但显然没有。
在 board.c 文件中:

尊敬的 Huynh:
我再次检查了驱动程序代码。 EEPROM_ADDR_SIZE 宏不表示 I2C 器件的地址位。 EEPROM_ADDR_SIZE 宏实际上表示捕获 EEPROM 的实际物理地址所需的字节数。 EEPROM 器件的地址为 (0x0400)、它是 2 字节值。
因此 EEPROM_ADDR_SIZE 宏命令应保存值 2。 请将宏更新为值 2、如果您仍然遇到问题、请告知我们。
请参阅下图。

此致、
Tushar
这意味着 SDK 版本。 11.2 使得 SK I2C @0x51 且 EEPROM_ADDR_SIZE (3U) 时出现此误差。
因此没有错误、因为旧版本使用 EEPROM_ADDR_SIZE (2U)。
但是、当我将测试数据更改为时、对 SK 板(器件= AT24C512C)使用此示例 I2C_MEMORY_READ
#define BYTE_COUNT (256U)
然后出现了这个别名错误、其中 0x400 处的读取字节应为 0x0、依此类推、但在这里它读回 0x80:

但如果是 #define BYTE_COUNT (128U) 则不会出现错误。
这是因为 I2C 存储器事务被视为页面访问、对于该器件、该值为 128 吗?
尊敬的 Huynh:
因此没有错误、因为旧版本使用 EEPROM_ADDR_SIZE (2U)。
是的、以上都是正确的。
是因为 I2C 内存事务被视为页面访问、对于此器件为 128 吗?
是的、以上都是正确的。 AT24C512C EEPROM 支持 128 字节页写入。 如果将超过 128 个数据字传输到 EEPROM、则数据字地址将回滚、并且之前的数据将被覆盖。
请参阅的“页面写入“部分 EEPROM-at24c512c 数据表
此致、
Tushar