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.

[参考译文] MSP430FR6922:正确设置叉形晶体振荡器时出现问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/740015/msp430fr6922-problem-setting-the-fork-crystal-oscillator-correctly

器件型号:MSP430FR6922

团队、

我们在 MSP430FR6922的叉形晶体方面存在问题。 我们需要为 MCLK 设置8MHz 并将外部晶体设置为 ACLK。

下面您可以看到我们使用的函数、如果我们使用该函数、MSP430FR6922会保持循环 DO -而持续几秒钟。 该时间是随机的、介于1秒和无穷大之间。

晶体参数为:

  • 封装:3215
  • 负载电容:6pF
  • 频率:32768Hz

您能不能告知问题是什么、或者代码中的错误是什么?

需要注意的一点是、如果我们在 JTAG 编程器上使用 msp430fr6922、则不会发生所描述的问题。 如果我们拔下此插头并连接到3V 电源、则说明的问题将开始。

感谢你的帮助。

TI 客户

 

void ClocksStart (void)

{

PJSEL0 |= BIT4 | BIT5; //为晶振启用时钟功能引脚。

//禁用 GPIO 上电默认高阻抗模式以激活

//先前配置的端口设置

PM5CTL0 &=~LOCKLPM5;



SFRIE1~……OFIE;//阻止发生晶体错误时发生的中断
//设置时钟

CSCTL0_H = CSKEY >> 8; //解锁 CS 寄存器

CSCTL1 = DCOFSEL_6; // DCORSEL = 0A

DCOFSEL=6 (DCOFSEL=110)->8MHz

CSCTL4 &=~ LFXTDRIVE_2; //设置晶振的功率、LFXTDRIVE 00 - 3、5pF、LFXTDRIVE 01 - 6pF、LFXTDRIVE 10 - 9pF、LFXTDRIVE 11 - 12pF

CSCTL2 = SELA_LFXTCLK | SELESS__DCOCLK | SELM_DCOCLK;//设置 ACLK = XT1;MCLK = DCO

CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; //将所有分频器设置为1

CSCTL4 &=~LFXTOFF; //启用晶振。

P9DIR |= BIT5;

操作

{

P9OUT ^= BIT5;

CSCTL5 &=~LFXTOFFG; //清除 XT1故障标志



SFRIFG1 &=~OFIFG;



} while (SFRIFG1和 OFIFG); //测试振荡器故障标志

CSCTL0_H = 0; //锁定 CS 寄存器



SFRIE1 |= OFIE; //允许发生晶体错误时发生的中断}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bartosz、
    您使用什么晶体? (数据表)晶体具有的 ESR 和所需的电容。
    您是否考虑过有关布局中的寄生虫、串扰的 LFO 应用手册?

    请考虑该振荡器的运行电流约为100nA、因此每个干扰或错误负载都会产生影响。

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

    您好、Dietmar、

    感谢您的反馈。 我们正在等待制造商提供的晶振的完整数据表。

    我们遵循了 LFO 应用手册的规则-您能否检查以下布局设计是否正常?

    此外、我们还有另外两个问题:

    1) 1)您能否确认上面用于启动两个时钟的共享函数是否正常(MCLK 8MHz、ACLK 32768Hz)?

    2) 2)我们在56引脚 DGG 封装中使用 msp430fr6922。

    a)能否使用另一个器件在 PJ.2 ACLK (pin26)上测量 LFXT (10ppm)的精度?

    b)输出信号是直接从 ACLK 接线、还是引脚上的变化与 MCLK 同步?

    如果引脚上的变化直接来自 ACLK、我认为可以测量 LFXT 的精度。
    n´t MCLK 同步引脚上的变化、则无法测量 LFXT 的精度。

    谢谢、
    TI 客户

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

    您好、Bartosz、

    关于布局:
    -对称负载电容器很好
    -短迹线很好
    - GND 岛连接到本地 GND 以降低返回电流是良好的
    -对我来说、GND 岛周围的 AVCC 布线对我来说是没有意义的、我会将其布置在引脚后面以避免环路
    但是 、我对这种 shoud 的链接并不会极大地使晶体膨胀、除非您在 AVCC 上具有很高的膨胀噪声。

    关于代码:
    代码看起来不错您可以从产品页面中尝试代码示例 msp430fr6x7x_cs_03.c 来检查这是否有效、我们是否没有监督过某件事情
    我还会尝试不降低驱动强度、因为晶体具有高 ESR 并且需要更多电流
    -也许也可以在循环中清除 HFXTOFFG、以确保它未被设置(我知道它不应该被设置、而应该进行一次试验)
    -我将在环路中执行 P9.5的端口切换、具体取决于您的布局、这可能会在启动期间干扰晶体

    有关测量的内容
    -是的、您可以在 PJ.2处测量 LFXT、但如果 OFIFG 不是、您将在那里测量 REFO、因为这是失效防护时钟
    -如果您在 PJ.2上设置了相应的第二个功能、ACLK 同样会切换到引脚、但只要 OFIFG 被设置、LFXT 时钟就不会切换到 ACLK、而是失效防护时钟
    最后、您可以测量 ACLK 引脚上的 LFXT 精度、这与 MCLK 不同步

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

    您好、Dietmar、

    非常感谢您的反馈、这很有帮助。

    最后一点、您能不能建议我们的两个布局版本中哪一个版本更好(附在 zip 文件下)?

    这两种解决方案因小型 GND 桥(第二种解决方案)而异、后者以橙色方形标记。

    谢谢!

    e2e.ti.com/.../layout.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bartosz、
    我认为第二个解决方案更接近 LFO 应用手册图7和8中所示的建议。