rtc时钟芯片总是跑快,是怎么回事

RTC实时时钟方案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
RTC实时时钟方案
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢> RTC是什么
  导读:本文主要介绍的是是什么,不懂它是什么东东的童鞋们快来学习一下吧,很涨姿势的哦~~~本文引用地址:1.是什么--简介  ,英文全称:Real-time clock,中文名称:实时时钟,是指可以像时钟一様输出实际时间的电子设备,一般会是集成电路,因此也称为时钟芯片。实时时钟芯片是日常生活中应用最为广泛的消费类电子产品之一。它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准,目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。2.--优点  RTC可以提供稳定的时钟信号给后续电路用。一个没有实时时钟的系统也可以计算实际时间,不过使用实时时钟有以下的优点:  1)消耗功率低(当使用辅助电源时格外重要)  2)让主系统处理更需时效性的工作  3)有时会比其他方式的输出要更准确  全球定位系统的接收器若配合实时时钟,可减少其开机时所需的时间,开机时可将其得到的时间和上次接收到有效讯号的时间相比较。若二者时间相差在几个小时以内,则上次的星历表仍然可以有效,可以正常使用。3.--性能指标  实时时钟一般会有备用电源,当主电源断电或无法使用时,实时时钟可利用备用电源来继续计算时间。它的主要性能指标分为以下几种:  控制方式:二线制,三线制,四线制.  晶振:分内置晶振和外置晶振.  耗流,时间微调范围,时间精度以及是否有TTF功能.4.--功能  RTC最重要的功能是提供到2099年内的日历功能,对于时间来说,无论快慢都是误差,而匹配电容在RTC的外围器件上起到非常重要的作用,它可以适当修正晶体与RTC之间匹配问题。特别是像H1208这样的RTC,把匹配电容内置,这样就可以保证RTC精度的一致性,不会出现有的RTC走得快,有些又走得慢。  拓展阅读:
晶振相关文章:
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一查看: 2823|回复: 6
RTC时间不准确,这是什么原因???
主题帖子精华
中级会员, 积分 361, 距离下一级还需 139 积分
在线时间0 小时
/* Reset Backup Domain */
BKP_DeInit();
/* Enable LSE */
RCC_LSEConfig(RCC_LSE_ON);
/* Wait till LSE is ready */
//等待外部晶振震荡 需要等待比较长的时间
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);
//使用外部晶振32768
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); &
RCC_RTCCLKCmd(ENABLE);
//等待RTC寄存器同步
RTC_WaitForSynchro();
RTC_WaitForLastTask();
//允许RTC的秒中断(还有闹钟中断和溢出中断可设置)
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_SetPrescaler(32767);
RTC_WaitForLastTask();
//写入RTC后备寄存器1 0xa5a5
BKP_WriteBackupRegister(BKP_DR1, 0xA5A5); &
主题帖子精华
中级会员, 积分 361, 距离下一级还需 139 积分
在线时间0 小时
时间能够走,但是会出现误差。
主题帖子精华
在线时间336 小时
回复【楼主位】Chaplin:
---------------------------------
想要准确时间还是用专业的RTC芯片吧,这个才靠谱
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
在线时间103 小时
误差都是有的,但不会有这么严重,一般都得跑几天才看出来,换个晶振试试
主题帖子精华
中级会员, 积分 361, 距离下一级还需 139 积分
在线时间0 小时
回复【4楼】mygod:
---------------------------------
换了个晶振,好点了。
主题帖子精华
中级会员, 积分 361, 距离下一级还需 139 积分
在线时间0 小时
回复【3楼】Badu_Space:
---------------------------------
嗯,还是不要纠结这个问题好。网上也说跟晶振有关,换了一个。虽然还是有点。
主题帖子精华
在线时间336 小时
回复【6楼】Chaplin:
---------------------------------
误差嘛,总会有的,受环境影响是不可避免的,不过在可以接受的范围之内即可
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
Powered byRTC时钟总是跑快,是怎么回事_百度知道
RTC时钟总是跑快,是怎么回事
我有更好的答案
率是正确的?我看有的电路有,用示波器测量,是32.76KHZ,这个晶振的一个引脚通过一个15pf的电容连到GND,请问,晶振的金属外壳是否有连接到GND的必要
高级通信工程师
为您推荐:
其他类似问题
您可能关注的内容
rtc的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 3468|回复: 13
rtc时钟卡死问题请教
我做了RTC时钟
在不供电一段时间之后重新供电,发现会卡死。
把电池拆掉重新装上设定时间又正常了。
不知道问题所在
请高手看下程序。
if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)
& & /* Backup data register value is not correct or not yet programmed (when
& && & the first time the program is executed) */
& && &&&printf(&\r\n\n RTC not yet configured....&);
& & /* RTC Configuration */
& && &&&RTC_Configuration();
& && & printf(&\r\n RTC configured....&);
& & /* Adjust time by values entred by the user on the hyperterminal */
& && & Time_Adjust();
& && & BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);& &
& && &&&/* Check if the Power On Reset flag is set */
& & & & & & & && & if(RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)
& && && & {
& && && && &printf(&\r\n\n Power On Reset occurred....&);
& && && &&&}
& & /* Check if the Pin Reset flag is set */
& && && & else if(RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET)
& && && && && &{
& && && && && &printf(&\r\n\n External Reset occurred....&);
& && && && && &}
& && && && && & printf(&\r\n No need to configure RTC....&);& &
& && &/* Wait for RTC registers synchronization */
& && && && & RTC_WaitForSynchro();
& && &/* Enable the RTC Second */&&
& && && && &RTC_ITConfig(RTC_IT_SEC, ENABLE);
& && & /* Wait until last write operation on RTC registers has finished */
& && && && &RTC_WaitForLastTask();
& & & & & & & &
void RTC_IRQHandler(void)
&&if(RTC_GetITStatus(RTC_IT_SEC) != RESET)
& & /* Clear the RTC Second interrupt */
& & RTC_ClearITPendingBit(RTC_IT_SEC);
& & /* Toggle led connected to PC.06 pin each 1s */
& & GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)));
& & /* Enable time update */
& & TimeDisplay = 1;
& & /* Wait until last write operation on RTC registers has finished */
& & RTC_WaitForLastTask();
& & /* Reset RTC Counter when Time is 23:59:59 */
& & if(RTC_GetCounter() &= 0x)
& && &RTC_SetCounter(0x);
& && &/* Wait until last write operation on RTC registers has finished */
& && &RTC_WaitForLastTask();
void RTC_Configuration(void)
&&/* Enable PWR and BKP clocks */
&&RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
&&/* Allow access to BKP Domain */
&&PWR_BackupAccessCmd(ENABLE);
&&/* Reset Backup Domain */
&&BKP_DeInit();
#ifdef RTCClockSource_LSI
&&/* Enable LSI */
&&RCC_LSICmd(ENABLE);
&&/* Wait till LSI is ready */
&&while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)
&&/* Select LSI as RTC Clock Source */
&&RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);&&
#elif defined& & & & RTCClockSource_LSE&&
&&/* Enable LSE */
&&RCC_LSEConfig(RCC_LSE_ON);
&&/* Wait till LSE is ready */
&&while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
&&/* Select LSE as RTC Clock Source */
&&RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);&&
&&/* Enable RTC Clock */
&&RCC_RTCCLKCmd(ENABLE);
#ifdef RTCClockOutput_Enable&&
&&/* Disable the Tamper Pin */
&&BKP_TamperPinCmd(DISABLE); /* To output RTCCLK/64 on Tamper pin, the tamper
& && && && && && && && && && & functionality must be disabled */
& && && && && && && && && && &
&&/* Enable RTC Clock Output on Tamper Pin */
&&BKP_RTCCalibrationClockOutputCmd(ENABLE);
&&/* Wait for RTC registers synchronization */
&&RTC_WaitForSynchro();
&&/* Wait until last write operation on RTC registers has finished */
&&RTC_WaitForLastTask();
&&/* Enable the RTC Second */&&
&&RTC_ITConfig(RTC_IT_SEC, ENABLE);
&&/* Wait until last write operation on RTC registers has finished */
&&RTC_WaitForLastTask();
&&/* Set RTC prescaler: set RTC period to 1sec */
#ifdef RTCClockSource_LSI
&&RTC_SetPrescaler(31999); /* RTC period = RTCCLK/RTC_PR = (32.000 KHz)/(31999+1) */
#elif defined& & & & RTCClockSource_LSE
&&RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
&&/* Wait until last write operation on RTC registers has finished */
&&RTC_WaitForLastTask();
帮顶,期待高人~我也遇到过实时钟偷停的现象。肯定不是晶振和电容的事,没办法后来加后台校时了
用负载电容为6P的晶振
回复【2楼】coslight_dt 年少轻狂
-----------------------------------------------------------------------
是每次都这样的,不是某次。
是不是程序问题啊
大家看下程序啊
你在重新上电后程序没有再次开启时钟!
第二次启动,是否需要等待
先判断一下卡死在什么位置。然后确定一下是软件还是硬件的问题。
回复【5楼】b
-----------------------------------------------------------------------
哦。确实。改改看效果。
回复【5楼】b
-----------------------------------------------------------------------
加上开启这两个的时钟就OK了。谢谢。
竟然没开时钟造成的。
(原文件名:IMG_1015.JPG)
回复【5楼】b
你在重新上电后程序没有再次开启时钟!
-----------------------------------------------------------------------
正解,最好把“//使能RTC和后备寄存器访问 ”也加上
写个程序监测程序卡在哪可以么?
阿莫电子论坛, 原"中国电子开发网"
, 原www.ourdev.cn, 原www.ouravr.com

我要回帖

更多关于 stm32 rtc时钟不准 的文章

 

随机推荐