因为存储少量几十个字节的配置信息,没有单独用IIC芯片,主MCU(上海先辑HPM6364)也没有可用的用户flash,方案设计时就用沁恒CH395片内4kB EEPROM。
现象:
1、擦除后,400ms后写入64个字节,再400ms后同地址读取64字节,读取值不正确;
2、软件复位CH395后,上次写入的前32个字节,可以读取,后32个字节丢失;
3、量了硬件时序没有问题。
按照沁恒给的样例,怎么都不会啊,请论坛各位帮忙,大家有没有出现过这个问题,还是我这颗芯片有问题。
因为存储少量几十个字节的配置信息,没有单独用IIC芯片,主MCU(上海先辑HPM6364)也没有可用的用户flash,方案设计时就用沁恒CH395片内4kB EEPROM。
现象:
1、擦除后,400ms后写入64个字节,再400ms后同地址读取64字节,读取值不正确;
2、软件复位CH395后,上次写入的前32个字节,可以读取,后32个字节丢失;
3、量了硬件时序没有问题。
按照沁恒给的样例,怎么都不会啊,请论坛各位帮忙,大家有没有出现过这个问题,还是我这颗芯片有问题。
片内EEPROM?这家的有这种东西?没试过不清楚。
其他品牌的片内都是占用系统总线的,所以写完成前不能做任何事且要关闭所有中断防止总线数据变化,否则写入的数据就会不正确的。所以一般都是上电时读取,断电时一次性写入。
您好,CH395芯片内置4KB的EEPROM,擦除后数据全部为0xFF。并且在对EEPROM写操作前必须保证目的区域的数据全部为0xFF。调用擦除和写EEPROM命令后,需要给一定的延时等待命令执行完成,可以通过GET_CMD_STATUS命令获取执行状态。
对于您的现象,可以先检查一下擦除后目标区域的数据是否为0xFF,然后再进行后续操作。(附上程序供您参考)
问题已解决,问题的原因也找到了。
ch395芯片,在读写eeprom时,传输需要读写的数据时字节与字节之间需要间隔,如10us。
我使用的是上海先辑hpm6364ipa2处理器,配置好SPI参数后,如果写入3个字节,那么处理器是发出连续24个sclk信号,
中间字节与字节之间没有间隔,而ch395读写EEPROM时是需要的。这也是个小坑,提醒各位注意。
另读写网络收发数据时,不存在数据报文字节与字节之间的间隔之说。