32 kHz晶振未按预期运行


16

我已经尝试解决这一问题已有几天了,阅读了典型的晶体操作/配置,我很茫然。我尝试在此处搜索,但是没有遇到与我的问题类似的事情,因此,如果我在某个地方错过了解决方案,对不起。

我正在尝试使用PIC在外部晶振上运行RTC,但是晶振并没有在我期望的时候振荡,在其他情况下也正在振荡,我对此一无所知。我不是EE,所以我可能只是超级无知。

晶体:LFXTAL016178。我可以肯定地说,因为没有列出任何东西,所以它是一个并联谐振晶体。它的负载电容为6 pF,我发现这很罕见?我不确定。

PIC:PIC24FJ128GB204。我已经按照数据手册的建议连接了晶振,但是它在选择负载电容器方面没有提供任何明确的帮助,因此我进行了一些搜索,并在线找到了其他资源来帮助我。

设置:我从几个来源看到,负载电容器的一个好的经验法则是,在C1C2之间增加2至5 pF的杂散电容。我选择了两个电容的中间值为6pF,但仍不确定该选择有多糟糕。CL=C1×C2C1+C2C1C2

这是我的示意图的图片: 原理图 布局: 布局

无效的情况:

  • 如原理图所示,两个引脚上均装有6pF负载电容器,它不会振荡。除非它每隔10分钟振荡一次。
  • 卸下电容器后,它的振荡非常缓慢,可能比应有的速度慢约2.5倍。我没有测量这个速度。
  • 在顶部焊接额外的6pF电容器以制成12pF电容器时,它不会振荡。
  • 引脚之间带有3 pF电容器和10 MOhm电阻。(RTCC时钟不稳定。)

情况下,它确实工作:

  • 当我用示波器探查SOSCI引脚时。在上面的前三种情况中,只要我将探针触摸到SOSCI引脚,它就会启动,并给我一个很好的干净正弦波。当我触摸SOSCO引脚或使用3pF电容器时,它没有执行此操作。我知道它事先无法工作,因为有些LED每秒应该闪烁一次,只有在连接探头时才闪烁。(我对示波器一无所知,我只知道如何操作它们。探头显示6MHz / 1MOhm / 95pF,示波器显示连接探头的60MHz / 1GS / s和300V CAT II。这是泰克公司的产品。 TDS 2002,如果对任何人都意味着什么。)
  • 当我在SOSCI与地面之间连接330欧姆电阻时。这是我手头上的两个电阻器之一。10k看起来像是使其以大约正确频率的一半运行。
  • 使用3 pF电容器,但频率为14 kHz。

这是我测量的一些频率:

  • (12 pF电容)SOSCI测频探头:32.7674 kHz
  • (12 pF电容)PIC在SOSCI上具有330下拉电阻输出的频率:32.764 kHz
  • (12 pF电容)PIC使用LPRC输出的频率:32.68 kHz
  • (3 pF电容)PIC输出的频率:14.08 kHz

基本上,我想知道的是为什么当我使用示波器探头时,有时它会完美振荡,以及正确的解决方案是什么才能使其按我的意愿工作。

C大号

CLC大号


1
所有这些接地都会导致更大的电容。
伊格纳西奥·巴斯克斯

1
如果您在晶体上并联一个相当大的电阻(例如介于300k和4.7M之间),该怎么办?
uint128_t

1
该PIC具有与XTAL引脚共享的非常可配置的GPIO。您确定软件中的I / O配置正确吗?
Ale..chenski


2
晶体振荡器非常棘手。您是否检查了它们的有效参考设计,使用了哪种晶体以及哪种晶体?microchip.com/wwwproducts/zh/PIC24FJ128GB204#tools
Ale..chenski

Answers:


10

MCU制造商可能有故障。这里是绝对没有任何借口不设计一个现代化的MCU RTC振荡器可靠的功能与任何典型的市售32kHz晶振。

不幸的是,正如您已经发现的,相反的情况更为常见-在您的情况下,MCU数据手册中没有提到6pF的负载电容不起作用。

根本问题是您要处理由两个不同制造商制造的由两个组件组成系统。他们中的一位讲硅,另一位讲石英,他们从未正确地同意如何告诉设计师他们的产品如何可靠地协同工作。

因此,正如您所发现的那样,晶体振荡器可能是讨厌的陷阱。我已经看到主要的汽车生产线由于晶体振荡器启动问题而陷入停顿!

无论如何,要解决您的WHY问题,有四个重要参数处于危险之中:

  1. MCU振荡器的输出阻抗。这随频率而变化,并且通常因配置位(例如“驱动器级别”或“功率级别”)而变得复杂。我从未见过任何MCU制造商指定/保证的这些值。

  2. 外部电容器-晶体-电容器“ pi”网络的输入阻抗。这主要由输入侧的电容器确定,而电容器又由晶体制造商指定的负载电容确定。

  3. G

  4. 谐振时外部Cap-Xtal-Cap“ Pi”电路的电压增益(实际上是损耗)。这主要取决于晶体的内部等效串联电阻(ESR)。您提到的晶体指定ESR = 50k。电阻也会随着时间的流逝而增加(因为水分/杂质会渗入晶体外壳),并且还会受到焊接温度/时间的影响。(晶体盒中的杂质蒸发并沉淀在石英上)ESR在制造批次之间也可能有很大差异。对于32kHz晶体,50k是相当典型的ESR-我看到的小规格晶体在32kHz时的最低额定值为30k。

为了使任何振荡器工作,总电压增益必须为> 1 ,这是(3)和(4)的乘积。此外,增益的相位(是的,增益是一个复数)必须为360度。反相放大器提供大约180度的相位一半,而cap-xtal-cap网络提供“第二反相”。

这是一个简单的在线仿真,可以帮助您了解增益,输出阻抗和电容器值如何相互作用并影响启动。右键单击任何组件以更改其值。(注意-此仿真使用1mV的残余电容器电压来伪造启动,但在现实生活中,放大器中的噪声是启动的来源,就像本例一样)

那么您的情况如何?MCU振荡器设计师最有可能将其输出级设计为能够与12.5pF加载的晶体可靠地工作,结果发现在6pF加载时,根本无法满足电压增益或相位要求。由于数据手册中没有提及有关设计假设的信息,所以这对您和其他许多人来说都是问题。

哇,嵌入式设计师应该怎么做?

首先,请始终注意,一个边际晶体振荡器会给您的企业造成大量损失。

其次,鉴于以上情况,尤其是如果您缺乏经验或您的MCU供应商未指定晶振参数 在数据手册中,则最好的投资可能是外部低功耗32kHz振荡器。

第三,确保您使用的晶体具有您的MCU制造商指定的ESR和电容。如果数据表中没有任何内容,请向供应商索取推荐的晶体零件编号列表,或选择具有此功能的MCU。

四,测试,测试,测试!过度所有电压和温度下。请注意,如果可能的话,请通过使用RC时钟在固件中对启动进行计时,并花费多少时间;如果生产单位超出正常水平(例如2倍),请让您的测试固件设置一个标志,以便在生产测试中注意到它。这样一来,生产单位就无法在没有警报铃响的情况下用边际振荡器出门。

有经验的生产验证工程师做什么?

他们通过在“有效的方法”和“可靠的有效方法”之间要求10倍的安全裕度来解决普遍缺乏适当信息的问题-他们测量了实际的ESR,然后在晶体中串联了一个额外的10倍附加的“障碍抗性”。 cap-xtal-cap网络。如果“残疾人ESR”系统适用于所有电压和温度组合,则假定10倍的安全裕度足以覆盖ESR和MCU增益的未知变化。本应用笔记的图3中对此进行了部分解释

你该怎么办?

如果您由于某种原因无法执行上述测试,并且想销售成千上万的产品,那么您最好投资额外的便士购买现成的32kHz振荡器从振荡器供应商那里购买一个,这些振荡器已经做了所有的测试。您,或切换到在器件数据手册中指定特定晶振(或晶振要求)的MCU。

虽然您可以通过选择内部电阻较低的晶体来“解决”这种情况和/或通过使用不同/不对称的电容值,但由于上述原因,您的解决方案仍然是微不足道的。

TL; DR:

晶体振荡器会花费您大量的时间和金钱。使用如果可以,外部振荡器,或者在所有电压和温度范围内执行上述“残疾人ESR”测试。

最后,请确保使用NPO电容器以提高温度稳定性。


较低的ESR适用于AT切割的AMD系列模式,但较高的ESR(如50〜70kohm)优于30k的稳定性
Tony Stewart Sunnyskyguy EE75,2008年

如果您的应用需要高可靠性,我还建议使用外部振荡器。如果成本是主要因素,那么我建议在所需频率下使用“标准” LC振荡器,并使用晶体-只是使其稳定,而不用作信号源。
吉尔

@TonyStewart-有趣,您知道为什么会这样的根本原因,或者您有很好的参考资料吗?
neonzeon

@neonzeon我的参考文献并不方便,但是OEM测试了32.76kHz谐振器的各种供应商的应用笔记表明,在较高ESR时具有更好的稳定性。IQD指出,他们的超低容忍低功耗XO的Xtal没有应用说明。是的,对于最佳10 ppm 32kHz器件的规范,规定ESR = 70k和0.1uW + \-0.01 uW驱动电平,负载C降至6pF选项。这意味着人们不应该使用,甚至用铜OP的设计倒也不是5V,也没有卢比
托尼·斯图尔特Sunnyskyguy EE75

在上述有关ESR的假设中,我可能是错的,ti.com / lit / an / slaa322d / slaa322d.pdf#page12 表示SF裕度最高,为35k,最低为70k,所以也许更高的ESR功能... IQD表示功率较低因为最大0.1uW为10%,最大为0.5uW,而其他最大为1uW,所以较低的ESR有利于保证金,而较高的ESR可实现更低的功耗
Tony Stewart Sunnyskyguy EE75,2008年

14

主要有两件事:

  1. 您没有足够的负载电容。

  2. 您不了解负载电容。

想象一下以正弦波以晶体频率驱动晶体的一侧。该信号为低阻抗。负载电容是您放置在晶体另一侧以引起180°相移的电容。

这种晶体的相移根据晶体工作频率下的频率而快速变化。由于相位随频率变化的频率正好在工作频率处非常陡峭,因此对于驱动电路而言,确保晶体以预期频率工作是一件好事。当晶体将输入相位偏移180°时,这些类型的电路会产生最佳振荡。由于只有很小的频率变化会把它弄乱,因此产生的振荡非常接近晶体的预期频率。

现在回到您的电路。最重要的线索是,当您将示波器探头放在振荡器输入引脚上时,一切正常。这样做是在晶体的输出侧增加电容。显然,通过您的设置,附加的示波器探头电容会导致晶体将相移适当的量,以使系统振荡。如果您自己增加更多电容,仅用于晶体输出,则复制示波器探头的效果,一切正常。对于入门者,再尝试10 pF左右。

不要在不了解互联网的情况下使用您在互联网另一端找到的公式。您显示的方程式有很多假设,其中一些无效。不幸的是,关于晶体存在很多传统的愚蠢。

晶体本身只是一个两端设备,对电路接地一无所知。最终,负载电容就是两端的电容。因此,传统的愚蠢做法是在晶体的每一侧都使用两个相等的电容器接地。由于这些是串联的,因此每个都需要是所需电容的两倍。但是,无论您认为在晶体的每一侧上有多少对地杂散电容,都需要从这些电容中减去。

传统愚蠢的问题是它忽略了晶体驱动器输出的阻抗。考虑极端情况,其中为0。在这种情况下,晶体输入侧上添加的电容完全无关紧要,因为它与驱动器的0阻抗并联。这样,晶体上的负载只是其输出上的电容。

做一些数学。在32.8 kHz时6 pF的阻抗为810kΩ。现在,晶体驱动器的阻抗肯定不为零,但相对于810kΩ而言很可能很大。

考虑一下每个上限的实际作用。输入上的一个将加载晶体驱动器。这样做的主要目的是衰减从驱动器出来的某些谐波。这样可以减少在晶体上的拍打,并降低了整个系统以谐波振荡的可能性。晶体具有复杂的转移特性。它们在谐波上可能具有与预期工作频率相同的特性。切割某些晶体以便故意使谐波使用,在业界称为泛音模式

输出上的电容是真正的“负载”电容。它的电抗与晶体的电抗相反,以正确的频率将结果正确移相。

在您的情况下,晶振的额定负载为6 pF,这就是您输出的功率。那应该起作用了。我的猜测是,晶振输入上的上限,实际上是晶振驱动器的输出上的上限,也引起了与负载上限相反的相移。就像测试一样,尝试去掉晶振输入端的盖子,并在其输出端保留6 pF的电容。看到晶体输入上的波形会很好,但是即使是10倍范围的探头也可能会改变它。无论如何都可以尝试,但要确保示波器探头设置为最高阻抗,因此可能是最低电容。


由于尺寸的原因,大多数泛音晶体专用于> 10MHz而不是0.32768 MHz。还解释发生了什么Q,当输出低阻抗驱动晶体CLC并联谐振模式而不一系列R.
托尼Stewart Sunnyskyguy EE75

我认为2.是正确的,但1.不是。迹线间隙负载上限太大且没有分裂,因此它允许第一个上限创建传输LPF并防止谐振器两端的馈通电容。重新考虑
Tony Stewart Sunnyskyguy EE75,2008年

7

两个电容和晶体以180度相移的方式工作。两个上限的大小(比率)将定义电压传输比。6Pf听起来有点小,问题是晶体并联负载的设计要点是什么?您不想远离此值。我通常每侧有27pf。

如果晶振直接与处理器输出相连,我还会看到一个问题。该输出可能为低Z,可能会驱动晶体。请记住,这些手表晶体的驱动规格很小,非常容易过度驱动。R的100K可以用来减少晶体驱动。

确保处理器从输出到输入都有内部1-10 Meg偏置电阻。您提到过,当与示波器探头接触时,它开始振荡。这可能是直流偏置问题(我想是10Meg示波器探头),也可能是探头帽调整了调谐的电路传输比。

要真正干净(没有杂散的助焊剂)并且电线要短。这是真正的Hi Z电路。

鲍勃·K

另外:我使用的“标准”探头为x 100,因为它们提供的电容最小,我记得大约为1.5pf。在该电路上很难使用x 10,而x 1则毫无用处。Ues x 100并提高示波器垂直增益,使示波器前端发挥作用。X 1探针对于高Z或高速几乎是无用的。您会喜欢x 100进行数字工作的原因,因为GND钳位电流下降了10倍。请尝试一下。


我能找到的有关内部电阻器的唯一答案是,主振荡器引脚的电阻值为2-10 MOhms,而次级振荡器引脚的电阻值为1-10 MOhms。
Andrew Elliott

6

在32KHz频率下,这些不是典型的XT / AT切割晶体,而是数字表晶体,它们是几毫米长的微小“音叉”。

由于它响应触摸,因此PIC提供的DC偏置可能是错误的。尝试增加连接在振荡器引脚之间的大阻值电阻(10Meg,甚至22Meg。)

过驱动可能会损坏晶体。(一个参考文献建议在SOSC引脚和晶体之间包括超过100K的电阻。)

有关大量信息,请阅读使用这些低频率音叉晶体的带振荡器的旧芯片的规格表...

此处第10页:http//www.abracon.com/support/Tuning-Fork-Crystals-and-Oscillator.pdf

http://www.ti.com/lit/an/slaa322d/slaa322d.pdf

PS我注意到,电子金矿目前有便宜的“手表晶体”音叉,其频率异常,而不是32KHz


同意。我见过的大多数32 kHz晶体振荡器在晶体引脚两端都需要10 MEG电阻。
文斯·佩特隆

成立,因为方波对称性由Vdd / 2附近的Vgs交叉阈值平衡。但不正确,因为在其中一份应用笔记中,Microchip已经包括10M并建议外部用于32k器件1M
Tony Stewart Sunnyskyguy EE75,2008年

3

根据我的经验以及大多数OEM的TI,建议使用1MOhm的外部反馈,而不是内部已建议的10M。音叉谐振器具有较高的ESR,并且具有比XT模式或AT切割晶体更低的uW损伤阈值。

。警告。如果忽略Mfg或OEM应用说明,则可能已损坏。

这是一个并联谐振电路。谐振是高阻抗180度相移,反相后会给出正反馈。内部有10M欧姆的高R反馈,该反馈在DC处用于对Vdd / 2处的输入进行自偏置,以产生方波,该方波的平均DC电压为Vdd / 2。

如果输入DC不在此值Vdd / 2附近,在该位置Vdd / 2作为线性反相放大器工作,则输出将卡在“ 1”或“ 0”处。我希望输入SOSCI与Vss或Vdd之间为330欧姆,以充分偏移偏置并停止时钟。这矛盾与330 Ohm至0V的测试,并且仅当您反转In和Out时才有意义,因为只有输出SOSCO可以驱动此。

运动电容仅为约3.5 fF(fentofarads),电感约为35kH,ESR为35〜70 kOhms。这定义了以32768 Hz振荡的最佳谐振器参数。Q> 10k。

如果您阅读Microchip的应用程序。注意,它建议;其中之一是 http://ww1.microchip.com/downloads/en/AppNotes/00001798a.pdf

  • 添加1M外部反馈以减少表面泄漏污染和误偏的潜在误差
  • 添加系列R以防止uW超载,例如10k,并对其进行裕度测试,以确保没有振荡裕度Rs /(sRs + ESR)> 2 =边际,3 =更好,5 =最佳这确保了有足够的环路增益来振荡。
  • 如果使用不相等的电容,请减小输入电容,以允许输入电容。
  • 清洁所有助焊剂垫
  • 考虑整个cct周围的保护间隙岛,然后考虑外围保护信号或接地。减少手指干扰或串扰。

您唯一的主要设计缺陷是所有走线周围的铜填充会增加过多的电容,并将相移反馈从180度降低到90度,如果环路增益不足,则该相移不会振荡或引起较低的谐振。这种布局迫使您选择一个需要更大载荷上限的xtal才能满足Barkhausen标准的稳定性。

这些走线间隙应等于或不小于IC焊盘之间的间隙,因为杂散C gnd与间隙成反比。

尽管Microchip的建议提高了利润率,但他们并未期望使用小于0.1mm的铜填充间隙的用户。

1:1探针的接地电感和同轴电容太大,1M也会使输入直流偏置失调。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.