STM32外部高速晶振不起振的故障分析

STM32外部高速晶振不起振的故障分析

一、故障背景

网上售卖的STM32F103C8T6的核心板如图1所示,由于STM32F103C8T6最小系统核心板的采购成本高达20元/块至40元/块,为了降低采购成本,对其STM32F103C8T6的核心板进行抄板,如图2所示,原来的外部高速时钟电路使用的是HC-49S封装的8Mhz晶振,现换成了3225封装的8Mhz晶振。
图1 网上售卖的STM32F103C8T6的核心板
图1 网上售卖的STM32F103C8T6的核心板

在这里插入图片描述
图2 抄板的STM32F103C8T6的核心板

二、故障现象

当抄板的样品做出来后,在测试时程序跑起来之后发现运行的速度慢了很多,有时程序运行过程中会卡死,特别是500ms延时函数整整过了4秒才出现电平翻转。刚开始以为是程序代码的问题,可检查了好几遍都没找到bug,一筹莫展地站在窗边点燃一根香烟,突然想起了是不是高速时钟失去了倍频作用。于是拿起示波器测量外部8Mhz晶振的波形,看到示波器没有捕捉到8Mhz的正弦波,只有100多khz的杂乱波形如图3所示,由此推断出外部8Mhz晶振电路有问题,接着测量8Mhz晶振和两个起振电容都是正常的,从而确定了是外部8Mhz晶振没有起振,STM32自动切换到内部8Mhz晶振没有倍频,导致运行速度变慢。
在这里插入图片描述
如图3 外部8Mhz晶振没有起振的波形

外部8Mhz高速时钟电路如图4所示,起振电容是20pF,一般起振电容很少出问题,怀疑是外部晶振的问题,于是更换了好几个其他品牌商家3225封装的8Mhz晶振,用示波器测量看到波形和图2一样,也是不起振,程序代码运行速度慢。后来飞线接了一个HC-49S封装的8Mhz晶振如图5所示,用示波器测量看到了8Mhz的正弦波如图6所示,说明晶振起振了,此时程序代码运行速度正常。
在这里插入图片描述
图4 外部8Mhz高速时钟电路

在这里插入图片描述
图5 飞线接了一个HC-49S封装的8Mhz晶振

在这里插入图片描述
图6 HC-49S封装的晶振起振的8Mhz正弦波

三、故障分析

找到了问题所在,但是却没想到具体是什么原因引起的,在百度CSDN等平台也没找到原因,自己也没想明白,于是找到做硬件研发的技术大佬请教问题,如图7所示,大佬说是晶振的匹配电容容量有问题(2个起振电容)导致晶振的负载电容过大((2个起振电容的积/和)+2pF-6pF的线路杂散电容,即(C1*C2/C1+C2)+2pF-6pF的线路杂散电容),让我找到这个3225封装的8Mhz晶振的规格书看看负载电容。
在这里插入图片描述
图7 向硬件研发的技术大佬请教问题

网上售卖的STM32F103C8T6的核心板给出的原理图上的匹配电容(起振电容)是20pF,而抄板的板子上用的是22pF,在看了看这个3225封装的8Mhz晶振的规格书上面写着负载电容是10pF,如图8所示。
在这里插入图片描述
图8 3225封装的8Mhz晶振的规格书

四、故障修复

经过大佬的指点,我恍然大悟,找了2个12pF的电容来替换板子上2个22pF的起振电容,再次用示波器测量就看到了8Mhz的正弦波,如图9所示,程序代码也正常运行,问题到此解决。
在这里插入图片描述
图9 更换起振电容后的晶振起振的8Mhz正弦波

  • 11
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值