You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:07:14