
可能会有朋友跟我刚使用这个芯片关于MSI校准的时候有过疑惑如何校准? 这里讲讲校准原理。 首先,必须说,校准是必须的。 在不校准的情况下0~25度时候精度是1%,超过这个温度精度偏差可能在+/- 3%以上。 校准后精度可以达到0.05%,这相当于delay 1000ms 的误差只有1000ms * 0.005。 9 Q7 t0 `5 u% k' D校准准备: 1. 准备一个板子,焊接好32.768K LSE外部晶振 2. 准备一个校准参考代码,在st官网搜索MSI Calibration可以看到X-CUBE-RC-CALIB项目,这个就是校准参考代码 3. 在st网站下载AN4631英文资料,学一遍,学会多少全看你自己悟性 2 }+ s ^3 B0 v) a* d' p& a9 E. {3 \说说MSI基本校准原理: 通过32.768K晶振连接到TIM21当中,产生参考值与当前MSI振荡器进行对比,找到一个适合的差值,写入MSI校准寄存器中!即可完成。 在X-CUBE-RC-CALIB的参考代码中MSI MinError这种经典方案可以用来做校准。10个周期下来大概消耗 1.4s时间完成校准。 , X. F$ x/ S! b4 V' _温补校准实现原理: 通过STM32内部的温度传感器检测当前温度,当温度与上电后差别达到你设定的值的时候可以重新校准。 频率检测校准实现原理: 通过MSI FreqMexxx那个函数,可以检测到当前MSI的运行频率,比如你设定的是2097K如果检测到时期情况误差超过阀值(看你能接受多少),就重新校准。 " O$ A" C$ |( p以上数据经过示波器测试准确度非常高(使用MCO方式,输出到示波器上)。 ( h& N* K) e8 \- q1 K. z0 j8 r |