您好!
我们有一个基于 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
