STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配

目录

一、判断晶振与MCU是否兼容

二、判断负载电容是否匹配

1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系

2. 如何选择 CL1 和 CL2?

3. 调试技巧

三、常见误区

误区1: 我的板子上晶振不起振, 换一个STM32就好了, 那是不是芯片有问题?

误区2: 客户认为兼容就表示此晶振与MCU组合在一起在板子上就应该会起振

误区3: 不兼容的晶振, 就不会起振


一、判断晶振与MCU是否兼容

步骤1、确保所选择的晶振是基频晶振,一般40MHz以下的晶振均为基频晶振。

步骤2、计算LSE晶振与MCU匹配时所得到的gmcrit,或者GAINmargin

步骤3、最终判断MCU与晶振是否兼容

二、判断负载电容是否匹配

在晶振电路中,匹配电容(负载电容)的选择至关重要,它直接影响晶振的起振性能和频率精度。你提到的 CL1 和 CL2 通常是指连接在晶振两个引脚到地的电容,它们的取值需要根据晶振的规格和电路设计来调整。

  • 负载电容不匹配

    • 晶振需匹配特定负载电容(CL,通常为几pF至几十pF)。若电路中的负载电容(如C1、C2)与晶振规格不匹配,会导致频率偏移或不起振。

    • 解决方法:参考晶振手册调整电容值(例如:12pF晶振通常配2×22pF电容,但需根据实际设计计算)。

1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系

  • 晶振标称负载电容(CL)
    这是晶振规格书中给出的参数(如 12pF、18pF、20pF 等),表示晶振设计时预期的总负载电容值。

    • 若实际电路的总负载电容与标称值不匹配,会导致频率偏移或不起振。

  • 电路中的匹配电容(CL1、CL2)
    这两个电容(通常取值相同,如 C1=C2=22pF)与晶振引脚并联,用于调整总负载电容。

    • 总负载电容的计算公式:

       

      其中:

      • C1 和 C2是外部匹配电容(即 CL1、CL2)。

      • C杂散C杂散​ 是 PCB 走线、芯片引脚等引入的寄生电容(通常 2~5pF)。

    • 简化情况(当 C1=C2时):

      C总≈C12+C杂散

      目标:使 C总C总​ 等于晶振标称的 CL。

2. 如何选择 CL1 和 CL2?

  1. 确定晶振的标称负载电容(CL)

    • 例如:晶振规格书标明 CL=18pF。

  2. 估算杂散电容(C杂散​)

    • 通常取 3~5pF(高频电路可能更高)。

  3. 计算匹配电容(CL1、CL2)

    • 根据公式:

      C1=C2≈2×(CL−C杂散)
    • 举例:若 CL=18pF,C杂散=4pF,则:

      C1=C2≈2×(18−4)=28pF

      (实际可选 22pF~33pF 的标准电容,再通过示波器微调)。

3. 调试技巧

  1. 用示波器观察波形

    • 正常起振时,晶振引脚应为正弦波或削顶正弦波(幅值通常为 0.5~1Vpp)。

    • 若不起振,尝试逐步增大/减小 CL1、CL2(如±5pF)。

  2. 替换法测试

    • 更换不同容值的电容(如 15pF、22pF、33pF),观察起振情况。

  3. 参考官方设计

    • 查阅芯片厂商的应用笔记(如 ST 的 AN2867),获取推荐电路参数。

三、常见误区

误区1: 我的板子上晶振不起振, 换一个STM32就好了, 那是不是芯片有问题?

'-> 晶振起不起振跟多方面因素相互作用的影响, 主要包括: 选择的的晶振, 芯片本身, 所使用的CL1, CL2, 芯片软件运行时配置的驱动等级, 板上的杂散电容, 环境湿度. 除此之外, 是不是芯片被静电打坏? 等等

这些因素都会导致晶振不起振. 或者起振时间太长. 换个MCU就起振了, 并不能足以说明之前的芯片是损坏的, 也有可能是电容匹配不行导致. 或者忘记检查晶振与MCU理论上是否兼容? 或者安全裕量不够所致.

一个可行的判断芯片内部振荡电路是否被损坏的方法:

代码中配置OSC32_IN, OSC32_OUT这两个引脚为analog模式, 然后分别在此两个引脚外部供一个3.3V电压, 测量其所耗电流, 若超过1uA, 则芯片内部振荡电路大概率认为已被损坏.

误区2: 客户认为兼容就表示此晶振与MCU组合在一起在板子上就应该会起振

兼容只是表示理论上此晶振与MCU组合是可以做到所有产品都可以正常工作的. 但实际上,仍然还会出现部分起振, 部分产品不能起振!  这主要还取决于实际所使用电容CL1, CL2, 杂散电容, 湿度, 芯片所设置的驱动等级, 芯片是否已损坏等等影响.

误区3: 不兼容的晶振, 就不会起振

错, 不兼容的晶振也有可能会起振! 这里的不兼容主要是指没办法做到所有晶振都能起振或者稳定的工作. 部分晶振还是能正常的. 也有可能常温下正常, 低温下异常. 没办法做到全部芯片和全温度范围均能正常工作. 是从理论上就无法全部覆盖的那种. 

相反, 兼容的晶振, 在理论上是可以满足全部芯片全温度范围均能起振的, 只不过实际起振情况除了理论上是否兼容外(首先得排查理论上的兼容问题), 还得取决于其它实际因素.

注意: 理论上的兼容不等于晶振实际会起振! 不兼容也不等于实际不会起振!

### 单片机外部32.768kHz晶振的使用方法 单片机通过配置内部寄存器来启用并利用外部32.768kHz晶振,主要用于实时时钟(RTC)功能或其他低功耗定时需求。以下是关于如何在单片机中使用外部32.768kHz晶振的相关说明。 #### 1. 功能概述 32.768kHz晶振由于其高精度、稳定性和低功耗特性,在需要精确计时的应用场景下非常常见[^2]。它常用于实时钟(RTC)模块,为系统提供精准的时间基准。对于单片机而言,该晶振可以作为独立的低频时钟源,支持低功耗模式下的时间保持功能。 #### 2. 硬件连接方式 为了使单片机能正常识别和驱动32.768kHz晶振,需将其正确连接至指定引脚。例如,在STM32系列单片机中,通常会有一个专门设计用来接收32.768kHz晶振输入的引脚对(如LSE_IN 和 LSE_OUT)。这些引脚负责启动和维持晶振的工作状态[^3]。 #### 3. 软件初始化过程 软件层面主要涉及以下几个方面: - **开启对应外设电源域** 在某些架构下单片机会将RTC等依赖于备用电池供电的功能置于特定区域以减少能耗;因此首先要激活这部分电路才能继续后续设置。 - **配置相关GPIO端口属性** 将上述提到的两个专用管脚设定成模拟输入或者复用功能角色以便它们能参与到实际震荡过程中去。 - **加载初始参数值给定目标频率** 根据具体型号手册指导填写相应控制位从而告知硬件期望得到什么样的波形输出形式即标准正弦曲线还是方波等等细节差异可能会影响最终效果表现出来的好坏程度不一而足所以务必仔细查阅资料后再行动起来吧! 下面给出一段基于Cortex-M内核MCU(STM32Fxxx) 的简单示例代码展示怎样完成以上步骤: ```c #include "stm32f4xx_hal.h" void RTC_Init(void){ RCC_OscInitTypeDef RCC_OscInitStruct; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct; __HAL_RCC_PWR_CLK_ENABLE(); // Enable Power Control clock HAL_PWREx_EnableBkUpAccess(); // Allow access to Backup Domain registers /* Configure the main internal/external oscillators */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.LSEState = RCC_LSE_ON; if(HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL_OK ){ Error_Handler(); } /* Select LSE as RTC Clock Source and configure prescaler*/ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK ) { Error_Handler(); } /* Initialize RTC according your needs here... */ } ``` 此函数实现了基本的LSE(Low Speed External Oscillator, 低速外部荡器)启动流程,并指定了RTC使用的时钟源来自LSE而非其他选项之一。 #### 注意事项 当操作完毕之后记得验证一下当前所选路径是否确实切换到了预期之中因为有时候可能会遇到干扰因素导致失败现象发生比如说焊接质量不过关亦或是线路布局不合理等问题均有可能引起异常状况出现故而在项目开发期间应当格外留意此类隐患的存在以免造成不必要的麻烦困扰自己太久才好解决掉呢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值