EFM32的RTC计时不准的解决过程

应用EFM32在不断的完善功能,到了RTC日历功能。

把日钟一加,简单的打开了手机的秒表,一分钟下来,竟然差了两秒。然后简单的一看,用了内部的LFRCO晶振。于是改为外部LFXO晶振。结果还是1分钟慢两秒。

于是翻资料,查百度,发官方的论坛贴,全英文,还是机器自动翻译的英文发上去了,感谢官方的技术人员,竟然看懂了。然后回复了AN官方的应用,还是不行啊。

难道晶振不行,找开发板测试,问题依旧。

从资料里面找到了,说有晶振校准的功能。写入一个系数就可以校准了。以为是简单的写个系数搞定。结果翻了翻官方的AN校准应用,一堆初始化和中断。然后,各种测。晶振校准也没搞定。

于是,照例把所有程序段都屏蔽,只留下RTC和LCD显示。问题依旧。

用低功耗Timer试,问题依旧。

用正常的Timer,高速晶振HFRCO,虽然也是内部RC,但是却正常。

说明是时钟选择的问题。

但是,必须用LF时钟啊,要不然,没法低功耗应用。

把EM2低功耗模式取消,还是没解决。

简单的问题又搞了几天。

然后,想到了校准系数。把校准系数故意写个特别大的值,写到LFRCO,即内部RC时钟内,然后启用外部的XO晶振。

测下来,秒表差的更大了,说明校准系数实现功能了。同时也说明,外部晶振压根没使能,还是用的内部RC。

于是,继续发贴问,查资料,毫无所得。

偶尔灵光一现,想起来,会不会是LCD初始化时,出了问题。

然后转到LCD初始化,一看,果然是。LCD初始化是从官方LCD例程复制过来的,而复制过来时,时钟的初始化是放在LCD初始化里面的。

然后就是LCD初始化时,又重新把时钟选择到了内部RC,LFRCO。结果当然就是外部LFXO,肯定不使能。

然后把LCD的时钟、分频等复制到了CMU的初始化里面。搞定。

都是粗心大意惹的祸啊。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值