服务热线
0755-88364040
18902464556
本文介绍了低端微控制器单元中可用的内部 RC 振荡器校准机制。 介绍了自动校准的基本校准程序和注意事项。
在上一篇题为 MCU 内部振荡器的优缺点的文章中,我们揭示了微控制器单元中内部 RC 振荡器的优缺点。
现在我们将探索一种技术来减轻这些缺点,包括补偿振荡器中不准确的无源元件值。这种技术通常被称为微调、微调或校准内部振荡器。
MCU 中的内部振荡器微调
由于它们的缺点,MCU 中的内部振荡器具有微调其频率的机制,与乐器不同。这通常通过使用微型电容替代盒调整振荡器 RC 电路中的电容来完成。
电容替换盒包含一系列开关和电容器,可在一定精度范围内产生任何电容。例如,考虑以下电容器网络,这些电容器可以并联组合以产生从 0nF 到 255nF 的任何整数电容。
电容替代网络。
开关有条件地包括 2 次方的电容器。例如,仅闭合右侧的三个开关会产生 7nF。 是的,它是二进制的!
现在,由于 RC 振荡器通过对电容器进行充电和放电来工作,因此这些开关需要是模拟的。 出于这个原因,这些微型电容替代盒使用一种特殊类型的开关,称为传输门或模拟开关。 这些很像继电器的半导体替代品。 它们控制数字信号并切换模拟信号。 有很多商用传输门 IC,如 CD4016、CD4066 和 CD4053。
有关传输门的更多信息,请阅读 Robert Keim 的文章 The CMOS Transmission Gate。
从程序员的角度来看,内部振荡器的频率调整归结为修改内存映射寄存器的值。 该寄存器中的位控制电容替换模块中的开关。
对于 S08 系列的某些成员,该寄存器称为 ICSTRM(内部时钟源微调)。这是一个 8 位寄存器,二进制复位值为 10000000。这 8 位控制电容替换模块,进而影响振荡器的周期:此寄存器的值越高,电容和周期越高.当然,这对频率有相互影响。
简单的校准程序
这是您可以在 MCU 上执行的一个很好的修整程序:
运行一个生成 1kHz 方波的应用程序。
迭代直到无法改进:
测量生成信号的周期。
将 Trim 寄存器修改为 1ms。
重新编译并运行。
迭代的原因是,由于微调模块中电容器值的不确定性(例如一组高度略有不同的楼梯),您为微调寄存器估计的更改将因某些未知因素而关闭。迭代处理了这种不规则性。
自动化这个过程
您可能希望为您的应用程序自动执行此过程,以便您的程序在上电时校准振荡器,作为引导序列的一部分。
为此,您将需要一个可靠的时钟参考来与您的 MCU 生成的固定频率信号进行比较。尽管这似乎毫无意义,因为您首先要避免使用外部时钟信号,但该外部信号不必满足您的时钟要求;它必须是准确和稳定的。
自动微调过程的另一个重要细节是算法:上述过程适用于拥有示波器和漂亮计算器的工程师。然而,许多校准函数使用逐次逼近法。这与逐次逼近型 ADC 使用的算法相同,其本质是二分搜索算法。毫不奇怪,对于一个 N 位修整寄存器,这需要 N 次迭代。
要了解 ADC 中的逐次逼近,您可能需要阅读 Elliott Smith 撰写的文章了解逐次逼近寄存器 ADC。
设备程序员
除了对 ROM 存储器和微控制器进行编程之外,还有一些设备编程器提供有用的附加功能。有些甚至在您的微控制器上执行此微调程序,以便您方便地对一批设备进行编程,微调每个单元上的内部振荡器。
如果您想知道在您即将切断设备电源时将正确的修整值写入 RAM 寄存器有什么好处,那么您就大功告成了!
MCU 制造商通常在非易失性存储器中提供一个特殊位置来存储设备的微调值。 这不会自动工作:您的代码仍然必须在启动时从该位置获取值并将该值写入修整寄存器。