STM32F103的HSI时钟也可以校准

发布: 2010-1-15 17:15 | 作者: binglin | 来源: StmFans思蜕盟 OPELC 自由电子联盟

6.2.2 HSI时钟
HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。 HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。

校准:制造工艺决定了不同芯片的RC振荡器频率会不同,这就是为什么每个芯片的HSI时钟频率在出厂前已经被ST校准到1%(25°C)的原因。系统复位时,工厂校准值被装载到时钟控制寄存器的HSICAL[7:0]位。 如果用户的应用基于不同的电压或环境温度,这将会影响RC振荡器的精度。可以通过时钟控制寄存器里的HSITRIM[4:0]位来调整HSI频率。

由参考手册的描述可知,HSI也有一个校准寄存器HSICAL[7:0]位,这样就大大方便了GPIO口不够用时而内部RC振荡器精度又不满足使用的场合了。

如果再配合内部温度传感器来校准HSI可能效果会更好,这样就可以在不同的温度下分别设置不同的校准值,但缺点就是批量生产校准所花费的工作量相应大了很多,如果GPIO口数量足够还是用外部晶振来得更实在,因为进行校准的人工费用也不低。

对于手持设备(对功耗要求特别高时),如果不用外部晶振,则能省下晶振这部份功耗似乎也有点用。
binglin (2010-1-15 17:28:21)
时钟控制寄存器(RCC_CR)位7:3 HSITRIM[4:0]:
内部高速时钟调整 (Internal high-speed clock trimming) 由软件写入来调整内部高速时钟,它们被叠加在HSICAL[7:0]数值上。 这些位在HSICAL[5:0]的基础上,让用户可以输入一个调整数值,根据电压和温度的变化调整内部HSI RC振荡器的频率。 默认数值为16,可以把HSI调整到8MHz±1%;每步HSICAL的变化调整约40kHz。

由上可知HSICAL每步的调整率是:40KHz/8MHz=0.005=0.5%,这样确实可以将HSI的频率调整到8MHz±1%