主题中讨论的其他器件:MSP430FR5994、
我正在开发一个数据记录器、旨在从两个不同的传感器(A 和 B)进行测量并存储它们。 传感器"A"记录频率为1Hz、传感器"B"记录频率为64Hz。 这些值没有标记、只是在以重复模式收集时进行存储"ABBB...ABBB... 等)、因此为了解码数据、模式必须重复而不会失败。 代码使用 RT1PSIFG 来生成用于数据收集和存储的64Hz 中断。 64Hz 传感器的时序很紧凑、但它在大多数时间内都能正常工作(请参阅下文)。
记录器设计为一次运行数月、时钟的精度是一个问题。 32768Hz 手表晶体根据基准进行校准。 晶体通常以大约32ppm 的速度缓慢运行、因此为了补偿 RTCALS 被设定为0并且 RTCCAL 被设定为4 (根据勘误表、+32ppm 的调整)。 精度是正确的。 没有问题。
问题是、每隔64分钟、无故障、数据中会出现干扰、其中64Hz 数据不良、看起来传感器 B 的一个或多个64Hz 测量值缺失。 RTC 校准是第一个可疑事件、因为它是在64分钟间隔内发生的唯一事件。 我已阅读并重新阅读用户指南以了解问题并尝试找到解决方案、但我不太理解、我需要一些帮助。 用户指南的相关章节内容如下:
通过根据 RTCCALS 和定期调整 RT1PS 计数器来完成校准
RTCCALx 设置。 在日历模式中、RT0PS 将标称37268Hz 低频(LF)分频
256倍的晶振时钟输入。 一个64分钟周期具有32768个周期/秒×60秒/分钟×64分钟= 125829120
周期。 因此、频率降低–2ppm (下校准)大约等于添加
每125829120周期额外256个周期(256/125829120 = 2.035ppm)。 这是通过实现的
在64分钟的时间内保持 RT1PS 计数器一个 RT0PS 输出的附加时钟。
类似地、频率增加+4ppm (上校准)大约等于删除512个周期
每125829120周期(512/125829120 = 4.069ppm)。 这是通过递增 RT1PS 来实现的
在一个64分钟周期内、RT0PS 输出的两个额外时钟的计数器。 每个 RTCCALx
校准位导致每64分钟添加256 LF 晶振时钟周期或512 LF 晶振
每64分钟减去一次时钟周期、给出了大约–2ppm 的频率调整或
分别为+4ppm。
如果我理解正确、RT0PS 以128Hz 的频率馈送 RT1PS、因此64Hz 中断每2次从 RT0PS 中触发一次。 为了调整时钟、RT1PS 每隔64分钟被保持以进行多次 RT0PS 计数(创建一个长的1/64"秒、或者它被预先载入一个大于0的值来加速时钟(创建一个短的"1/64"或者一秒)。 在我的情况下、当标称晶体为32ppm 慢时、需要将 RT1PS 预加载为值4 (还是8?) 这将导致2个丢失的中断。 或者以另一种方式、"64Hz RT1PS 中断"在"第二次校准"期间只会触发62次? 这种解释是否正确? 如果不是、我会遗漏什么?
最小调整值为-4/+8ppm。 因此、即使32768晶振恰好在目标上、仍会每64分钟出现一次时序干扰。 对吧? 是否有任何工作可以确保每秒有64个中断?
感谢你的帮助。