AT24CS32序列号读取失败问题排查请求
问题:AT24CS32芯片序列号读取失败(始终返回NACK)
我正在基于Microchip dsPIC33EP搭建嵌入式系统,外接SOT23封装的AT24CS32芯片,其中[A2:A0]引脚接地为逻辑0。根据芯片数据手册第6.1节,读取序列号应使用设备地址0x58,但执行用于设置EEPROM地址的虚拟写入操作时,代码和逻辑分析仪均显示NACK。
相关波形对比
- 数据手册中序列号读取虚拟写入的示例波形:
![数据手册序列号读取虚拟写入示例波形] - 我尝试写入序列号读取地址的逻辑分析仪轨迹:
![序列号读取地址写入的逻辑分析仪轨迹] - 同一代码设置主存储区读取的轨迹(此操作正常):
![主存储区读取设置的逻辑分析仪轨迹]
已知正常操作
我可以使用设备地址0x50通过相同代码成功读写主EEPROM存储区。
调试尝试
为排查问题,我尝试将目标序列号存储地址0x0800写入主设备类型标识地址,虚拟写入操作成功,但读取的数据始终为0xFF——这符合预期,因为0x0800属于主EEPROM阵列的有效范围。
参考代码
I2C1_MESSAGE_STATUS status; // Serial number 7-bit device type identifier: 0b1011xxx uint8_t ser_addr = 0x58; // Word address specified in table 6-2 uint8_t addr_buf[2] = {0x08, 0x00}; I2C1_MasterWrite(addr_buf, 2, ser_addr, &status); while (status == I2C1_MESSAGE_PENDING) { __delay32(9000); } // Only ever see I2C1_DATA_NO_ACK here, never see the address word make it to the wire if(status != I2C1_MESSAGE_COMPLETE) { return false; }
请问有人能指出我读取该芯片序列号时的错误吗?我认为自己可能误解了数据手册的某些内容,但逻辑分析仪轨迹看起来与手册示例一致。
内容的提问来源于stack exchange,提问作者thebeekeeper
相关产品推荐
相关产品推荐

