STM32_RTC晶振不起振的原因及解决方法

发布者:恬淡如云最新更新时间:2021-04-30 来源: eefocus关键字:STM32  RTC  晶振不起振 手机看文章 扫描二维码
随时随地手机看文章

STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了。。。很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了”


更有阴谋论者提出让人啼笑皆非的解释——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. 使用有源晶振


个人认为这是一劳永逸解决晶振不起振问题的不二法门!有人对STM32的RTC晶振不易起振的原因做了一个解释,即出于低功耗的考虑,STM32对晶振的驱动功率比较低,所谓“好鼓不用重锤”,一些差的晶振就需要更高的驱动功率,所以不易起振。我认为这种解释是有道理的。使用有源晶振则不存在驱动功率的问题,如果问题确实是因为驱动功率造成的,那使用有源晶振毫无疑问可以彻底解决问题。而且目前网上还没看到说有源晶振不起振的求助帖。但是有源晶振通常比较昂贵,甚至要比一颗外置的RTC芯片还要贵。至于这个问题的取舍,就要看各位看官自己的想法了。


关键字:STM32  RTC  晶振不起振 引用地址:STM32_RTC晶振不起振的原因及解决方法

上一篇:STM32各种头文件No such file or directory的解决方法
下一篇:STM32 GPIO的十大优越功能综述

推荐阅读最新更新时间:2024-11-06 12:07

如何开发与存储位置无关的STM32应用?
1、前言 最近有客户询问,能否使用 STM32CubeIDE 在编译时通过设置某个编译选项,让STM32 应用与存储位置无关。这样的优势是能使同一个固件被烧在 STM32 Flash 里的不同位置, 而在系统 Bootloader 里只需要跳到相应的位置就可以正常执行固件代码。客户希望STM32 代码从 Flash 里执行,不复制到 RAM 里;客户希望是一个完整的映像,而不仅仅是其中某个函数做到了位置无关。 2、分析 在嵌入式场景下,不一定有操作系统。即使有操作系统,一般也是 RTOS。一般 RTOS没有一个通用的程序加载器。因此,存储位置无关的需求,在这时可以说无关紧要。但是,如果客户需要进行在线固件更新,例如 IoT 应
[单片机]
如何开发与存储位置无关的<font color='red'>STM32</font>应用?
STM32F10x_RTC秒中断
Ⅰ、概述 RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理,选择RTC时钟源,再进行分频,到达计数的目的。 该文主要讲述关于RTC的秒中断功能,这个功能类似SysTick系统滴答的功能。RTC秒中断功能其实是每计数一次就中断一次。注意,这里所说的秒中断并非一定是一秒的时间,它是由RTC时钟源和分频值决定的“秒”的时间,当然也是可以做到1秒钟中断一次。 本文章提供的实例工程,其实验效果是: 主函数间隔0.5秒LED变化一次; 秒中断一次打印数据 RTC Sec... ; 也就是LED变化一次,串口打印一次数据 RTC Sec... 扩展部分的功能RTC计数:可以实
[单片机]
STM32F10x_<font color='red'>RTC</font>秒中断
STM32串口IAP
让STM32的应用程序能够通过串口在线升级,这就是STM32的串口IAP。要实现串口升级,简单来说,就是给STM32编写一个bootloader引导程序,就想计算机的BIOS一样,在这段代码中接收串口的数据,然后将数据固化到STM32内部指定的flash地址空间中,接着再跑到这段代码执行。 接触过Linux uboot的应该会注意到,除了功能的实现外,bootloader的界面设计也非常重要。通过串口在计算机的串口软件中实现一个简洁的界面,列出bootloader的各项功能,并支持用户选择。实现这样一个人际交互的界面也是一个优秀的bootloader必不可少的一部分。 本文就要讲讲如何设计这个有功能有界面的bootloader程
[单片机]
<font color='red'>STM32</font>串口IAP
STM32 SPI笔记(基于寄存器)
1.说在前面:最近尝试操作VS1053音频模块 使用的数据传输方法使用SPI协议,打算学一下SPI的配置方式 2.SPI 2-1:SPI(Secial Periperal interface),作为四线的通信接口,有着MISO MOSI SCLK和CS MISO:主进从出 MOSI:主出从进 SCLK: 时间信号 CS:片选信号 2-2:CPHA和CPOL CPHA为时钟相位,可以配置为1/0,控制数据的采样方式,设置为0的时候,控制在时钟周期的第一个跳变沿进行数据采集,设置为1的时候在第二个跳变沿进行采集 CPOL为时钟极性,可以配置为1/0,控制空闲状态的时钟极性,设置为0的时候空闲状态为低
[单片机]
<font color='red'>STM32</font> SPI笔记(基于寄存器)
STM32_按键中断
*************************************************************************************************************************************** 开发板 :奋斗STM32 CPU :STM32F103 开发环境:keil uVsion4 *************************************************************************************************************************************
[单片机]
STM32_ BKP备份数据
今天讲解“STM32F103 BKP备份数据”,关于“BKP备份数据”这一块的知识不难,但还是需要注意几点。BKP顾名思义就是备份寄存器(见参考手册),主要用于备份数据使用的。 每天讲解的不仅仅是基础,而是重点,不起眼的重点,容易被人忽视的重点。关注微信公众号“EmbeddDeveloper”还有更多精彩等着你。今天提供并讲解的软件工程,基于前面的软件工程“TIM延时”修改而来。若有疑问,请关注微信公众号获取更多信息。 每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘): https://yunpan.cn/cP7FTUw4XCYNw访问密码 0ebe
[单片机]
STM32_ BKP备份数据
STM32外设资源查询方法,对比C8T6和ZET6
对应不同型号的单片机的外设资源需要找相应的单片机的数据手册,比如STM32F103ZET6数据手册,STM32F103C8T6数据手册. 根据FLASH大小STM32F103ZET6 - 为HD型,STM32F103C8T6 - 为MD型。 STM32F103家族系列芯片外设对比 STM32F103ZET6 外设资源数据手册一览 从上图也可以看到ZET6一共有11个定时器,包括2个高级定时器、4个通用定时器、2个基本定时器…当然还有2个看门狗和1个系统定时器。 再由这个两个图也可以看出TIM1/8是高级定时器、TIM2/3/4/5是通用定时器、TIM6/7是基本定时器。 高级定时器在APB1总线上,通用和
[单片机]
<font color='red'>STM32</font>外设资源查询方法,对比C8T6和ZET6
STM32 通用定时器
STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器。 STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。 STM3 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved