RH850 MCU的RTC(实时时钟)采用BCD(二进制编码的十进制)编码格式,支持闰年自动识别,并具有秒、分、时、日、周、月、年的进位功能。其中,秒和分为60进位,时为12或24进位,周为7进位,日根据月份不同为28、29、30、31进位,月为12进位,年则为00~99年。
近期,我们在使用瑞萨MCU RH850的RTC时遇到了一个计时进位异常问题。通过UART打印时间变量时,发现秒和分的进位并非预期的60进位,而是错误地表现为90进位。这一现象引起了我们的关注。
然而,使用仿真器直接监视RTC内部的SEC、MIN等寄存器时,却发现它们在达到0x59后正常进位,这表明RTC本身的计时功能并无问题。
仔细观察后,我们发现了一个关键规律:当秒数超过09后,显示值会直接跳跃到16,然后继续递增。这一现象表明,问题可能出在数据格式的转换上。由于RTC内部采用BCD编码格式,而我们在通过UART输出到串口调试助手时将其当作十进制数据处理,导致了显示上的偏差。
针对这一问题,我们对UART的输出处理格式进行了相应修改。经过调整后,串口调试助手上显示的时间终于恢复正常,验证了我们的分析是正确的。
综上所述,RH850 MCU的RTC内部寄存器采用独特的BCD编码格式,这要求我们在处理相关数据时必须特别注意格式转换。否则,很容易引发类似的误解和问题。