求助,频繁读写BKP备份寄存器,导致RTC误差大。
如题,因为需要用到BPK备份寄存器RAM,平均一秒读写一次备份RAM,RTC 12小时的竟然误差34秒。一开始我以为是STM32F103的RTC太差了。于改修改PCB,使用DS1302做RTC。没想到误差更大,1小时就误差60秒。DS1302我使用过非常多,其它地方并没有这样的问题。经过反复对比,我终于发现,只要不读写备份RAM就没有问题。只要一读写,无论读写多少次都会造成误差。读写得越多,误差越大。求解决办法,求指点。减少写入次数 既然加了ds1302,那么stm32的rtc也用上,但只做数据保存,不理会时间。 一周一天班 发表于 2023-1-1 17:49
既然加了ds1302,那么stm32的rtc也用上,但只做数据保存,不理会时间。
我试一下这样RTC还会不会受影响,但是这样的话,RTC电池,要同时给2个芯片供电。耗电量会增大。 DS1302有时间的误差的吗? 为什么要读写这个数据呢? 减少写入的次数。 你使用的32K的晶振吗? 读写BKP备份寄存器为什么会导致RTC出问题? BKP备份寄存器和内部RTC应该没有直接的联系吧?更别说外部RTC了。 我感觉是读写备份RAM的程序有问题。贴出来看看呗。 朝生 发表于 2023-1-11 09:55
BKP备份寄存器和内部RTC应该没有直接的联系吧?更别说外部RTC了。
你大概没看明白我说的意思。内部RTC和BKP是共用时钟LSE或LSI时钟的。还有RTC和BKP是共用备份电源的。怎么说没有直接联系?我说外部RTC,不是指内部BKP和外部RTC的关系。因为换成外部RTC了,时钟备份电源和时钟晶振也换到外部RTC了。所以,也换成了外部备份RAM。就是DS1302的32字节的RAM。 qqtfh 发表于 2023-1-12 15:25
你大概没看明白我说的意思。内部RTC和BKP是共用时钟LSE或LSI时钟的。还有RTC和BKP是共用备份电源的。怎么 ...
懂了,那就只能研究为什么读的时候会导致RTC出现误差了。 这个为什么不使用内部的RTc? 这个怎么可能会有问题呢。 这个是晶振的问题吧。 bkp只是保存参数而已。 可以先减少写入的次数,再看看有没有时间的误差。
页:
[1]