低成本微控制器单元通常配有内部 RC
振荡器,供您使用,而不是外部陶瓷或石英
晶体振荡器。但是,您需要微调该振荡器。
您喜欢的 MCU 很可能有一个内部 RC 振荡器。所有主要制造商的众多微控制器系列都包含此模块,包括德州仪器 (TI)、意法半导体 (STMicroElectronics) 和 Microchip 的微控制器系列。几乎所有制造商还在线提供了有关如何校准其 MCU 内部振荡器的应用说明。
使用内部振荡器有很多好处,而且您可能并不真正需要外部晶体或陶瓷振荡器。然而,有一些关键应用需要非常的定时,例如串行端口、定时器和 USB 接口。即使对于大多数此类应用,如果您对其进行微调,内部振荡器也可能满足严格的时序要求。
继续阅读以了解内部振荡器和简单的校准程序,以获得时钟信号的性能。
NXP 9S08SH8 微控制器的 GPIO 应用。请注意没有外部振荡器。
有关 MCU 振荡器的更多信息,您应该阅读Robert Keim 撰写的为微控制器选择合适的振荡器一文
内部振荡器的优点
内部振荡器无处不在是有原因的。以下是它们的一些好处:
1.它们需要更少的外部元件。不再需要外部振荡器电路或其反馈电路。这对预算、PCB 面积和成品小工具的整体尺寸产生积极影响。
2. 它们留下一两个引脚可用于 I/O。 大多数引脚数较少的 MCU 为每个引脚分配多种功能,供用户选择其用途。因此,如果您选择在 MCU 中使用内部振荡器,您将释放时钟输入引脚,或者释放晶体或
陶瓷谐振器所在的两个引脚。
ATmega328 MCU 的 DIP28 引脚排列,是 Arduino Uno 的。引脚 9 和 10 用于晶体谐振器,也可以分别用于 GPIO 引脚 PB6 和 PB7。图片由 Mediaquark 提供 [ CC BY-SA 4.0 ],
3. 它们将高频保留在 IC 内。 尽管一些微控制器在 100kHz 以下的低频下使用晶体或陶瓷谐振器,但更常见的是使用 10MHz 或以上的外部振荡器。这种高时钟频率几乎总是由 CPU 专用,并在 MCU 内部对其外围模块(ADC、UART、SPI、USB、GPIO 等)进行预分频。
在某些 PCB 中,将高频置于芯片外部可能会出现问题,因此将高频保留在内部通常是一个好主意
内部振荡器的缺点
内部振荡器由
集成电路内部的电阻和电容组成。在芯片内部生产这些无源器件有其局限性,特别是在准确性和可重复性方面。这意味着两个相同的微控制器芯片可能会在其内部振荡器频率上显示出有意义的差异,就像两把相同的吉他在两个不同的晚宴上调音后会以略有不同的音调演奏一样。
有关 RC 振荡器的更多信息,您可能需要阅读我写的关于施密特触发器振荡器的工作原理的文章。
除了地获得芯片内的电阻和电容的预期值(精度),以及为所有芯片获得完全相同的值(可重复性)之外,还存在温度问题。事实证明,电容和电阻都会随温度发生轻微变化,这对于内部振荡器尤其重要。因此,您不仅 需要担心不同的芯片工作频率略有不同,还需要担心它们的频率随温度的变化。
如果您预计环境温度不会发生巨大变化,那么在校准后就不必担心内部振荡器。但是,如果您预计温度会有显着变化,并且您的系统对频率变化高度敏感(如实时时钟或高速通信系统),那么外部振荡器是更好的选择。
如果 RC 振荡器如此糟糕,为什么制造商不在 MCU 内嵌入晶体或陶瓷振荡器呢?
IC 制造工艺中可小型化的材料非常有限,正如您可能猜到的那样,石英和陶瓷并不在该列表中。因此,尽管混合方法是 可以想象的,但它并不实用。
RC 振荡器其实并没有那么糟糕。事实上,现代 MCU 的用户指南内部振荡器频率精度通常低于 ±10%,可以微调到 ±0.5% 以下。因此,重要的是,如果您甚至不费心微调内部振荡器,那么您将可以摆脱很多应用程序的困扰,并且如果您这样做,则可以摆脱大多数应用程序的困扰。
结论
尽管晶体和陶瓷振荡器因其准确性和稳定性而高度可靠,但 RC 振荡器非常适合许多普通应用,并提供重要的优势。
另一方面,RC 振荡器并不完美,因此您必须始终评估您的应用,以便能够判断何时使用内部振荡器,以及何时更适合使用晶体或陶瓷振荡器。