单片机stm32F103单片机晶振不起振的原因分析
这是我在做单片机最小系统板时候碰到的问题,之前虽然也做过相似的板子,可是未曾出现过无源晶振不起振的问题。下面是我在遇到问题后的一些检查,排除问题的过程。本人小菜鸟一个,文章中如有错误和不足,还望各位大佬指正和补充。
事情是这样的,本人做了一款32单片机最小系统板(先叫它老大),在老大出来之前的前五个月,我用相同的PCB板焊了一款用在毕设上面,那个是能正常工作的。板上有个小负载,LED灯。想让这个灯闪烁。代码是没有问题的,因为下载到从网上买的单片机是正常工作的。用JLink下载到自己做的板子上也是能下载进去的,但是不工作。怀疑晶振没起振。用示波器测量晶振引脚对地为一个高电平,而控制那个灯亮的管脚一直是高电平。买回来的板子晶振引脚对地为一个正弦波,控制灯的引脚波形为方波。
找到问题出现在板子时钟没起振,到底是时钟电路哪个地方出问题了还未得知。首先想到的是换个晶振,8M的晶振换了(第一次换),换过后,程序烧写进去,复位按键按下,灯不亮。接着考虑晶振旁边的匹配电容的问题,将匹配电容由22pf换成了20pf,仍然是不工作。没想通是为什么。于是将剩余的器件和板子拿出来想焊另外一块对着排查,结果焊接的时候,没控制好力道,把引脚弄弯了,芯片引脚勾肩搭背了,开始谈恋爱了,狂撒一波狗粮。这样肯定不行啊,月老不能乱点鸳鸯谱啊,于是,用热风枪把整个芯片吹下来了,棒打鸳鸯,结果焊盘不愿意了,藕断丝连,板子铜线扯出来了,整个板子废了,老二胎死腹中。
从老二上面拆下来的芯片牺牲的老二

老二挂了,造老三。之前剩余的芯片已经用完了,从师兄那里顺回来一片芯片,老三很快造出来了。制造中的老三,旁边的那个是老大,哈哈~

老三生下来很健康,晶振起振,不过老大和老三除了晶振的匹配电容20pf一样外,晶振和芯片虽说名字一样,但是不是从一个盒子里面拿出来的。于是将老大的晶振换成和老三一样的晶振(第二次换)。在要拆老大的晶振的时候,发现上一次拆的时候造成晶振引脚的一个焊盘断了一半,就是晶振引脚和单片机引脚的连接断掉了。怀疑是这个问题,于是将老大的晶振输入引线上的绿油刮掉一点,用锡焊接在晶振腿上。但是结果却是和之前一样。

老大板子背面的晶振管脚
第二次换晶振,和老三的一样。然而结果是并没有什么用,还是不起振。说明原因不是在这里。最后师兄劝我不要太执念的时候,我走了一步我不太想走的路。换芯片。当时买的芯片是20多元一片,老二已经挂了,如果是老大芯片的问题,又要挂一个芯片。这够我吃上两三顿黄焖鸡了。所以,在拆老大的大脑的时候,内心是不情愿的。但是我想让这个板子能工作,于是又去师兄那里顺手牵羊(自己买的用完了)牵过来一片。
初次焊接上去,下载器找不到芯片,这个问题我知道出在哪,PA13和PA14引脚焊接问题,于是用烙铁再打磨一下。再次下载的时候,程序下载进去了,复位,翠绿色的LED灯闪起来了。利用控制变量法逐一排查,最后查到芯片本身上,至于芯片内部出现了什么问题就不得而知了,也有可能我焊接的时候电烙铁对芯片做了些什么不可告人的秘密,最终导致芯片挂了。
个人对无源晶振不起振的原因总结如下:
1、 晶振质量问题。
2、 晶振的匹配电容的容值不合适。
3、 控制芯片质量有问题。
4、 板子电路有问题。
5、 晶振离芯片距离太远。
最后还是给大家分享些stm32方面相关的资料供大家学习
(零基础电子产品设计)
http://www.makeru.com.cn/live/3727_1388.html?s=45051
从0到1,设计自己的开发板
http://www.makeru.com.cn/live/4034_2016.html?s=45051
(stm32串口应用)
http://www.makeru.com.cn/live/1392_1164.html?s=45051
基于STM32-WiFi智能小车机器人开发实战
http://www.makeru.com.cn/course/details/3008?s=45051
单片机stm32F103单片机晶振不起振的原因分析的更多相关文章
- STM32F103单片机解密资料
STM32F103单片机解密资料下载 一.STM32 32位ARM Cortex MCU 基于ARM® Cortex® M 处理器内核的 32位闪存微控制器STM32产品家族,为MCU用户开辟了一个全 ...
- STM32的RTC晶振不起振的原因及解决方法
STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了.很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了” 更有阴谋 ...
- STM32F103外部晶振由8M变为12M
STM32官方提供的库文件中,HSE(外部高速时钟)默认为8MHz,最高主频为8*9=72MHz,如果将HSE变为12MHz,不修改库文件的话,最高主频则变为12*9=108MHz,最典型的问题就是U ...
- stm32 晶振不起振
1. STM32f103有内部晶振.刚刚上电时,所有Clock都是源于内部晶振,所以当片内没有程序或内部程序没有使能外部晶振时,外部晶振是不会起振的.2. STM32f103有内部复位电路,只有当检测 ...
- STM32F103单片机学习—— 通用定时器
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fengshuiyue/article/details/79150724 本篇重点记录的是STM32F ...
- AVR单片机丢固件原因分析和解决方案
一.硬件方面 除了下面列举的方面,还需要评估下其他措施. 1.电源因素,禁干扰. 只要用廉价劣质的开关电源,不管哪个单片机,都存在EEPROM丢数据和单片机程序丢失的情况. 1.转接板走线,直接接到了 ...
- 关于单片机编程里面调用sprintf死机的解决方法及原因分析
好久之前的做的笔记,这里贴出. char String[100];//直接用数组代替指针即可解决 下面代代码下载至单片机中,发现会出现单片机死机问题 #include "stdio.h&qu ...
- 宏晶STC单片机使用STC-ISP串口烧录失败的原因与解决方法汇总
官方网址: http://www.stcisp.com/q_and_a_stcisp.html 个人小结 芯片:STC12C5A60S2 封装:LQFP-48 晶振大小:SD22.1184M 最小系统 ...
- 换晶振导致stm32串口数据飞码的解决办法
一般来说,stm32f107都是用标配的晶振,比如8MHz. 但是,如果用别的晶振,比如13.56M的晶振,那串口接收还正常吗? 根据试验结果,很可能会飞码.比如说用串口助手发送的是0x35,但是在串 ...
随机推荐
- 剑指 Offer 60. n个骰子的点数
剑指 Offer 60. n个骰子的点数 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n ...
- 如何写出安全又可靠的PHP脚本
前言 咔咔目前所做的项目是一个saas系统,在开发新功能之后,需要为用户角色添加相应的权限,这时整个系统的所有用户都需要添加相应的权限. 因为以前系统的缺陷现在只能用脚本来处理这些工作,所以接下来咔咔 ...
- 一起学习PHP的runkit扩展如何使用
这次又为大家带来一个好玩的扩展.我们知道,在 PHP 运行的时候,也就是部署完成后,我们是不能修改常量的值,也不能修改方法体内部的实现的.也就是说,我们编码完成后,将代码上传到服务器,这时候,我们想在 ...
- Linux系列(9) - whoami和whatis
whoami 作用:当前你登录的用户是谁 whatis [命令] 作用:查询[命令]是干嘛的 我们试一下对文件和目录whatis行不行,结果发现不行:但是有没有发现对命令whatis也不行,为什么呢: ...
- Shell系列(6)- 管道符
多命令顺序执行 多命令执行符 格式 作用 ; 命令1 ; 命令2 连接命令:多个命令顺序执行,命令之间没有任何逻辑联系:前面命令报错,后面命令照常执行 && 命令1 && ...
- php--laravel --debug--mac
1>安装debug 一.下载xdebug文件 1.将phpinfo();的信息全部输入网址中的框,得到适配的xdebug版本: 网址:http://xdebug.org/wizard.php 2 ...
- 鸿蒙内核源码分析(进程回收篇) | 老父亲如何向老祖宗临终托孤 ? | 百篇博客分析OpenHarmony源码 | v47.01
百篇博客系列篇.本篇为: v47.xx 鸿蒙内核源码分析(进程回收篇) | 临终前如何向老祖宗托孤 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管 ...
- 单页应用后退不刷新方案(vue & react)
引言 前进刷新,后退不刷新,是一个类似app页面的特点,要在单页web应用中做后退不刷新,却并非一件易事. 为什么麻烦 spa的渲染原理(以vue为例):url的更改触发onHashChange/pu ...
- Skywalking-13:Skywalking模块加载机制
模块加载机制 基本概述 Module 是 Skywalking 在 OAP 提供的一种管理功能特性的机制.通过 Module 机制,可以方便的定义模块,并且可以提供多种实现,在配置文件中任意选择实现. ...
- 移动端多个DIV简单拖拽功能
移动端多个DIV简单拖拽功能. 这个demo与之前写的一个例子差不了多少,只是这个多了一层遍历而已. <!DOCTYPE html> <html lang="en" ...