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.

[参考译文] CC2745R10-Q1:基于 AIS2DW12 中断的关断和唤醒时面临的问题

Guru**** 2979400 points

Other Parts Discussed in Thread: CC2745R10-Q1

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1661472/cc2745r10-q1-facing-issue-in-shutdown-and-wakeup-based-on-ais2dw12-interrupt

器件型号: CC2745R10-Q1

您好的团队、

我正在使用 CC2745R10 器件、并 在 DIO17 上使用 GPIO 中断来实现具有唤醒功能的关断模式。

上电复位 (POR) 后、第一个关断/唤醒周期正常工作。 但是、在器件从关断状态唤醒后、每次后续进入关断状态的尝试都会失败。 即使没有生成 GPIO 中断、器件也会立即重新启动或自动唤醒、而不是保持关断状态。

我已经验证了以下内容:

  1. GPIO 初始化

GPIO_setConfig(INT_Pin,
               GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

GPIO_setCallback(INT_Pin, gpioButtonFxn0);
GPIO_enableInt(INT_Pin);

通过此配置、正常运行期间、会在每个下降沿正确生成 GPIO 中断。

  1. 关断功能

void Fob_Shutdown_state(void)
{
    /* Ensure wake pin is truly idle HIGH */
    if (GPIO_read(Mot_Det) == 1U)
    {
        GPIO_setConfig(INT_Pin,
                       GPIO_CFG_IN_PU | GPIO_CFG_SHUTDOWN_WAKE_LOW);

        Power_shutdown(0, 0);
    }
}

在调用之前 Power_shutdown(),我总是使用验证 GPIO 级别是否为高 GPIO_read(),并且它始终读为高。

观察到的行为

  • 上电复位后:

    • 首次关断→ 正常工作

    • GPIO 中断会唤醒器件→ 正常工作

  • 从关断状态唤醒后:

    • Power_shutdown() 再次调用不会使设备保持关机状态。

    • 在没有任何 GPIO 中断或外部触发的情况下、器件会立即重新启动或自动唤醒。

它的格式

  • 器件: CC2745R10

  • 唤醒 GPIO: DIO17

  • 唤醒配置: GPIO_CFG_SHUTDOWN_WAKE_LOW

  • 中断配置:下降沿

  • 启用内部上拉。

  • 在进入关断模式之前、唤醒引脚确认为高电平。

您能否告知从关断模式唤醒后是否需要任何额外的 GPIO 重新初始化、中断清除或电源管理器配置? 此外、 Power_shutdown() 在 CC2745R10 上重复使用 GPIO 唤醒时、是否有任何已知的限制或建议顺序?

非常感谢任何演示使用 GPIO 唤醒源实现多个关断/唤醒周期的指导或示例。

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

    尊敬的 Balaji:

    感谢您联系我们。 我现在正在调查您的问题。

    您能否说明您正在使用哪个版本的 SDK?

    乍一看,第一次唤醒和下一次 调用 Fob_Shutdown_ state() 之间似乎存在问题。 您能否与我分享任何在唤醒和关断之间修改 GPIO 的代码(如果有)?

    此致、

    Blake

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

    您好、

    感谢您的答复。

    我目前使用以下开发环境:

    • SDK 版本: simplelink_lowpower_f3_sdk_9_14_02_15
    • IDE: CCS 20.2.0

    我已经共享了关机和唤醒实现代码。

    您能否验证上述代码中的 GPIO 中断配置是否正确? 具体来说、如果您能查看中断的 GPIO 配置并使用 DIO17 确认是否需要进行任何更改才能实现可靠的关断和唤醒运行、我将不胜感激。

    感谢您的支持。

    谢谢、此致

    Balaji Wankhede

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

    您好 Balaji-

    感谢您回复版本。 我相信我已经找到了这个问题。 在 CC27xx 系列器件上、当器件通过 GPIO 事件从 SHUTDOWN 模式唤醒时、硬件会将 IO 锁存器保持在 SHUTDOWN 状态冻结。 这是设计使然 — 它保留引脚电平以避免出现干扰。 但这些锁存器包含唤醒事件锁存器。

    从关机状态下唤醒时、您是否调用了 PowerLPF3_releaseLatchers ()?

    如果您从不调用 PowerLPF3_releaseLatch锁 存器 (),该锁存状态 将持续存在,并且在下一次调用 Power_shutdown () 时,Power Manager 会将 IO 事件条件视为已置位,并立即从 SHUTDOWN 状态返回。

    请将其添加到您的代码中、并告诉我这是否能解决您的问题:

    /* add this if not already included */
    #include <ti/drivers/Power.h>
    
    //...
    
    /* add this when waking from shutdown */
    PowerLPF3_ResetReason resetReason = PowerLPF3_getResetReason();
    
    if (resetReason == PowerLPF3_RESET_SHUTDOWN_IO)
    {
    /* Must release IO latches before reconfiguring GPIOs */
    PowerLPF3_releaseLatches();
    }
    
    /* Now safe to reconfigure INT_Pin back to falling-edge interrupt */
    GPIO_setConfig(INT_Pin, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);
    GPIO_setCallback(INT_Pin, gpioButtonFxn0);
    GPIO_enableInt(INT_Pin);

    如有必要、您可能需要点击代码块将其展开以查看完整文本。

    在  /examples/rtos/LP_EM_CC2745R10_Q1/drivers/gpioshutdown 中、您将找到一个示例、其中演示了 CC27xx 器件成功进入 SHUTDOWN 模式、并在按下按钮时从 SHUTDOWN 模式唤醒。 我相信这会有所帮助。

    请告诉我这是否能解决您的问题、以及您是否有任何其他问题。

    此致、

    Blake Sanders

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

    您好 Sanders、

    感谢您的答复。

    我的问题已解决。

    但我还有一个问题、那就是我仍然会获得更多的关断电流、其电流接近 195uA。

    但在该器件中、我将使用基于 SPI 通信的 AIS2DW12 运动传感器。

    然后进入关断模式。

        If (controllerSpi!= NULL)
        {
          SPI_close(controllerSpi);
          控制器 Spi = 空;
        }
        GPIO_setConfig(Mot_Det、
                GPIO_CFG_IN_PU | GPIO_CFG_SHUTDOWN_WAKE_LOW);
                /*设备进入 shutdowm 模式*/
        POWER_SHUTDOWN(0、 0);  
    请告诉我是否正确。

    谢谢、此致

    Balaji Wankhede

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

    大家好-

    很高兴器件成功进入 SHUTDOWN 模式。

    在 CC2745R10-Q1 上、您应该看到~165nA 关断电流。 处于关断状态时、运动传感器(或另一个外设,如果已连接)可能会消耗该额外电流。

    我建议通过物理方式断开该外设及任何其他外设、并重新测量电流。

    我还认为,在 调用 spi_Close () 之前,需要将该传感器本身置于关闭状态。 我查看制造商的数据表、并按照他们的说明来说明如何将传感器置于关断模式或低功耗模式。

    如果您需要有关此主题的更多帮助、请打开一个新主题、以便我们区分每个问题。 我们很乐意为您提供帮助。

    谢谢您、

    Blake