STM32f407VGT6晶振不起振问题排查记录

省流

1、晶振电容焊错
2、BOOT0没有接地

背景

本来是一名嵌入式软件开发工程师,主要做嵌入式Linux开发的。奈何单位就我一个跟硬件相关的工程师。被领导陆续安排了一些硬件电路的设计。

去年根据讯为的资料,用嘉立创的EDA画了一个rk3568的底板,做了一些简单的驱动开发。感觉还不错。之后又陆续画了一些小板。

最近领导又安排了一个工作,要用STM32F407做开发。楼主又从网上找了一些资料,照猫画虎出了个原理图。因为课题经费问题,这次是找了一个贴片厂做的(嘉立创不够灵活,自己垫钱报销的话还挺好)。从PCB制板到元器件采购,再到SMT贴片焊接(之前都是嘉立创一条龙搞的)。厂家花了三周的时间终于把板子寄回来了(主要是钱太少,厂家不着急安排)。

经过

楼主想着抓紧时间写个硬件hello world(点个LED灯),跑一下试试。结果上电下载程序后,LED就是点不亮。先用万用表测量3.3V供电和接地,都没有问题。然后用示波器测了晶振,发现没有波形。想着终于找到问题了,对着电路图和板子排查,发现是晶振的一个电容焊错了(推测厂家是手焊的)。20pF的电容和旁边100nF的电容互换了位置。看了图纸是没有问题的,但是5块板子的电容都焊错了(可能是楼主的丝印离的有点远)。下班后加班把电容拆了调换位置重新焊上,然后上电等着见证奇迹。结果还是不行。楼主就一脸懵逼了。中间又写标书啥的,各种杂活拖了一周。今天想着放假前再找找原因,就百度了一下。如下图所示(图片来自百度搜索,侵删)。对着一条一条排查。
在这里插入图片描述
本来第四条我感觉是没有问题的,毕竟原理图检查了好几遍。但是楼主毕业后确实没搞过硬件,还是又逐条检查了一遍。检查到BOOT0的时候,用万用表测了一下,发现电压不是0。然后又看了原理图和PCB,发现自己愚蠢极了。BOOT0的电阻和电容居然没有接地(附上修改前后的原理图)。用一根导线手动把BOOT0接地,板子重新上电,灯终于亮了。写文章记录一下自己的愚蠢。
在这里插入图片描述
在这里插入图片描述

结果

还好板子上电容旁边就有地,赶紧用烙铁堆点锡。
在这里插入图片描述

<think>好的,用户现在想了解STM32F407VGT6的时钟配置或相关特性,并且提到了参考手册。我需要结合之前提供的引用和之前的回答来给出详细的信息。 首先,回顾之前的对话,用户之前询问了F407和F1系列的区别,我详细列出了内核、外设、应用场景等方面的对比。现在用户转向具体的时钟配置,这可能涉及到时钟树、配置方法、注意事项等。 用户提供的引用中,引用[1]提到F407的主频是168MHz,引用[4]提到了系统时钟图和抗干扰的问题。这些信息需要整合到回答中。同时,引用[2]和[3]可能涉及实际开发中的配置步骤和硬件设计,但用户现在更关注时钟配置本身,可能需要深入硬件电路部分。 接下来,我需要确定用户的需求层次。用户可能是一名嵌入式开发者,正在配置STM32F407的时钟系统,需要了解如何设置时钟源、分频系数、PLL配置等,以达到最大主频或满足特定需求。还可能关心时钟安全机制、低功耗模式下的时钟配置,以及如何参考官方手册进行操作。 需要注意的是,用户特别提到了参考手册,因此需要指出手册中的相关章节,如RCC章节,并可能涉及系统时钟树图。同时,用户可能希望得到具体的配置步骤或示例代码,但根据之前的回答示例,用户可能希望结构清晰,分点说明,并引用相关来源。 还需要检查是否有遗漏的信息,比如时钟源的选择(HSE、HSI、LSI、LSE等),PLL的使用,各总线时钟的分频设置,以及实际配置中可能遇到的问题,比如如何启用HSE并切换系统时钟源到PLL。 此外,引用[4]提到电磁干扰对时钟的影响,这可能需要在注意事项部分提到,比如布局布线的建议,使用屏蔽措施等。 最后,确保回答符合之前的格式要求,使用中文,正确使用LaTeX公式,引用标识,以及生成相关问题。同时,避免使用Markdown格式,但根据用户当前的查询,可能允许使用表格和代码块,如之前的回答示例所示。 总结,回答的结构应包括时钟树概述、配置步骤、代码示例、注意事项,并引用相关手册和资料。同时,生成的相关问题应围绕时钟配置的深入应用和问题排查。</think>### STM32F407VGT6 时钟系统详解 #### 一、**时钟树核心架构** STM32F407VGT6 的时钟系统基于复杂的多路复用结构(完整时钟树见参考手册[^4]),主要包含以下关键模块: $$ \text{时钟源} \rightarrow \text{PLL} \rightarrow \text{分频器} \rightarrow \text{系统总线(AHB/APB)} $$ 1. **时钟源类型** | 类型 | 名称 | 频率范围 | 用途 | |------|------------|----------------|----------------------| | HSE | 外部高速时钟 | $4-26\ \text{MHz}$ | 主PLL输入、系统时钟源 | | HSI | 内部高速RC | $16\ \text{MHz}$ | 备用时钟源 | | LSE | 外部低速时钟 | $32.768\ \text{kHz}$ | RTC、低功耗模式 | | LSI | 内部低速RC | $32\ \text{kHz}$ | 独立看门狗 | 2. **PLL配置** - **主PLL**:通过HSE/HSI倍频生成系统时钟(最高$168\ \text{MHz}$) 公式:$$ \text{PLL输出} = \frac{\text{输入时钟} \times N}{M \times P} $$ - 典型配置:HSE=8MHz → $N=336$, $M=8$, $P=2$ → $168\ \text{MHz}$[^4] --- #### 二、**时钟配置步骤** 1. **启用HSE时钟源** ```c RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; // 启用外部晶振 HAL_RCC_OscConfig(&RCC_OscInitStruct); ``` 2. **配置PLL参数** ```c RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 8; // M分频 RCC_OscInitStruct.PLL.PLLN = 336; // N倍频 RCC_OscInitStruct.PLL.PLLP = 2; // P分频(输出168MHz) ``` 3. **设置总线分频系数** ```c RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 系统时钟源选择PLL RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // AHB=168MHz RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; // APB1=42MHz RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; // APB2=84MHz HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); // 需匹配FLASH等待周期 ``` --- #### 三、**关键特性与注意事项** 1. **超频风险** - 手册规定最高频率为$168\ \text{MHz}$,超频可能导致电磁干扰加剧(EMI)或运行稳定[^4] 2. **时钟安全系统(CSS)** - 检测HSE故障时自动切换到HSI,防止系统崩溃 ```c HAL_RCC_EnableCSS(); // 启用时钟安全监测 ``` 3. **低功耗模式时钟控制** - 睡眠模式:关闭CPU时钟(Cortex-M4内核停止) - 停止模式:关闭所有高速时钟(仅保留LSI/LSE) - 待机模式:关闭所有时钟(通过WKUP引脚唤醒) --- #### 四、**参考手册指引** - **系统时钟配置**:参考《STM32F4xx中文参考手册》第6章 "复位和时钟控制(RCC)"[^4] - **时钟树图**:手册第2.2.1节包含带注释的时钟树结构图(含所有分频路径) --- ### 相关问题 1. 如何验证STM32F407的时钟配置是否成功? 2. 在电磁干扰强的环境中如何优化时钟电路设计? 3. STM32F407的时钟失效保护机制有哪些? 4. 如何通过示波器测量HSE晶振的实际频率?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值