一般STM32的时钟源有两种主时钟方案,一个是依靠内部RC振荡器的HSI(内部高速时钟),另一个是HSE(外部高速时钟)。
内部高速时钟源HSI
HSI英文全称:HIGH-SPEED INTERNAL OSCILLATOR
一般情况下,内部HSI都会在ST出厂时已校准,但是精度不高,在0到70℃下误差范围可能达到-1.3%到2%,即便是在标准的25℃下,也有 -1.1%到1.8% 的误差(如下图)。
因此,对于高波特率的异步串口通讯,或者需要高精度定时的场合,用HSI就有隐患,甚至根本达不到设计要求。
外部高速时钟源(HSE)
HSE英文全称:HIGH-SPEED EXTERNAL OSCILLATOR
为了获取更高的时钟精度,我们就要用到由石英晶振提供的HSE作为主时钟源,这样就可以很容易达到±30ppm(工作温度区间:-40 °C to +85 °C)。
晶诺威科技成产的耐高温无源贴片晶振SMD3225 8M ±10ppm 主要电气参数如下:
- Type类型:SMD3225无源贴片晶振
- Nominal Frequency 标称频率:8.000000MHz
- Load Capacitance/负载电容:8pF、10pF、12pF、15pF、18pF、20pF或定制
- Frequency Tolerance频率稳定度: (at 25°C) ±10ppm max;±30ppm(-40 °C to +85 °C)
- Frequency Stability:±80ppm max (-40 °C to +125 °C)
- Shunt Capacitance (C0)/静电容:3.0PF Max
- Drive Level (Typical)/激励功率:10µW typical
- Equivalent Series Resistance (ESR)等效电阻:200Ω Max
- Aging @25°C 1st year (Max)年老化:±3ppm/year
现在,我们需要把外接电容(C1、C2)与无源贴片晶振8MHz的负载电容CL进行匹配:
我们一般取C1 = C2,这两个电容和晶体Q构成三点式电容振荡器。以选择8MHz晶振负载电容CL=20PF为例:
在这里特别需要指出的是:CL=20pF是无源晶振负载电容值的单位,通常用于描述电容的容量大小。无源晶振,又被称之为晶体或晶体谐振器,需要匹配外部谐振电路才可以输出信号,自身无法振荡。在选择晶体的负载电容时,我们要权衡能量损耗和频率的稳定性。同一封装尺寸的晶体,负载越小,能耗越低。电容的大小影响无源晶振的起振时间、频率稳定度等。
PCB杂散电容CS一般可以估值4pF到6pF,
由于我们取了C1 = C2,公式就可以变为:C1 = C2 = 2*(CL – Cs)
代入公式:
若Cs =6Pf,则C1=28PF
若Cs =4Pf,则C1=32PF
因此,为了保险起见,理论上我们一般外接电容(C1=C2)取值在 27PF ~33PF之间。
最后需要指出的是,因PCB设计及复杂性差异,杂散电容CS也会存在差异,所以调整外接电容值的大小应该以晶振实际输出频率为准。