晶体振荡器负载电容,再次

电器工程 微控制器 振荡器 电容 水晶 寄生电容
2022-01-18 17:22:56

关于如何计算并联谐振晶体的负载电容,有很多看似相互矛盾的信息。面对近年来出现的很多非振荡和频率不准确的问题,我正在请求社区的帮助以查明问题的根源。

应该如何准确计算外部负载电容器的值?

如果振荡器完全无法从某些供应商的晶体启动并且仅完全移除外部负载电容器有帮助,那是什么原因?其他供应商的晶体工作正常,他们宣传看似相似的参数(负载电容、基模、并联谐振)。

例如,微控制器中的所有集成 XTAL 振荡器是否总是 Pierce 振荡器?它与这个问题有什么关系吗?

作为参考,这里有一些我从网上找到的关于负载电容计算的信息。一家 IC 供应商是这样定义的:

AN100

一家晶体制造商是这样定义的: 在此处输入图像描述

另一个网站有这个显示答案:

    The equation is C=2(CL)-(CP+CI)

C = crystal capacitor value
CL = load capacitance
CP = parasitic capacitance (wires, socket, traces)
CI = input capacitance (mcu itself)

很多人似乎认为负载电容是晶体制造商为外部电容器推荐的值。在我看来,这似乎完全不正确。(但是,事实证明,可能仍然可以正常工作)。

一个网页强调了解振荡器逆变器的输入和输出电容,并给出了以下答案: 在此处输入图像描述

这个问题有一个真实的答案吗?这一切对我来说似乎非常令人沮丧。为什么振荡器不启动?为什么移除外部负载电容器会使其启动?应该如何计算外部电容的值?

PS。抱歉,我无法准确告诉您我正在使用哪些 IC。但这些年来,我已经看到很多这样的事情发生了。

3个回答

这个问题有一个真实的答案吗?这一切对我来说似乎非常令人沮丧。为什么振荡器不启动?

当晶体和连接在任一侧的电容器没有完全产生 180 度相移回到芯片内的反相器输入时,晶体振荡器将无法启动。

逆变器有效地产生 180 度相移,因此,要开始振荡,两个电容器和晶体必须一起形成额外的 180 度相移,并且总电压增益必须大于 1。

看看这个响应——它模拟了一个晶体和一个电容器,但它并没有完全达到 180 度:-

在此处输入图像描述

V1 是驱动电压源,R2(100 欧姆)代表振荡器中涉及的栅极的输出阻抗。仔细看,相位角还没有达到 180 度,这意味着没有振荡。

额外的几度相移来自逆变器上的输出电容器 - 100 欧姆(或任何逆变器的输出阻抗)并且这个额外的电容推动相移超过 180 度,然后振荡器将振荡。

这是一张图片,显示了将输入和输出电容从 1 pF 增加到 20 pF 的效果: -

在此处输入图像描述

X 轴为 9.9 MHz 仅供参考。正如您可能看到的,只有当电容为 10 pF 或 20 pF 时,电路才会产生 180 度的相移。这意味着振荡器将在响应跨越 180 度的每个相位曲线的左侧点(由外部电容调谐的平行谐振点)振荡。

所以,你需要电容器来使这种类型的振荡器工作,制造商会告诉你使用什么,但是,在我看来,有很多微妙之处,一些制造商可能要么不完全知道,要么不会告诉你. 我还要补充一点,似乎很少有关于真正发生的事情以及每个电容器的真正重要性的网络文章。

为什么移除外部负载电容器会使其启动?

也许轨道的自电容和栅极输入电容就足够了。它还取决于晶体的 Q 值,很难推测。也许逆变器的压摆率太慢了?

ST 的AN2867也是一个很棒的应用笔记,您应该阅读。除了振荡器跨导之外,几乎所有 IC 制造商都没有指定振荡器输入和输出电容。这些确实应该包括在负载电容器的计算中,并且可以产生很大的不同。当然,PCB 电容也应该考虑在内,使用各种 PCB 设计工具更容易估算(Saturn PCB 工具包是一个很好的免费应用程序)。

保证完整的振荡器功能(在进行设计计算之后)的唯一真正方法是在整个温度范围和工作电压下对其进行测试。一些晶体制造商也提供服务来做到这一点。Abracon 是我所知道的,目前在一个应用电路上对一个晶体进行全面表征的成本约为 800 美元。

正如安迪所提到的,振荡的条件是满足巴克豪森标准(环路周围的相移为 2 \$\pi\$的整数倍,增益为\$\ge\$ 1)。

一个好的晶体制造商会为您提供保证振荡所需的信息,但是缺少一个 - CMOS 放大器的跨导\$g_m\$ - 对于给定的输入电压变化量,您会获得多少输出电流变化。IC 制造商不想指定这一点(是的,我已经问过主要的 MCU 制造商)。当然,它会随温度而变化,并且因设备而异。最终结果是没有人(除了您)会卡住保证您的产品实际上可以与外部晶体一起使用。

我建议您阅读技术说明和初学者参考资料。至少有一整本书专门介绍晶体振荡器。

就负载电容器而言-您给出的方程式是等效的(第二个假设通常情况下电容器具有相同的值)。如果您希望晶体尽可能接近标记的频率振荡,平均而言,您可以通过指定两个电容器将总负载电容与 xtal 制造商指定的值匹配(通常它们都是相同的值,所以你有只有一个自由度)。如果电容器导致振荡器不可靠,请选择不同的晶体或不同的芯片,或者在频率上有轻微误差的情况下生活。或者指定一个晶体振荡器模块并将风险转移给外部供应商。

对于给定芯片部件号的所有实例,晶体是否真的会在所有条件下可靠地振荡确实是一个正交问题(可能更重要的一个可能的应用程序不关心晶体频率的 +/-0.01% 误差,但是晶体振荡器不启动是一个严重的问题)。

不是您的问题的一部分,但最大驱动功率也是需要检查的一个因素,尤其是对于较小的晶体和音叉晶体。较旧的晶体通常需要 1mW 的功率,但较小的新晶体的最大值要低得多。通常串联电阻(来自输出端)有助于降低驱动功率,但它当然会降低增益,因此在某个值时振荡器将无法启动。