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.

[参考译文] CC2652P7:如果 GPIO 被置位、则始终使用48MHz 晶体

Guru**** 2538930 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1219355/cc2652p7-using-48mhz-crystal-all-the-time-if-gpio-is-set

器件型号:CC2652P7
"Thread:SysConfig"中讨论的其他器件

我观察到在  低功耗模式下花费大量时间的模块中存在一些时间漂移(在一种情况下每天3秒)。 我仅安装了48MHz 晶体、因此我假设这是依赖于 RCOSC。 我有一个 GPIO、当模块位于电量充足的"基站"时、该 GPIO 被拉至接地。因此、我希望它启动并依靠48MHz 晶体进行所有计时。 我最初想、我可以用 SysConfig 配置 LF 时钟源自 HF、at init 执行:

if (GPIO_read(BASE_GPIO) != 0)
    {
        OSCClockSourceSet(OSC_SRC_CLK_LF, OSC_RCOSC_LF);
        while (OSCClockSourceGet(OSC_SRC_CLK_LF) != OSC_RCOSC_LF)
            ;
    }

但是、这不能 实现低功耗。 它在1mA 左右处于空闲状态、而如果 SysConfig LF 为 RCOSC、则它为~90uA。 可能还有另一条路线要去。 替代方案是使用 RSOSC 初始化、然后更改为 XOSC_HF (当您在 SysConfig 中选择"Demined from HF XOSC 时、似乎会发生这种情况)、但当我尝试通过 BLE 进行连接时、它超时:

if (GPIO_read(BASE_GPIO) == 0)
    {
        OSCClockSourceSet(OSC_SRC_CLK_LF, OSC_XOSC_HF);
        while (OSCClockSourceGet(OSC_SRC_CLK_LF) != OSC_XOSC_HF)
            ;
    }

我看到 SysConfig 输出仅用于构建.ccfg 并在引导时加载、因此我不确定这是正确的路由。

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

    我想另一个选项是不允许关断/待机/空闲?

    if (GPIO_read(BASE_GPIO) == 0)
        {
            Power_setConstraint(PowerCC26XX_SD_DISALLOW);
            Power_setConstraint(PowerCC26XX_SB_DISALLOW);
            Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
        }

    这会始终产生2.5mA 的电流、所以我假设它将使用晶体。 为了弄清楚、我使用一个使 UINT32递增的时钟模块中断来计时。

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

    您好、Matt、

    两个选项都可以让您保持48MHz 晶体处于活动状态。

    我推荐大家分享的第二种方法(包括利用 Power_setConstraint)、因为它不太可能干扰其他操作(尤其是无线电操作)。

    此致、

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

    这个选择对我没有太大影响。 我很好奇、以下解决方案为什么会在 BLE 连接期间专门导致问题? 如果我在启动时从 RCOSC 更改为 HF_XOSC、那么除了建立连接外、似乎一切都正常(连接几秒钟后才断开)。

    if (isBase) // back to HF
        {
            OSCClockLossEventDisable();
            OSCClockSourceSet(OSC_SRC_CLK_LF, OSC_XOSC_HF);
            while (OSCClockSourceGet(OSC_SRC_CLK_LF) != OSC_XOSC_HF)
                ;
            OSCClockLossEventEnable();
        }

    但是、如果我在 GAP_LINK_Establed_event 处将时钟源改回 RCOSC (默认值)、就会建立连接。

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

    这种策略是不好的。 与此相关的信息不会重复仅在 SysConfig 中选择"Derived by XOSC_HF"选项的准确性。 正在查找有关如何在启动后执行该操作的详细信息...