看起来你没有等待EEPROM完成写入。我没有看你的EEPROM,但是对于我曾经使用过的所有EEPROM,写入或擦除序列只会启动动作,然后EEPROM忙了一段时间。
大多数EEPROM都有类似状态寄存器的地方,你可以在其中进行轮询以查看它是否正忙。无论是否繁忙,都可以执行该读取操作。
最通用的软件架构总是在尝试执行任何操作之前轮询忙碌位。如果EEPROM忙,它会继续轮询,直到它没有,然后继续执行所请求的任何操作。更复杂的实现在写入和擦除时设置标志,表明EEPROM可能正忙。只有在设置此标志时才会进行繁忙检查。天真的实现总是在擦除或写入后等待。
仔细查看你的代码,特别是当写入后立即读取时,确切地发送到EEPROM。我的猜测是,在这种情况下,繁忙的检查会以某种方式被忽略。
看起来你没有等待EEPROM完成写入。我没有看你的EEPROM,但是对于我曾经使用过的所有EEPROM,写入或擦除序列只会启动动作,然后EEPROM忙了一段时间。
大多数EEPROM都有类似状态寄存器的地方,你可以在其中进行轮询以查看它是否正忙。无论是否繁忙,都可以执行该读取操作。
最通用的软件架构总是在尝试执行任何操作之前轮询忙碌位。如果EEPROM忙,它会继续轮询,直到它没有,然后继续执行所请求的任何操作。更复杂的实现在写入和擦除时设置标志,表明EEPROM可能正忙。只有在设置此标志时才会进行繁忙检查。天真的实现总是在擦除或写入后等待。
仔细查看你的代码,特别是当写入后立即读取时,确切地发送到EEPROM。我的猜测是,在这种情况下,繁忙的检查会以某种方式被忽略。
举报