STM32的晶振,时钟稳定性要重视!!!

来源:互联网 发布:网络综合布线视频 编辑:程序博客网 时间:2024/05/14 00:28

最近看了不少网上网友的应用案例,在STM32晶振问题上不少都栽了跟头。我自己也碰见过一次。就是电容值搞错了。

ourdev有网友说:他的设备隔几天系统就出问题,系统时钟变慢。

----------------------------------------有网友说:国产的晶振,我们用在产品里吃过很多亏。发出去几百个货(出厂都检验合格),到客户那里几个有时就不起振了(几个月后),后来改用进口的,从此不出问题了。哎!

---------------------------------------有网友说:
第一次遇到是忘了焊接22P的电容,板子可以工作,但是运行速度慢,但是晶振起振了,示波器看波形有刺,想必是STM32认为外部晶振信号不好,自己用了内部的时钟,焊上22P电容,波形变好,板子正常工作;

第二次是装在机器里面的板子,突然也是变慢了,以为是电源烤坏了晶振,因为电源比较热,整机是全密封的,拆下晶振重新焊一个,OK,再没出过问题。

所以我认为晶振还是关键,STM32对晶振应该是有比较高的要求的,千万不要吝啬晶振上的成本。
-----------------------------------有网友说:
楼主的现象我也遇上过,可能是8M晶振失效或虚焊了,初始化时采用了内部时钟,慢了不少。
--------------------------------有网友说:
32.768晶振的负载电容类型需要 6P的,最好用4脚封装那种灰黑色的。
另外,如果是 RTC慢,就是32.768的问题。

如果是系统忽然变很慢,就是HSE部分,8M的那个有问题。
STM32 的自恢复能力还是很强的。

---------------------------21IC有yewuyi 网友说:
国内量产型低价晶体,尚不能做到真正的5PPM,标5PPM,其实都是10PPM以上的。

------------------21IC网友IJK:
给STM32配6PF的32768晶振,当然用官方推荐的最好,官方推荐了:Epson、KDS和JFVNY,JFVNY是北京晶宇兴公司的晶体。
STM32的官方开发板用的就是JFVNY的32k晶体。

--------------------------有网友说:

21IC的ispmcu网友也说他搞ISP下载时候,也有时候一次搞不成功,两次上电才OK。


-------------------------ourdev网友:

31楼的情况碰到过,原因是负载电容焊错了,换了就好了。当时不小心焊上了0.1uF的,导致无法起振,自动启用内部的晶振,所以也就是楼主说的慢了好几倍,呵呵,换了正确的电容后,就一切正常,没有出现过问题。
如果31楼换了晶振电容后,仍然有问题的话,可能要考虑是否是电源噪声,电路板布局等的因素了


-------------------------------网友:

我用STM32,启动时候如果检测不到外部晶体 就让他抱错停止,没有让他自动切换内部震荡......

网友:

国产晶振,这几年越来越差,是不争的事实。我现在用STM32,就出过几次晶振问题。一次是国产晶振不耐震动,成品运输过程坏了不少,还以为是芯片问题,吓出一身冷汗,哪采购了可不少的量。一次是用了国产晶振后,总线的频率有误差,外设工作不正常。这两个都是换了晶振解决。
还有一次比较怪异,做样品有10张板,就有一张的晶振焊下去是不起震的,其他的都没问题,该换过的都换过,很怪异,后来也没深究。不知和LZ的原因有没有关系。
传统的51工作频率较慢,所以用劣质一点的晶振,工作还过得去。STM32要是跑72M ,晶振的误差就很可观了。所以什不能省晶振
--------------------------------------网友:
既然楼主不回来结贴,我来结贴,我也遇到这种情况,其实就是外部晶振没有起振,而使用了内部晶振。我是一个搞软件的,对硬件不熟悉,我仔细查看了一下晶振的配置代码,问题在选择外部晶振后,要有个延时时间等待外部晶振起振。而这个延时时间是ST公司直接在固件库里设定了,就是等待了128个指令周期。也许ST公司认为在这么长的等待时间下,晶振应该可以完全起振了。如果你把这个等待时间改的长一点就可以了,如果还不可以,那就是晶振太差了,或者其他原因,自己找吧。
要改那个等待时间,打开stm32f10x_rcc.c
将 #define HSEStartUp_TimeOut        128     
里的128改成一个大一点的数,我是改成了2000.
希望你们可以解决。
博主注明】这个和我当时的方案是一样的。即便电容搞错了,将超时时间延长也是可以的。。。。但是一定要认为这是不正常的情况,想想办法在产品上体现出来,例如用灯。
=========================------------------------------有网友:

你可以看一下代码,大多数人开始接触STM32F10x时,差不多都是使用的ST公司提供的代码例程,而在时钟配置那里有一句代码是
if(HSEStartUpStatus == SUCCESS) 就是如果外部晶振起振成功才会进行锁相环的设置,那么如果外部晶振没有起振成功也就不会设置锁相环了,这样系统选择内部晶振后,因为没有对锁相环设置,所以你就会感觉到系统一下子慢了很多。实际上ST提供的这个例程是不够严谨的,只对条件成立进行了处理,而没有对条件不成立进行相应的处理,才会出现这些问题。
对于内部晶振来说最大的缺点就是不够稳定,在出厂时是在25°C下校准的,如果工作环境很恶劣的话,不知道漂到哪去了,但是ST仍然给我们提供了校准的办法,就是修改时钟控制寄存器,但是好像很少有人这么做。所以如果你要用到通信功能的话,为了保证波特率稳定,必须要用外部晶振。

看样子对STM32的时钟的稳定性问题真是要注意。

----------------------------------------------------网友:

我已经用STM32F103C8T6设计了款工业级产品,使用了进口有源晶振,价格相当于片子2/3,体积和MCU差不多大。高低温、静电、EFT、跌落、机械振动都测试过了,没有问题。为了你的产品量产后不纠结,大家都用有源的吧!!

不过另一款产品年用DSP F28027的板子用的是小日本NDK的无源晶体,按照PDF配置了负载电容,高温85°上电8小时,也没有发现有什么问题。

我觉得时钟稳定性和布板有重大关系,有源晶振的线路距离CPU要尽量短,同时两侧的覆铜要密集过孔接地。

无源晶体的两根线要尽量紧靠、对称,离CPU距离要尽量短,负载电容距离晶体要尽量近,最好不要用49S或者49U封装,用7050、5032的贴片好些。实在必须用49S或者49U的晶振,它的壳体必须用焊锡接地.


0 0
原创粉丝点击