一、晶振Rext计算
STM32常用晶振电路如图
Rext电阻作用:是限制晶振的驱动级别,并且它与CL2组成一个低通滤波器,以确保振荡器的起振点在基频上,而不是在其他高次谐波频率点上(避免3次,5次,7次谐波频率)。如果晶振的功耗超过晶振制造商的给定值,外部电阻RExt是必需的,用以避免晶振被过分驱动。如果晶振的功耗小于晶振制造商的给定值,就不推荐使用RExt了,它的值可以是0Ω。
对RExt值的预估可以通过考虑由RExt和CL2的电压分压RExt/CL2实现(注意到RExt和CL2构成了一个分压/滤波器,考虑通带宽度应不小于振荡器频率),则有RExt的值等于CL2的电抗:
计算公式:Rext = 1/(2πfC2)
例如
输入:
●振荡器频率F = 8MHz
●CL2 = 15pF
得到:RExt = 1326Ω
优化RExt值的方法推荐如下:首先根据前面的介绍确定好CL1和CL2的值,其次使用电位器来代替RExt,RExt值可预设为CL2的电抗值。然后调整电位器的值直到它满足晶振驱动级别的需要,此时电位器的值即是CL2值。
注意: 在计算完RExt值后要重新计算Gain margin的值(请参考4.3节)以确保RExt值对起振条件没有影响。例如,RExt值的值需要加入到ESR中参与gmcrit的计算,同时要保证gm >>gmcrit
注意: 如果RExt值太小,晶振上可能会承担太多的功耗。如果RExt值太大,振荡器起振条件将得不到满足从而无法正常工作。
二、匹配电容计算
以25Mhz晶振,负载电容20pf为例
匹配电容CL1=CL2 =2*(CL(Load CAP) -CS(shunt Cap))
代入计算:CL1 = CL2 》2*(20 -7)= 26pF