STC8H2K12U读EEPROM的一点小问题

一、问题发现

之前一直都使用STC8H8K64U,读写EEPROM一直都正常,最近经常使用STC8H2K12U,结果问题出现了。
在一次偶然的机会,发现读写EEPROM区的0地址总是出问题,现象是写入后直接读出,正常,可断电后再读出,就出现错误!于是开始探索STC8H2K12U的EEPROM读写问题。

二、开启探索

问题出现了,是一定要解决的。于是再次下载官方例程,反复测试。结果发现,如果多个字节一边写入,又一边读出,的确没有问题,但如果批量写入。然后再批量读出,那么第0个字节读出的数据必定是错误的。而字节0的正确数据被移至第1个字节了,而第1个字节的数据被移至第2个字节了,依此类推。image

三、问题分析

通过深入思考,数据出现移位的问题,估计是STC8H2K12U读取EEPROM的速度太快导致。甚至可以猜想,这个速度估计还比STC8H8K64U快那么一点点,毕竟STC8H2K12U比STC8H8K64U后出。既然你跑得太快了,我让你放慢点脚步吧!

四、实践测试

读函数中的延时,原来只有一个_nop_();
我现在就再添加几个_nop_();试试,结果读写正常,继续调少_nop_();,最后定格在只添加一个_nop_();即可。问题终于得到暂时性解决。
image
2025.7.8

微信公众号

欢迎关注本人公众号,了解更多。

posted @ 2025-07-08 20:30  lmn2005  阅读(70)  评论(0)    收藏  举报