This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2541:外部晶体问题

Guru**** 2589280 points
Other Parts Discussed in Thread: CC2541

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/600150/cc2541-external-crystal-issue

器件型号:CC2541

您好!

我们有一个基于 CC2541的设计、该设计将32MHz 晶体用于外部时钟(器件型号:SJKY7U32000M121050B10、由深圳晶体技术制造)。 我们部署了数百个这类装置、但在少数几个装置(3)上、我们看到了一个奇怪的问题。 所有这3个单元过去都运行良好、我们能够使用我们的 BT 应用连接到它们、维持链路并操作它们。 经过几周的完美工作后、这3个单元停止与应用程序通信、当我们打开硬件进行调试时、我们将其缩小到32MHz 时钟。 代码基本上停留在启动时的以下代码片段中:

#define START_HSOSC_XOSC ()\
{\
SLEEPCMD &=~OSC_PD;//开始16MHz RCOSC & 32MHz XOSC */\
while (!(SLEEPSTA 和 XOSC_STB));//等待稳定的32MHz XOSC */\

代码卡在 while ()循环中,因为没有稳定的32MHz 时钟(它是平坦的)。 我们查看了来自 cc2541芯片的 XOSC_Q2输出、它在3.3V 时是平坦的。

当我们将代码更改为使用内部16MHz 而不是外部32MHz 时钟时、单元再次处于活动状态、因此我们非常确信问题出在闭环32MHz 电路或驱动该环路的软件中的某个位置

由于用于正常工作的单元、我们犹豫是否认为这是一个硬件(晶振/芯片)问题。 同时、我们也在失去软件可以做些什么来使32MHz 时钟保持平坦。

感谢能帮助我们解决此问题的任何帮助/提示/指导。

谢谢

Yohannes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yohannes、

    这听起来像是您的晶体有问题。 您能否发布晶体的数据表(在搜索 Web 时、器件型号不会提供任何命中次数)。

    您是否曾尝试在坏板和坏板之间交换晶体?

    此致、
    Fredrik
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Fredrik、

    感谢您的快速响应。 是的、我已经尝试更换坏设备上的晶体、但仍然无法正常工作。 随附的是我们正在使用的器件的数据表。

    谢谢
    Yohannes

    e2e.ti.com/.../Crystal32MHz_5F00_q_2D00_crystal_2D00_SJKY7U.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yohannes、

    因此、即使用已知良好的部件更换晶体、CC2541也无法运行? 您是否还尝试将坏板上的晶体放置在另一个板上?

    数据表是通用的、并不具体说明您所使用的晶体的参数。 CL 和 C0的值是什么?

    此致、
    Fredrik
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Fredrik、

    是的、正确的 CC2541在我用已知良好的装置更换晶体时仍然不运行、但没有尝试将坏板上的晶体放置在另一个电路板上。

    电容器均为12pf

    谢谢
    Yohannes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    BTW Fredrik、发送原理图片段、显示与 cc2541芯片一起使用的32MHz 和32kHz 晶体电路。 以防有一些提示。

    谢谢
    Yohannes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yohannes、

    我是说晶体本身的 CL 和 C0值、而不是您正在使用的负载电容器的值。

    此致、
    Fredrik
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Fredrik、

    很抱歉、您在回答有关 CL 和 C0的问题时遇到延迟。 CL = 12pF、c0 = 5.0pF 最大值(我还将附加更详细的器件数据表)

    根据您的建议、我们将晶振从不工作的电路板上取走、并将其放在另一电路板上、系统工作正常。

    自上次更新以来、我们更深入地了解了该问题。 我们在数字示波器上捕获了连接到 cc2541芯片的复位、XOSC_Q1和 XOSC_Q2信号。 我们看到的是:

    在不会卡住的电路板上(即工作电路板):

    1.复位无效

    2.~700us 后 cc2541将 XOSC_Q2驱动为高电平

    晶振锁定到32MHz、XOSC_Q1和 XOSC_Q2以32MHz 但异相振荡

    在出现卡滞的电路板上(即电路板不工作):

    1.复位无效

    cc2541从不将 XOSC_Q2驱动为高电平、因此 XOSC_Q1上的晶体没有输出

    我们对这一个非常满意。 芯片上是否有任何东西可以防止晶振驱动外部晶振?

    代码中令人困惑的另一个方面是 SLEEPCMD.OSC_PD 的用法和相关注释。 在 START 宏中、它似乎被用来启动内部16MHz 和外部晶振:

    #define START_HSOSC_XOSC ()                           \

    {                                        \

     SLEEPCMD &=~OSC_PD;       /*启动16MHz RCOSC 和32MHz XOSC */     \

    但 在停止宏中、它似乎只用于停止内部16MHz

    #define STOP_HSOSC ()                              \

    {                                        \

     SLEEPCMD |= OSC_PD;       /*停止16MHz RCOSC */            \

    在相关但单独的注释中、查看 cc2541用户指南、未记录用于使振荡器脱离断电模式的位(SLEEPCMD.OSC_PD)和用于监控振荡器状态的位(SLEEPSTA.XOSC_STB)-两个位均显示为保留位。 是否有更新版本的用户指南来描述这些位?

    谢谢
    Yohannes

    e2e.ti.com/.../Crystal_2D00_SJK_2D00_7U_2D00_32.00_2D00_12_2D00_10_2D00_60_2D00_B_2D00_10.pdf.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Fredrik、

    我们提供了更多信息、这些信息可能会让您对这个问题有所了解、并希望由您处理。 具体而言、我们 了解到当系统进入不良状态时、XOSC_Q2上 CC2541芯片的输出会卡在"低接地电阻"状态(约10欧姆)、从而防止该引脚被驱动至外部晶体的高电平以启动振荡器、 芯片会卡在 while 环路中、等待 XOSC 上电。  无论系统是通电还是关断、该低电阻状态都将持续存在。 当我们在不存在此问题的"正常"电路板上测量此电阻时、我们得到的电阻值为4兆欧。 我们发现使系统脱离不良状态的唯一方法是对外部32MHz 晶体进行降级、移除、然后重新连接和重新焊接。 当我们在移除外部晶体后测量 XOSC_Q2引脚上的接地电阻时、请参见4MHz。 当我们放回晶振时-仍然看到4兆欧。 我们不知道为什么移除并重新连接晶体可以解决该问题、但我们已在两个单独的电路板上确认了这一点。  

    问题:
    • 您是否熟悉其中的任何一个? 我们在现场看到的几百个器件中、大约2%出现了这样的症状(即 CC2541无法启动)。  
    • 环路中是否有任何可能导致 Q2输出永久接地的路径? 例如、外部晶体路径是否可以永久断电?
    • 我们已读取 SLEEPCMD.OSC_PD 和 SLEEPCMD.PWR_MODE (1:0)、两者均设置为0、因此 XOSC 不会从此处断电。 是否有任何其他可能的路径会导致 XOSC_Q2的低电阻路径接地?
    • 是否有任何潜在解决方法的想法? 我们曾考虑过使用 CLD (时钟丢失检测)寄存器-它是否具有在 CLD 引起的复位期间纠正此问题的附加逻辑?

    谢谢
    Yohannes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yohannes、

    我以前从未在我们的任何 CC25xx 器件中看到过此问题。 对我来说、这听起来像是晶体缺陷、尤其是当晶体从电路中移除后、阻抗会跳回到正确的值。 除了在此处发布信息外、您还联系过晶体制造商吗?

    如果您可以使器件始终发生故障、尝试安装不同的晶体部件并查看这是否可以解决问题将会很有趣。

    此致、
    Fredrik