LPC17XX RTC 跑偏分析

I.问题现象

根据生产反馈,生产返工的仪表中有8台仪表发生“时间不准”的现象,后续又出现两个批次,一次5台,一次9台的情况。
第一批次8台
1、2台仪表是由于电池失效造成的断电时间无法保存,更换电池后进行老化拷机24小时,走时正常。
2、1台重新校时老化拷机24小时快1分钟,放置1个月(2月10日3月11日)快5分钟,再放置2天(3月11日3月13日)仍然快5分钟。平均1天跑偏10s属于正常。
3、1台重新校时老化拷机24小时运行正常,放置1个月(2月10日3月11日)慢2分钟,再放置2天(3月11日3月13日)反而快2分钟。与其它表现象差异较大待继续观察分析。
4、2台重新校时老化拷机24小时分别慢6、7分钟,拆除电池后重新校时静置一天后运行正常,放置1个月(2月10日~3月11日)慢2、 4分钟,再放置2天(3月11日~3月13日)仍然慢2、5分钟。平均1天跑偏4、8s属于正常。
5、2台一天跑偏32分钟的仪表(2674)和4分钟的仪表(2694)在研发中心进行了实验,校表后静置一天,时间依旧跑偏32分钟和4分钟。跑偏32分钟的仪表(2674)更换新CPU芯片后时间运行正常,将问题芯片更换至跑偏4分钟的仪表(2694)后也运行正常。将问题芯片各自换回原来的仪表中,时间运行正常均为发生原来跑偏32分钟和4分钟的现象。
第二批次5台
1、1台晶振测量不到,时间不运行。该问题为晶振损坏。
2、1台正常
3、3台随时间累积,跑偏时间持续成比例增大。
第三批次9台
1、7台随时间累积,跑偏时间持续成比例增大。
2、2台偏差若干小时的仪表再次校时比对后运行正常。

II.问题分析

首先检查了仪表的晶振,并更换晶振保证时钟源无问题。通过示波器观察震荡频率无问题,也不存在晶振和芯片匹配的问题。
之后更换了新的CPU,仪表走时准确。之后将问题CPU更换至另一台问题仪表中走时依旧准确,最后将两块仪表CPU还原,走时依旧准确。校表静置24小时候时钟误差如下:
焊除掉电后供RTC运行的电池管脚,对RTC时钟进行重新初始化,走时准确了说明是RTC内部寄存器问题。
在这里插入图片描述
结论:24小时快32分钟现象无法复现。

1、晶振问题,原理图如下:
在这里插入图片描述在这里插入图片描述
通过示波器观察,晶振频率正常,波形正常,输出略有畸变。
18脚波形
在这里插入图片描述在这里插入图片描述
16脚波形

2、芯片内部原理
从RTC时钟域的总体设计是由外部晶振经过处理后得到1Hz时钟进行RTC走时,除一台仪表反馈时快时慢的现象外,其余各仪表均为固定偏差,可能是该1Hz芯片有偏差。区别于其它时钟芯片均有秒脉冲引脚可以测量精度,片内资源无法测量。后续发现1Hz信号可以通过软件设定寄存器CLKOUTCFG为0100选择RTC震荡器作为CLKOUT的时钟源输出,未测试。
在这里插入图片描述
芯片有一个校准寄存器,描述如下。阅读资料后是调节外部时钟频率的,但通过示波器观察我们的外部晶振比较准确无需调整,那么是否理解有误或者有其它校准1Hz信号的方法,希望与芯片厂家技术人员和同事进行探讨。
3、初始化过程校准
RTC初始化源代码如下所示,
在这里插入图片描述
其中时钟控制寄存器CCR被初始化为0x01,其中位4为0,如下所示的寄存器状态表示校准计数器使能并开始计数。
在这里插入图片描述
校准寄存器如下所示,未被初始化,并且复位值为NC相当于复位不初始化,如果不操作那么将是一个随机数。该寄存器是用来对晶振进行补偿的,当达到计数器的值时RTC计时将增加1秒或者减少1秒。
该值范围为0~0x1FFFF,若该值较小则在很短的时间内会多计或者少计1秒,造成RTC走时不准,逆向校准造成计时慢,反之则快。
RTC电池供电的时候该值保持不变,断电后会再次产生一个随机值,这个解释了拆除电池或者更换CPU后时间走时准确的现象。
在这里插入图片描述
对生产筛查出来走时不准确的9块仪表,通过JLink读出该寄存器的值并与不准时间进行比较,符合实际情况,如下表所示。
寄存器CALDIR为1表示逆向校准即为慢,0表示正向校准即为快
寄存器CALVAL值为校准值,表示多少秒校准一次。每天偏差[(24 * 60 * 60 ) / CALCAL]秒
更新程序后的由于晶振为20~100PPM,一天24 * 60 *60 = 86400秒,误差最多1.728~8.64秒符合设计需求。

在这里插入图片描述
拟将初始化代码修改为如下,同系列产品NTS-240 V1.20; NTS-240GS V1.20; NTS-130/230 V2.0均需要更新该代码。同时可以论断其偏差值固定,在电池有电的情况下,或者供电情况下的仪表该寄存器固定,质检合格每日走时合格的仪表走时将一直准确,偏差固定。
在这里插入图片描述

III.解决方法

1、现场运行的仪表可暂不处理,运行分时计费的系统有通讯管理机15分钟进行校时,时间跑偏对系统无影响。无后台运行的现场存在时钟跑偏的隐患(如江西深农市场),需确认时钟运行情况,必要时可以进行在线升级更新代码。
2、调试完成并质检走时合格的仪表,电池供电后寄存器值保持不变,走时偏差固定。但存在电池失效并且仪表断电的情况下,再次运行仪表后寄存器将会更新一个新的随机数,如果该值较小则走时误差将较大。(该类仪表无法管控使用场景,所以判定在库所有产品均需要升级代码,升级代码后上电检查是版本号确认升级成功)
3、烧录完成未调试的仪表必须在代码变更后对程序进行在线升级或者重新烧录,未烧录的仪表烧录变更后的程序,其余生产流程不变。

IV.总结和建议

1、初始化寄存器需要格外谨慎,对每位的含义均需要对照器件手册进行一一确认。
2、开发阶段除功能实现外,对性能和批量生产发生的问题需要仔细分析。
3、同系列产品NTS-240 V1.20; NTS-240GS V1.20; NTS-130/230 V2.0均存在该问题,需要修改代码。
4、建议在通讯地址列表中预留位置,可以读写芯片固定内存地址的值,这样不需要进入仿真调试模式就可以读写芯片寄存器的值,方便测试和排查问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值