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?
-
确定晶振的标称负载电容(CL)
-
例如:晶振规格书标明 CL=18pF。
-
-
估算杂散电容(C杂散)
-
通常取 3~5pF(高频电路可能更高)。
-
-
计算匹配电容(CL1、CL2)
-
根据公式:
C1=C2≈2×(CL−C杂散) -
举例:若 CL=18pF,C杂散=4pF,则:
C1=C2≈2×(18−4)=28pF(实际可选 22pF~33pF 的标准电容,再通过示波器微调)。
-
3. 调试技巧
-
用示波器观察波形:
-
正常起振时,晶振引脚应为正弦波或削顶正弦波(幅值通常为 0.5~1Vpp)。
-
若不起振,尝试逐步增大/减小 CL1、CL2(如±5pF)。
-
-
替换法测试:
-
更换不同容值的电容(如 15pF、22pF、33pF),观察起振情况。
-
-
参考官方设计:
-
查阅芯片厂商的应用笔记(如 ST 的 AN2867),获取推荐电路参数。
-
三、常见误区
误区1: 我的板子上晶振不起振, 换一个STM32就好了, 那是不是芯片有问题?
'-> 晶振起不起振跟多方面因素相互作用的影响, 主要包括: 选择的的晶振, 芯片本身, 所使用的CL1, CL2, 芯片软件运行时配置的驱动等级, 板上的杂散电容, 环境湿度. 除此之外, 是不是芯片被静电打坏? 等等
这些因素都会导致晶振不起振. 或者起振时间太长. 换个MCU就起振了, 并不能足以说明之前的芯片是损坏的, 也有可能是电容匹配不行导致. 或者忘记检查晶振与MCU理论上是否兼容? 或者安全裕量不够所致.
一个可行的判断芯片内部振荡电路是否被损坏的方法:
代码中配置OSC32_IN, OSC32_OUT这两个引脚为analog模式, 然后分别在此两个引脚外部供一个3.3V电压, 测量其所耗电流, 若超过1uA, 则芯片内部振荡电路大概率认为已被损坏.
误区2: 客户认为兼容就表示此晶振与MCU组合在一起在板子上就应该会起振
兼容只是表示理论上此晶振与MCU组合是可以做到所有产品都可以正常工作的. 但实际上,仍然还会出现部分起振, 部分产品不能起振! 这主要还取决于实际所使用电容CL1, CL2, 杂散电容, 湿度, 芯片所设置的驱动等级, 芯片是否已损坏等等影响.
误区3: 不兼容的晶振, 就不会起振
错, 不兼容的晶振也有可能会起振! 这里的不兼容主要是指没办法做到所有晶振都能起振或者稳定的工作. 部分晶振还是能正常的. 也有可能常温下正常, 低温下异常. 没办法做到全部芯片和全温度范围均能正常工作. 是从理论上就无法全部覆盖的那种.
相反, 兼容的晶振, 在理论上是可以满足全部芯片全温度范围均能起振的, 只不过实际起振情况除了理论上是否兼容外(首先得排查理论上的兼容问题), 还得取决于其它实际因素.
注意: 理论上的兼容不等于晶振实际会起振! 不兼容也不等于实际不会起振!