实际测试电路如附图所示,实际使用电池为镍氢充电电池,电压为3.6V。<br /><br />大家问题的焦点是:LPC213x内部RTC在CPU处于掉电模式或者芯片未上电时,使用后备电池和外部晶振能否正常工作。此文不讨论如何为备用电池充电的问题,这属于外围电路设计。<br /><br />//时钟初始化函数<br /><br />void RTC_Ini(void)<br /><br />{<br /><br />//PREINT = Fpclk / 32768 - 1;// 使用内部时钟,设置基准时钟分频器<br /><br />//PREFRAC = Fpclk - (Fpclk / 32768) * 32768;<br /><br />YEAR = 2004;// 初化年<br /><br />MONTH = 11;// 初化月<br /><br />DOM = 1;// 初化日<br /><br />CIIR = 0x01;// 设置秒值的增量产生一次中断<br /><br />ILR= 0x03;<br /><br />CCR= 0x11;// 启动RTC,使用独立时钟源<br /><br />VICIntSelect = 0x00;<br /><br />VICVectCntl3 = 0x20 | 13;<br /><br />VICVectAddr3 = (int)RTC_Int;<br /><br />VICIntEnable |= (1 << 13);<br /><br />}<br /><br />这个RTC初始化函数摘自一个使用LPC213x内部RTC作日历时钟的例子。<br /><br />在初始化代码中,只设置了年月日寄存器,没有设置时分秒寄存器,这样在芯片上电时如果RTC正常工作的话那么其时分秒是正确的,而年月日会恢复到初始值。<br /><br />实际测试结果是,设置好当前年月日、时分秒,然后拔除开发板电源后,再上电时,时钟的年月日恢复到初始值,时分秒走时正确。无论断电时间长短,测试结果相同。<br /><br />也就是说,芯片掉电后内部RTC使用外部电源和晶振依然可以工作,而且芯片复位并不会影响RTC的工作。<br /><br />内部RTC使用外部电源供电时需要注意:<br /><br />=============选择外部晶体振荡器为RTC时钟源=============<br /><br />如果要使用内部RTC,那么Vbat引脚必须有电源供电。如果不使用内部RTC,那么将该引脚接地。<br /> |
|