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.

[参考译文] CC2340R2:LFCLKGOOD 置1、与晶振状态无关

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1463616/cc2340r2-lfclkgood-set-regardless-of-crystal-state

器件型号:CC2340R2

工具与软件:

嗨、团队:

我的客户遇到与晶振相关的问题。

尝试执行的操作

他们 正在为 CC2340开发测试代码、这些代码仅会在实验室中进行编程和使用、以便测试 CC2340晶体的启动时间和精度。
战略是:
  • 确保内部振荡器 关闭
  • 将晶体信号路由到 DIO12以获得缓冲输出
  • 将 GPIO (DIO20)设置为高电平
  • 启用外部晶体
  • 当适当的标志表示晶体正常时、将 DIO20设置为低电平
  • 测量启动时间内 DIO20的脉冲宽度
  • 测量 DIO12上的频率
可以采用的方法
48MHz 晶体的实现似乎能够按预期工作。
在下图中(CH1是启动上升时间脉冲、CH2是缓冲晶体输出)、您可以看到启动脉冲变为高电平、然后出现时钟信号、然后启动脉冲变为低电平、指示设置了晶体"良好"标志。 在本例中、启动时间为7.208us。
对于48MHz 晶体、我们使用 HFXTGOOD 标志。
标记。
此外、对于32KHz 实施、DIO12上的缓冲时钟输出按预期工作


什么不起作用
对于32KHz 实现、它们 使用 LFCLKGOOD 标志。 LFCLKGOOD 标志使用 LFQUALCTL 中的配置来确定"良好"。
在下图中、您可以看到启动脉冲设置为高电平、然后在任何32KHz 时钟 转换之前立即变为低电平。
启动时间表示为840ns、显然没有足够的时间来支持任何32KHz 周期。
LFQUALCTL 的说明如下:
它的行为就像 LFQUALCTL.CONSEC 设置为0一样、但他们已经验证它不是。

总结问题
出于我们不理解的原因、无论实际的晶体状态如何、LFCLKGOOD 似乎都会立即被设置。
我们已经验证  内部 LF 振荡器已被禁用并且 LFCLKGOOD 最初为0。
如有任何问题或需要说明、请告知我们。

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

    尊敬的 Luke:  

    感谢您联系我们。 我们需要从设计团队那里获得一些支持。 请耐心等待。  

    我相信,在一点上,我们需要知道的内容"MAXRR "-好,如果你能得到这个信息:)  

    此致、  

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

    您好!

    我为 Luke 的客户工作。  不调整 MAXRR 和 CONSEC、它们分别等于其复位值20h 和64h。

    我希望这对您有所帮助、

    Rick

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

    大家好、Rick、  

    感谢您的分享、我正在等待团队的一些意见。 I

    请多多包涵。  

    此致、  

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

    您好!  

    感谢您的耐心。  

    首先、我想说明的是、 CC2340R2中的 LF 良好指示器 并不是时钟保持稳定的完全可靠指示器。 这已经在验证中找到、并且 SDK 中提供的软件会实现所需的权变措施。
    建议执行以下操作: 在切换到时钟之前、SW 需要确保 LF 时钟稳定。 为了确保确实是这种情况、建议在打开 LFXT 后等待1s、在打开 LFOSC 后等待100ms、然后再将其切换到主时钟

    但是、这并不能解释正常信号在您的情况下的行为、在开发软件时必须考虑这一点。

    回到 LF 良好信号完全不起作用- 到目前为止尚未观察到这种行为。 为了保持理智、我认为我们应该检查您打开 LFXT 时所遵循的程序。  
    请与我们分享此类程序、以便我们进行审核吗?  

    此致、  

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

    您好!

    谢谢、这很有帮助。  从你的答复看来,我们不能做我们想要做的事情。  为了清楚起见、我将重申我们要做的事情。  我们正在尝试测量外部低频晶体的启动时间。  我们使用 DIO20作为端口引脚来测量这段时间。  当我们允许晶体启动时、我们会升高 DIO20、当 LFCLKGOOD 信号为真时、我们会降低 DIO20。  我们还将在 DIO12上导出 LF 时钟信号。  这样、我们可以捕获上面的示波器图、该图显示 LFCLKGOOD 信号在晶体实际启动之前发生。   以下是将允许您看到发生此情况的源代码。  我们只需在 board_init ()运行之后,在 app_main ()启动调度程序之前在 main ()中调用它即可。

    //关闭 HFXT 和 LFXT 晶体
    HWREG (CKMD_BASE + CKMD_O_HFXTCTL)并且=~CKMD_HFXTCTL_EN_M;
    HWREG (CKMD_BASE + CKMD_O_LFXTCTL)并且=~CKMD_LFXTCTL_EN;

    /*启用 LFCLKGOOD 注意 LFCLKGOOD 块未直接连接到 LFXT。
    *查看 LFCLK 链接,以下3个步骤*/
    HWREG (CKMD_BASE + CKMD_O_IMSET)= CKMD_IMASK_LFCLKGOOD;

    //通过设置 GOOD 位的 ICLR 寄存器来清除 RIS LFCLKGOOD 标志。
    HWREG (CKMD_BASE + CKMD_O_ICLR)|= CKMD_MIS_HFXTGOOD_M + CKMD_MIS_LFCLKGOOD_M;

    //将 LFXT 路由到32K 总线
    /*设置 LFCLK */
    HWREG (CKMD_BASE + CKMD_O_LFCLKSEL)= CKMD_LFCLKSEL_MAIN_LFXT;

    //将32K 总线路由至时钟输出引脚
    Crystal_OSC_Output ();

    //打开 LFXT
    HWREG (CKMD_BASE + CKMD_O_LFXTCTL)= CKMD_LFXTCTL_EN;

    // DIO20高[ osc 时间开始]
    HWREG (GPIO_BASE + GPIO_DOUTSET31_0)= 1 << my_startup_time_output;

    while (1)

    small_delay ();//延迟100或2微秒
    //如果启用 LFXT、则测试 LFXT 正常标志
    IF (HWREG (CKMD_BASE + CKMD_O_RIS)和 CKMD_MIS_LFCLKGOOD_M)

    //如果设置了 GOOD 标志、则清除 DIO20
    HWREG (GPIO_BASE + GPIO_DOUTCLR31_0)= 1 << my_startup_time_output;
    Break;//从循环中断
    }
    }

    //完成

    void Crystal_OSC_Output (void)

    uint8_t clockSrc = 0x0F;//对于 LF 晶振时钟

    //首先将输出驱动为低电平
    GPIO_setConfig (12、GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW);

    //配置 IOC.IOC12.PORTCFG MMR 以选择 DTB
    HWREG (IOC_BASE + IOC_O_IOC12)&=~IOC_IOC12_PORTCFG_M;
    HWREG (IOC_BASE + IOC_O_IOC12)|= IOC_IOC12_PORTCFG_DTB;

    //确保在 IOC 中选择 DTB 多路复用器(如果需要
    //源时钟 IP)在 DTB0上被驱动时复位。
    // ULLSEL 多路复用选择(选择 CKMD)
    HWREG (IOC_BASE + IOC_O_DTBCFG)&=~IOC_DTBCFG_ULLSEL_M;
    HWREG (IOC_BASE + IOC_O_DTBCFG)|= 0x1 << IOC_DTBCFG_ULLSEL_S;// 0x1以将 CKMD 路由到 DTB0

    //将 dtb[2:0]映射到 dtb[15:13]
    HWREG (IOC_BASE + IOC_O_DTBCFG)&=~IOC_DTBCFG_PADSEL_M;
    HWREG (IOC_BASE + IOC_O_DTBCFG)|= IOC_DTBCFG_PADSEL_DTB2TO0;

    //启用 IOC.DTBOE.EN0
    HWREG (IOC_BASE + IOC_O_DTBOE)&&~IOC_DTBOE_EN0_M;
    HWREG (IOC_BASE + IOC_O_DTBOE)|= IOC_DTBOE_EN0_ENABLE;

    //选择要在 DTB0 (DTB[0])上输出的时钟(CKMD)
    HWREG (CKMD_BASE + CKMD_O_DTBCTL)且=~CKMD_DTBCTL_CLKSEL_M;
    HWREG (CKMD_BASE + CKMD_O_DTBCTL)|=(clockSrc)<< CKMD_DTBCTL_CLKSEL_S;

    //启用 DTB 输出
    HWREG (CKMD_BASE + CKMD_O_DTBCTL)并且=~CKMD_DTBCTL_EN_M;
    HWREG (CKMD_BASE + CKMD_O_DTBCTL)|= CKMD_DTBCTL_EN;
    }

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

    大家好、Rick、

    希望您做得好! 我将支持您尽快解决此问题。 我已将您分享的最新信息与我们的研发团队进行了接洽、在收到回复后、我会告知您这一情况。

    此致、

    1月

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

    大家好、Rick、

    您能否提供 small_delay()的源代码? 研发团队希望了解该函数为实现延迟而执行的确切程序。

    此致、

    1月

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

    您好、Jan:

    这部分代码只是伪代码。  任何类型的延迟或根本没有延迟都可能起作用。 因此、我无法为这么小的延迟提供代码。

    实际代码只是循环遍历较大部分代码、并检查端口引脚、以确保我们仍在测试低频晶体、然后再返回。  我只是猜测、返回测试引脚的时间将是大约100微秒。

    谢谢!

    Rick

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

    大家好、Rick、

    我懂了。 我会告知研发团队。 感谢您对此作出快速响应。

    此致、

    1月

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

    大家好、Rick、

    刚刚从 R&D 得到了反馈、他们建议:

    1. 禁用所有 LF 振荡器(LFOSC 和 LFXT)  (HWREG (CKMD_BASE + CKMD_O_LFXTCTL)= 0x0、HWREG (CKMD_BASE + CKMD_O_LFOSCCTL)= 0x0)
    2. 等待 LFCLK.STAT.LFGOOD 变为低电平(while (HWREG (CKMD_BASE + CKMD_O_LFCLKSTAT)&CKMD_LFCLKSTAT_GOOD))
    3. 使用 ICLR 清除 LFGOOD RIS (HWREG (CKMD_BASE + CKMD_O_ICLR)= CKMD_ICLR_LFCLKGOOD_M)
    4. 切换到 LFXT (LFCLK SEL)
    5. 启用 LFXT
    6. 将 DIO 设置为高电平
    7. 等待 RIS_LFCLKGOOD =1
    8. 将 DIO 设置为低电平
    9. 测量启动时间的切换宽度

    此致、

    1月

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

    谢谢 Jan、

    我等不及要试试这个!  如果它对我们有用、我会发布。

    谢谢!

    Rick

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

    大家好、Rick、

    听起来不错! 请告诉我测试结果是什么样的!

    此致、

    1月

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

    1月、

    这确实对我们有用。  谢谢你。

    Rick

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

    大家好、Rick、

    很高兴听到! 目前、我要将该主题标记为已关闭。 如果您对此主题还有任何其他问题、请随时回复此评论、或在出现新主题时创建新主题。

    此致、

    1月