STC8H2K12U读EEPROM的一点小问题
一、问题发现
之前一直都使用STC8H8K64U,读写EEPROM一直都正常,最近经常使用STC8H2K12U,结果问题出现了。
在一次偶然的机会,发现读写EEPROM区的0地址总是出问题,现象是写入后直接读出,正常,可断电后再读出,就出现错误!于是开始探索STC8H2K12U的EEPROM读写问题。
二、开启探索
问题出现了,是一定要解决的。于是再次下载官方例程,反复测试。结果发现,如果多个字节一边写入,又一边读出,的确没有问题,但如果批量写入。然后再批量读出,那么第0个字节读出的数据必定是错误的。而字节0的正确数据被移至第1个字节了,而第1个字节的数据被移至第2个字节了,依此类推。
三、问题分析
通过深入思考,数据出现移位的问题,估计是STC8H2K12U读取EEPROM的速度太快导致。甚至可以猜想,这个速度估计还比STC8H8K64U快那么一点点,毕竟STC8H2K12U比STC8H8K64U后出。既然你跑得太快了,我让你放慢点脚步吧!
四、实践测试
读函数中的延时,原来只有一个_nop_();
我现在就再添加几个_nop_();试试,结果读写正常,继续调少_nop_();,最后定格在只添加一个_nop_();即可。问题终于得到暂时性解决。

2025.7.8

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

浙公网安备 33010602011771号