求助大家一个ch395q片上eeprom读写问题?

因为存储少量几十个字节的配置信息,没有单独用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,然后再进行后续操作。(附上程序供您参考)

image.png

image.png


问题已解决,问题的原因也找到了。

ch395芯片,在读写eeprom时,传输需要读写的数据时字节与字节之间需要间隔,如10us。

我使用的是上海先辑hpm6364ipa2处理器,配置好SPI参数后,如果写入3个字节,那么处理器是发出连续24个sclk信号,

中间字节与字节之间没有间隔,而ch395读写EEPROM时是需要的。这也是个小坑,提醒各位注意。

另读写网络收发数据时,不存在数据报文字节与字节之间的间隔之说。


只有登录才能回复,可以选择微信账号登录