为什么stm32的rtc时钟用仿真时间不准

- amoBBS 阿莫电子论坛
后使用快捷导航没有帐号?
现在就登录 - amoBBS 阿莫电子论坛 手机版
立即使用手机访问,获得极速移动体验
您可以通过手机快速访问论坛版块及管理收藏夹,随时随地访问自己最爱的内容
看帖及回帖更快速
通过手机版,可以快速的访问您需要阅读的主题,并可以快速的发布新帖及回复
站内短信实时收发,与短信另一端的朋友进行单人或多人聊天
节省流量与获得优质手机体验并存
阿莫电子论坛, 原"中国电子开发网"温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
乐观,自信,幽默。
LOFTER精选
更有阴谋论者提出让人啼笑皆非的解释——STM32的RTC晶振不起振是ST与晶振厂商串通后故意搞出来的,目的是提高某晶振厂商高端晶振的销量。。。最近做的几块板子也用到了STM32的RTC,前后两版一共做了大概6片,幸运的是并未遇到晶振不起振的现象。而我采用的是3毛钱一个的普通晶振,并未选用传说中低负载高精度晶振。。。后来在另外一片实验性质的板子上首次遇到了晶振不起振的问题,而且做了2片都不起振,这才让我意识到这个问题的严重性。从上述现象来看,我认为对RTC晶振起振影响最大的因素应该是PCB的布线。但是遇到问题时通常是PCB已做好,甚至已经做了几百块,没有回头路了。于是大家更关注的问题似乎就是“如何补救”了。在网上搜索一下,你就会发现世界是如此美好!每个人的经验和建议都不一样,甚至是完全相反的!这种现象告诉我们,除了PCB布线,对晶振起振影响最大的似乎不是电气参数,而是另外一种不可忽略的因素——人品!各种相互矛盾的经验也告诉我们,导致晶振不起振的原因是多种多样的,也是因“人”而异的。也许,我们无法找到一个绝对有效的经验一举解决STM32的RTC晶振这个让人头疼的问题,但我们可以从各种经验中找到一些线索,为最终摸索到适合自己这块板子的解决方案提供一些帮助和提示。如果晶振不起振,尤其是你已经使用了传说中的爱普生6pF晶振后还是不行,也许你应该尝试对以下几个方面排列组合,找到适合你这块板子的,更容易起振的方式。下面就罗列一下可能影响RTC晶振起振的因素1. 晶振的品牌和负载电容大家貌似都知道要用6pF的晶振,但我发现其实12.5pF的也可以用。大家都说KDS日本原装的好,我那个3毛钱的国产晶振貌似也没啥大问题。。。2. 晶振外接的匹配电容有人说6pF的晶振要配6pF的电容。但有经验公式指出这个电容的值应该是晶振本身负载电容的两倍,6pF的晶振应该配10pF的匹配电容,当然12.5pF的就应该配20pF或者22pF的电容了~电容值不匹配可能造成晶振不起振。更神奇的是,有人指出去掉外接的匹配电容会使晶振起振!这似乎没啥道理,但在我的板子上,有且仅有这个方案是可行的!!!3. 晶振并联的反馈电阻晶振可以并联一个高阻值的电阻,据说这样更容易起振。。。这个电阻的阻值有人说是1MΩ,有人说是5MΩ,也有人说是10MΩ,,,当然也有人说不能并联这个电阻,并联了反而不起振4. XTALout到晶振间串联电阻这种做法是官方的应用笔记指出的,而且给出了这个电阻的计算公式。对这个电阻的的必要性也是众说纷纭,同样存在两种矛盾的说法,即必须要有这电阻,否则不起振。还有一说不能有这个电阻,否则不起振。。。从官方的应用笔记来看,这个电阻的主要作用是保护晶振,以防晶振发热。由此看来这个这个电阻似乎并非影响晶振起振的主要因素,甚至可能让晶振更难起振。5. 晶振的外壳是否接地这个就不用说了吧。。。晶振的外壳是金属的,做封装时可以把那个焊盘做成机械焊盘而悬空,也可以做成电气焊盘,然后连接到GND。对这个说法同样存在争议,有人说外壳必须接地,也有人说接地后反而不起振。6. 提高Vbat引脚的电源质量这种说法是有一定道理的,因为RTC部分是由Vbat的来供电的。有人说Vbat引脚对电源质量要求比较高,如果纹波较大可能会影响晶振的起振。更有人说反而需要一些噪声,激励晶振产生正反馈从而顺利起振(本人对此表示呵呵)。。。但不管怎样,提高电源质量对大家都是好事~7. 晶振周围的环境有人指出应该仔细清洗RTC晶振周围的电路,甚至是使用环氧树脂胶将晶振密封起来。这种说法得到了圈内著名的“香水城”版主的支持,看来也是有相当多的事实依据。8. 减少晶振焊接时加热的时间有人认为长时间加热晶振进行焊接会对晶振本身带来影响,却不是彻底损坏晶振,从而使得晶振不容易起振。。。这种说法我没验证过,个人表示怀疑。。。9. 焊接的焊锡量这个种说法感觉就更不靠谱了,但真的有人在晶振引脚上多加了点焊锡晶振就能起振了。从原理上说,多加点焊锡确实会改变晶振和PCB间的寄生参数,但我感觉影响微乎其微。。。可能晶振已经徘徊在临界值的边缘了,这种做法才会起到一点作用。10. 使用有源晶振个人认为这是一劳永逸解决晶振不起振问题的不二法门!21IC的香水城版主对STM32的RTC晶振不易起振的原因做了一个解释,即出于低功耗的考虑,STM32对晶振的驱动功率比较低,所谓“好鼓不用重锤”,一些差的晶振就需要更高的驱动功率,所以不易起振。我认为这种解释是有道理的。使用有源晶振则不存在驱动功率的问题,如果问题确实是因为驱动功率造成的,那使用有源晶振毫无疑问可以彻底解决问题。而且目前网上还没看到说有源晶振不起振的求助帖。但是有源晶振通常比较昂贵,甚至要比一颗外置的RTC芯片还要贵。至于这个问题的取舍,就要看各位看官自己的想法了。
阅读(3069)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'STM32 RTC(实时时钟) 32.768kHz晶振起振指南',
blogAbstract:'STM32的RTC晶振经常出现不起振的问题,这已经是业界共识了。。。很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了”更有阴谋论者提出让人啼笑皆非的解释——STM32的RTC晶振不起振是ST与晶振厂商串通后故意搞出来的,目的是提高某晶振厂商高端晶振的销量。。。最近做的几块板子也用到了STM32的RTC,前后两版一共做了大概6片,幸运的是并未遇到晶振不起振的现象。而我采用的是3毛钱一个的普通晶振,并未选用传说中低负载高精度晶振。。。后来在另外一片实验性质的板子上首次遇到了晶振不起振的问题,而且做了2片都不起振,这才让我意识到这个问题的严重性。从上述现象来看,我认为对RT',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:3,
publishTime:7,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'乐观,自信,幽默。',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}STM32学习笔记(17)-RTC实践_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
4页1下载券4页免费4页免费16页免费21页免费 5页免费32页1下载券3页免费11页1下载券4页免费
喜欢此文档的还喜欢8页免费19页免费152页2下载券44页免费87页免费
STM32学习笔记(17)-RTC实践|S​T​M2​学​习​笔​记​(7​)​-​R​T​C​实​践
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢rtc RTC stm32时钟,具有一定的功能,适合初学者 software engineering 软件设计/ 工程 182万源代码下载-
&文件名称: rtc
& & & & &&]
&&所属分类:
&&开发工具: Others
&&文件大小: 766 KB
&&上传时间:
&&下载次数: 41
&&提 供 者:
&详细说明:RTC stm32时钟,具有一定的功能,适合初学者-RTC stm32 clock, has a certain function, suitable for beginners
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&rtc\code\main.c&&...\....\stm32f10x_it.c&&...\....\stm32f10x_it.h&&...\lib\stm32f10x_bkp.c&&...\...\stm32f10x_flash.c&&...\...\stm32f10x_gpio.c&&...\...\stm32f10x_lib.c&&...\...\stm32f10x_nvic.c&&...\...\stm32f10x_pwr.c&&...\...\stm32f10x_rcc.c&&...\...\stm32f10x_rtc.c&&...\...\stm32f10x_usart.c&&...\..st\cortexm3_macro.lst&&...\....\rtc.map&&...\....\STM32F10x.lst&&...\....\stm32f10x_vector.lst&&...\obj\cortexm3_macro.d&&...\...\cortexm3_macro.o&&...\...\ExtDll.iex&&...\...\main.crf&&...\...\main.d&&...\...\rtc.hex&&...\...\rtc.htm&&...\...\rtc.lnp&&...\...\rtc.sct&&...\...\rtc.tra&&...\...\STM32F10x.o&&...\...\stm32f10x_bkp.crf&&...\...\stm32f10x_bkp.d&&...\...\stm32f10x_bkp.o&&...\...\stm32f10x_flash.crf&&...\...\stm32f10x_flash.d&&...\...\stm32f10x_flash.o&&...\...\stm32f10x_gpio.crf&&...\...\stm32f10x_gpio.d&&...\...\stm32f10x_gpio.o&&...\...\stm32f10x_it.crf&&...\...\stm32f10x_it.d&&...\...\stm32f10x_it.o&&...\...\stm32f10x_lib.crf&&...\...\stm32f10x_lib.d&&...\...\stm32f10x_lib.o&&...\...\stm32f10x_nvic.crf&&...\...\stm32f10x_nvic.d&&...\...\stm32f10x_nvic.o&&...\...\stm32f10x_pwr.crf&&...\...\stm32f10x_pwr.d&&...\...\stm32f10x_pwr.o&&...\...\stm32f10x_rcc.crf&&...\...\stm32f10x_rcc.d&&...\...\stm32f10x_rtc.crf&&...\...\stm32f10x_rtc.d&&...\...\stm32f10x_rtc.o&&...\...\stm32f10x_usart.crf&&...\...\stm32f10x_usart.d&&...\...\stm32f10x_vector.d&&...\...\stm32f10x_vector.o&&...\proj\main.crf&&...\....\main.d&&...\....\main.o&&...\....\rtc.lnp&&...\....\rtc.map&&...\....\rtc.Opt&&...\....\rtc.plg&&...\....\rtc.sct&&...\....\rtc.tra&&...\....\rtc.Uv2&&...\....\rtc_Opt.Bak&&...\....\rtc_Target 1.dep&&...\....\rtc_Uv2.Bak&&...\....\STM32F10x.lst&&...\....\STM32F10x.o&&...\....\stm32f10x_flash.crf&&...\....\stm32f10x_flash.d&&...\....\stm32f10x_flash.o&&...\....\stm32f10x_gpio.crf&&...\....\stm32f10x_gpio.d&&...\....\stm32f10x_gpio.o&&...\....\stm32f10x_it.crf&&...\....\stm32f10x_it.d&&...\....\stm32f10x_it.o&&...\....\stm32f10x_nvic.crf&&...\....\stm32f10x_nvic.d&&...\....\stm32f10x_nvic.o&&...\....\stm32f10x_rcc.crf&&...\....\stm32f10x_rcc.d&&...\....\stm32f10x_rcc.o&&...\....\stm32f10x_rtc.crf&&...\....\stm32f10x_rtc.d&&...\....\stm32f10x_rtc.o&&...\....\stm32f10x_usart.crf&&...\....\stm32f10x_usart.d&&...\....\stm32f10x_usart.o&&...\startup\cortexm3_macro.s&&...\.......\stm32f10x_vector.s&&...\code&&...\lib&&...\list&&...\obj&&...\proj
&[]:和说明完全不符
&近期下载过的用户:
&&&&&&&&&&&&[]
&相关搜索:
&输入关键字,在本站182万海量源码库中尽情搜索:
&[] - stm32开发使用rtc做时钟,能够实时在LCD上显示时间
&[] - stm32不完全手册修订版 有用的到的可以看一下
&[] - 基于stm32处理器与TFT彩屏的一个实时时钟界面的工程,基于ucos和gui的
&[] - rtc模块的当前时间通过串口传送给PC机的超级终端显示,若RTC模块还未设置时间则通过超级终端进行设置。RTC秒中断每发生一次,发光二极管LED1闪烁一次。
&[] - stm32103
中文资料,fsmc功能很灵活强大
&[] - stm32 rtc实用源码
&[] - stm32的rtc程序,开发软件是keil4STM32的RTC内部时钟偏差太离谱了 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 7480|回复: 5
STM32的RTC内部时钟偏差太离谱了
主题帖子积分
新手上路, 积分 29, 距离下一级还需 21 积分
新手上路, 积分 29, 距离下一级还需 21 积分
我使用STM32F103VC,为了节省成本,把32768的RTC外部时钟去掉了,改为内部时钟HSE/128。 我使用的主晶振是8MHz的。HSE是1分频,所以也是8M. 所以RTCCLK=8M/128=64KHz。 设置RTC预分频值为65535,得到秒计数。但是实际测量发现每分钟居然慢2.8秒左右。这个有点离谱了。这个是实际情况吗?还是我的设置配置有问题? 请大家指教!!谢谢
主题帖子积分
RE:STM32的RTC内部时钟偏差太离谱了
这个不准确,确实不太好。我建议你使用外部晶振,不要使用这个。我给你一段代码,我实验过了。我的是12M晶振。
void RTC_Configuration(void)
&&RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
&&PWR_BackupAccessCmd(ENABLE);
&&BKP_DeInit();
&&RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);
&&RCC_RTCCLKCmd(ENABLE);
&&RTC_WaitForSynchro();
&&RTC_WaitForLastTask();
&&RTC_ITConfig(RTC_IT_SEC, ENABLE);
&&RTC_WaitForLastTask();
&&RTC_SetPrescaler(93750); /* RTC period = RTCCLK/RTC_PR = (93.750 KHz)/(RTC+1) */& &
&&RTC_WaitForLastTask();
主题帖子积分
新手上路, 积分 55, 距离下一级还需 -5 积分
新手上路, 积分 55, 距离下一级还需 -5 积分
回复:STM32的RTC内部时钟偏差太离谱了
回复第 2 楼 于 06:11:20发表:
这个不准确,确实不太好。我建议你使用外部晶振,不要使用这个。我给你一段代码,我实验过了。我的是12M晶振。
void RTC_Configuration(void)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_SetPrescaler(93750); /* RTC period = RTCCLK/RTC_PR = (93.750 KHz)/(RTC+1) */& &
RTC_WaitForLastTask();
你说32.768改 12MHZ 吗?
如果使用CPU内部晶振停电就不动了....
主题帖子积分
新手上路, 积分 5, 距离下一级还需 45 积分
新手上路, 积分 5, 距离下一级还需 45 积分
回复:STM32的RTC内部时钟偏差太离谱了
所以RTCCLK=8M/128=64KHz? 设置RTC预分频值为65535?
8/128=62500吧?
主题帖子积分
新手上路, 积分 189, 距离下一级还需 -139 积分
新手上路, 积分 189, 距离下一级还需 -139 积分
回复:STM32的RTC内部时钟偏差太离谱了
  最近,我可能闲散了,工作不多,我泡一杯茶,大概就是七八十度。我从来没有看到茶的生命。不经意间,我凝神关注,原来茶也有生命。
  今天泡一杯茶,我仔细的观看了她的美丽。当我把水倒进茶杯,我看到了神奇的茶韵。以前从来不懂,也是从苏东坡和佛印的玩笑中才逐渐明白。当你心中看到世界是什么,那你的世界就是你看到的。
主题帖子积分
金牌会员, 积分 2176, 距离下一级还需 824 积分
金牌会员, 积分 2176, 距离下一级还需 824 积分
回复:STM32的RTC内部时钟偏差太离谱了
楼主分频数算得不准吧,再有你用8MHZ,系统重启时时间能接上么????
站长推荐 /1
欢迎大家分享基于STM32 Nucleo板的设计方案,社区将提供500-3000元不等的开发经费支持——赶紧来赢取ST MCU社区赞助吧!
300套Nucleo-F072申请名单已公布。
Tel: 3-8056
备案号: 苏ICP备号-2
Powered by

我要回帖

 

随机推荐