前言

最近在验证去年画好的一套板子,因为是验证,大概齐看看有没有问题。
采用STM32CubeMX生成的HAL库工程框架来测试。各种例子CubeMX包里面都有。

发现一个奇怪的问题,外部时钟时钟初始化很少能通过。导致只能使用HSI+LSI来编程。

当时没在意,就是以为元件问题(晶振和起振电容货不好,精度不合规,或者我焊工太差)。

这几天又做了一块BMS板子,又发现外部时钟初始化过不了。
上网一查,好像很多同学都说有问题。工作计划里面,我都考虑使用外部有源晶振来提供时钟了。

看了一眼ST官方的晶振设计文档(en.CD00221665.pdf AN2867),讲究蛮多的。但是只要元件(晶振+2个起振电容)质量是正品,值不错,精度够,布线讲究,还不能起振,那还真不知所措。



晶振这块的布线,已经很注意了。虽然没有ST官方晶振指南布线那么讲究,也说的过去。见过很多布线不讲究的板子,人家板子也跑的好好的。

用CubeMX生成测试程序后,点了一个LED灯,就这么简单的程序。
发现在时钟初始化时,老是过不去,HAL_RCC_OscConfig()会失败。
因为是打样板子,没有做钢网过炉子。自己借助显微镜来手工焊接。是自己手笨将晶振焊接坏了?
x2是OSC 3215-2P,起振电容为10pf
x1是OSC 5032-2P,起振电容为20pf
连续换了4轮晶振元件(x1,x2, c6,c7,c35,c36),焊接上,用CubeMX生成的测试工程测试,都过不了时钟初始化HAL_RCC_OscConfig()那里。

以为是自己焊接功力不行,联系好同事(他专职焊工,有10+年经验)让他搞,然后我再测试。

正好他去现场了,我继续找资料。
当看到 https://blog.csdn.net/u012564117/article/details/93969372时,有点被电到的感觉。

马上回头去看CubeMX向导。

晶振选择为3种:
Disable 这个是不用外部晶振
Crystal/Ceramic Resontor 这个是用无源外部晶振
BYPASS Clock Source 这个是有源外部晶振

这段时间我用CubeMX生成测试工程,晶振这块选的都是 “BYPASS Clock Source”。这事弄的,真丑陋。。。

正好实验板已经带来了(准备让同事帮焊接晶振),马上接上12V电池包,开始试验。好使!时钟初始化过了,LED灯亮灭都好使…

一个人玩确实不好,好多问题自己一个人想,都想偏了,犯一些低级错误。

我们以前工程都是固件库编程,有些手头的实验板都是寄存器编程。没有HAL库的积累。赶上验证板子时,都没有一个靠谱的测试程序。都是眼泪。

回想起焊接晶振那块,因为有显微镜加持,焊接质量不敢说太好,还过的去吧,焊接时间也就几秒,也不会轻易将元件烧毁。还是要相信自己。哪有问题找哪里。

不过自己长时间搞不定的事情,还是要怀疑一下自己,去借鉴下网上其他同学的经验。

以前产品也出过一些,从来没发现STM32的MCU晶振不起振。可能还是出货量不到那个级别吧。

看网上其他同学,在出货量巨大时,还是会发现用无源晶振会有概率不起振。有的同学说,已经参照了ST官方的晶振设计手册,还是会不起振。

下次,如果再弄板子,而且价格不敏感,准备上4脚的贴片有源晶振了。
8MHZ和32.768KHZ的价格,在力创上看了,大概3~4元一只。那一个MCU成本就加10元(主/副晶振),像我这套板子,用了6个MCU. 成本就加60元。

STM32CubeMX Crystal/Ceramic Resontor相关推荐

  1. 嵌入式下的Hello World——点亮流水灯(STM32cubemx)

    前言: 一.环境搭建 1. 下载STM32CuneMx 2.安装CubeMx 3.安装HAL库 二.CubeMx配置完成点亮流水灯 1.新建工程 2.环境配置 三.编写流水灯代码 1.打开由CubeM ...

  2. STM32F4 HAL库开发 -- STM32CubeMX

    一.STM32CubeMX 简介 STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具, 允许用户使用图形化向导生成 C 初始化代码,可以大大减轻开发工作,时 ...

  3. STM32CubeMX系列教程 5.0版本环境开发——1.工程搭建

    STM32Cubemx 是一个便捷,方便管理的软件平台.极大的优化了开发的过程,尽管很多人对此不适应.它包括了ST产品的每个系列除了STM8.平台包括了STM32Cube 硬件抽象层(一个STM32抽 ...

  4. 嵌入式作业STM32F103C8T6和stm32CubeMX实现LED灯

    目录 一.STM32F103C8T6简介 1.定义 2.各字段定义 二.GPIO端口初始化设置 1.时钟设置 2.输入输出和输出速率设置 三.代码实现 1.c语言实现 2.烧录 3.烧录结果 四.ST ...

  5. STM32CubeMX学习笔记(15)——电源管理(PWR)低功耗睡眠模式

    一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需要运行时(例如等待外部事件时)节省功耗.由用户根据应用选择具体的低功耗模式,以在低功耗.短启动时间和可用唤醒源之间寻求最佳平衡. 睡眠模 ...

  6. STM32Cubemx的安装及用寄存器HAL库完成LED流水灯程序

    目录 一.STM32CubeMx安装 (一)简介 (二)下载地址 1.官方下载地址 2.网盘下载地址 二.STM32CubeMX安装过程 三.HAL库安装 四.HAL库实现LED流水灯 (一)新建项目 ...

  7. STM32F103在STM32CubeMX下的应用

    例子:实现串口uart通讯 一.搭建STM32CubeMX开发环境 1.安装固件库 选择自己的开发板固件 ,这里我使用的是f103c6. 2.工程创建 1.点击file->new project ...

  8. STM32F103 + STM32CubeMX实现流水灯闪烁

    文章目录 一. 环境 二. 使用STM32CubeMX 1. 安装固件库 2. 工程设置 3. 添加代码 三. 软件调试 四. 使用STLink下载程序 五. 总结 一. 环境 硬件:stm32f10 ...

  9. 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯

    本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤.利用C语言编程和寄存器点亮流水灯以及stm32CubeMX+Keil使用HAL库点灯 目录 一.STM3 ...

最新文章

  1. java多线程w3c_Java创建多线程的三种方式
  2. java 写一个商店_Java Web开发之基于Session的购物商店实现方法
  3. 遇见BUG(3)critical warning也要关注!
  4. 什么!在CSS中的重要意义? [重复]
  5. 找出数组中两个只出现一次的数字
  6. Android中个人推崇的数据库使用方式
  7. X86/ARM 模拟器
  8. c++动态绑定和动态绑定
  9. android 多行 对齐方式,android – 按钮与多行文字下沉对齐线,如何解决?
  10. Gartner预测:SD-WAN将取代路由
  11. HDU - 5820 Lights(主席树)
  12. Kanas.net Framework 入门介绍
  13. 适用于数据科学家的Kubernetes,Linux原理,对硬件问题进行故障排除,Python等
  14. iPhone 14新配色曝光:比土豪还土豪 颜色更深
  15. chrome怎么调用硬件_浏览器发展简史——IE帝国是如何被chrome打败的?
  16. C语言指令启动mcs51计时器是,单片机原理及应用-中国大学mooc-题库零氪
  17. 2021年中国研究生数学建模竞赛B题参考思路
  18. 打谱软件-Avid Sibelius 8.5.0 macOS
  19. 世界线(bzoj2894)(广义后缀自动机)
  20. 分布式事务(6)-分布式事务处理技术之RocketMQ

热门文章

  1. redis可以代替mysql 吗_redis是否可以代替mysql
  2. 阿里云ECS共享型n4服务器1核2G怎么样?
  3. c语言祝生日快乐的程序,C语言如何编程生日快乐代码
  4. LeetCode Singer Number
  5. 2006年度十大视频搜索引擎全面评测
  6. txt文件编码批量转换器 2.11 官方版
  7. 真假4K视频内容评价之我见
  8. 快速上手 Flutter 空安全
  9. 【Spring】ApplicationContext和beanfactory区别
  10. 刘慈欣 计算机工程师,刘慈欣:《三体》之外,我只是个普通的工程师