MCU

ADSP-BF533之RTC学习总结B

0
阅读(4040)

RTC本身有专用的电源引脚,当系统电源被关掉时,RTC功能该电源引脚获得电源,从而保存RTC功能在系统断电的时候还能继续工作。

RTC定时器的时钟由32.768 kHz的晶振提供,当预分频器被禁用时,RTC定时器的频率为32.768kHz。当预分频器被启用时,RTC定时器为1 Hz的速率时钟。

通过软件设置是没有办法禁止芯片内部的RTC计数器的,如果一个给定的系统不需要RTC功能,可以通过硬件连接来实现。具体的办法是将RTXI管脚连接到EGND信号、将RTCVDD管脚连接至EVDD信号和让RTXO管脚悬空。

BF533处理器对于RTC功能的实现是通过内部寄存器的设置来实现的。而对于所有RTC寄存器的写操作,除了中断状态寄存器RTC_ISTAT,每次写入的数据都是先保存在缓冲寄存器中,最后在内部1Hz时钟的同步下写入对应寄存器。当对RTC寄存器进行写操作时,RTC_ISTAT寄存器中的写等待状态位将被置1,直到数据真正写入对应寄存器才被清零,而写等待状态位的下降沿也将置位RTC_ISTAT寄存器中的写完成标志位,这时如果有使能RTC_ICTL寄存器中的写完成中断使能位,如下图为RTC_ICTL寄存器的具体内容,最高位即为写完成中断使能位。

下面是对RTC寄存器进行写操作必须注意的三个地方:

1.  所有的写操作在未完成之前如果遇到复位都会失败,所以不要停止SCLK(进入深度睡眠模式)或者移除内部VDD电源直到RTC写操作完全完成为止;

2.  当一个写操作还没完成之前,不要重新进行另外一个写操作,直到前面的写操作完成为止;

3.  当一个写操作还没完成之前,如果对对应的寄存器进行读操作,那将返回写入之前的数据。所以记住在每次执行读写操作之前都要判断写等待状态位的值。

最后说一下RTC的写操作和读操作的注意事项,当对RTC寄存器进行写操作时,最重要的一个概念是写反应时间,因为写操作并不是瞬间就完成的,是由1Hz的时钟来实现同步写入的,所以不是说在任意一个时刻对RTC寄存器进行写操作都能成功,根据官方的文档可知,当在1Hz的上升沿后的990ms内进行写数据操作都能成功地在下一秒将数据写入,但剩下的这10ms就不保证,所以写操作最好是在1Hz事件后进行,这样将保证写入万无一失;而对于读操作,只要直接读取即可,如果在读取之前刚好执行了写操作,而这个写操作还没完成,读取的将是写入之前的数据。