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.

[参考译文] CC1314R10:cc1314 未进入待机模式

Guru**** 2492385 points
Other Parts Discussed in Thread: ENERGYTRACE

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1556121/cc1314r10-the-cc1314-is-not-entering-in-standby-mode

器件型号:CC1314R10
主题中讨论的其他部件:ENERGYTRACE

工具/软件:

您好、

我使用 CC1314 定制板。 我想使用待机模式以便在 UART 上没有活动时降低功耗。

我的应用使用 FreeRTOS。 我想回答以下问题

1.我可以   手动使用 Power_sleep (PowerCC26XX_STANDBY) 吗

2. 在进入内部待机模式之前,我是否需要暂停任务

3.将设备置于待机模式的步骤是什么?

4.我已经尝试过,但设备没有进入待机模式

static void EnterStandbyMode(void)
{
  trx_off(); // close RF
  CloseUart();//closeUART
  StopTimer();//stop timer
  TaskDelay(pdMS_TO_TICKS(1000));  // Let system settle
  closeWatchdogTimer();
  /* Configure the UART Rx pin as GPIO pin as input with falling-edge interrupt*/
   GPIO_setConfig(CONFIG_GPIO_UART2_1_RX, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);
   // Register the callback function
   GPIO_setCallback(CONFIG_GPIO_UART2_1_RX, GpioWakeUpCallback);
   // Enable GPIO interrupts
   GPIO_enableInt(CONFIG_GPIO_UART2_1_RX);
   printf("cc1314 is  in entering into standby mode \r\n");
   // Suspend the FreeRTOS scheduler
   vTaskSuspendAll();
   int retVal = Power_sleep(PowerCC26XX_STANDBY);  // Manually enter standby
   


  
  
  
   if(WakeupFlag)
   {
       // Resume the FreeRTOS scheduler after waking up
       xTaskResumeAll();
       OpenUart();
       WakeupFlag = false;
       printf("cc1314 is  in Active mode \r\n");
   }
}

void GpioWakeUpCallback(uint_least8_t index) {
    // Set the wake-up flag
    WakeupFlag = true;
    printf("cc1314 is  wake up from standby \r\n");
}

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

    您好、Prashant、

    如果启用了 UART RX、则器件不会进入待机模式(请参阅:dev.ti.com/.../_u_a_r_t2_8h.html

    您必须首先使用 UART2_rxDisable () 禁用 RX。

    请告诉我如何操作、  

    此致、

    Arthur

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

    我调用了  UART2_rxDisable ()。 请务必记住这一点。

    我忘记在上一个问题中添加一点内容、那就是当我调用 int RetVal = Power_sleep (PowerCC26XX_STANDBY) 时 、器件会复位。

     UART2_rxDisable () 的结果相同

    默认电源配置、如下所示

    const PowerCC26X2_Config PowerCC26X2_config = {
        .enablePolicy             = true,
        .policyInitFxn            = NULL,
        .policyFxn                = PowerCC26XX_standbyPolicy,
        .calibrateFxn             = PowerCC26XX_calibrate,
        .calibrateRCOSC_LF        = true,
        .calibrateRCOSC_HF        = true,
        .enableTCXOFxn            = NULL
    };
    

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

    您好、

    您使用的是哪个 SDK 版本? 不应直接修改配置结构。  

    您是否还在定制板上使用了与 CC1314 Launchpad 上相同的晶体? 如果您在 LaunchPad 上运行工程、是否会进入待机状态?

    此致、

    Arthur

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

    SDK 版本:simplelink_cc13xx_cc26xx_sdk_8_30_01_01

    目前我没有 Launchpad

    在定制板上使用了 32k 晶体

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

    您好、

    在调试模式下、我认为它进入待机模式、因为我获得返回值 0 、即 Power_Sok。

    我对返回值的描述有点困惑。

    @重估 #Power_Sok 成功后、器件已睡眠并再次唤醒。

    如果我错了、请让我更正一下。  

    我的理解是、器件在不是配置的唤醒源之前一直处于睡眠状态。

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

    在调试模式下、我获得的返回值为  Power_Sok。  这是否意味着它从待机模式唤醒?

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

    您好、Prashant、  

    您从哪个示例项目开始? 此外、您要测量的电流消耗是多少?

    此致、

    Arthur

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

    您好 Arthur

    您从哪个示例项目开始? 此外、您要测量的电流消耗是多少?

    =>我正在参考 SDK 和参考手册。

    =>主要目标是使用 FreeRTOS 基本代码将 cc1314 置于待机模式并测量电流

    => 如何验证器件是否已进入待机模式

    =>如果器件处于待机模式、并且我想在 UART 上收到任何数据时从待机模式唤醒

    =>但目前我观察到器件在调用=> int RetVal = Power_sleep (PowerCC26XX_STANDBY); //手动进入待机状态后复位

    =>请您建议使用 FreeRTOS 进入待机模式所需遵循的步骤

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

    尊敬的 Prasant:

    首先缩小问题范围。 如果为 CC1314 运行“empty"FreeRTOS 工程“ 工程、会发生什么情况?   该工程将在每次 LED 切换后进入待机状态。

    如果您没有 EnergyTrace、您可以探测直流/直流转换器电感器来验证器件是否已 进入待机模式、如下所示:CC1312R:无法进入待机模式对于 GPIO 待机示例 — Sub-1GHz 论坛 — Sub-1GHz - TI E2E 支持论坛

    此致、

    Arthur

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

    即使我已经关闭、看门狗也无法关闭。  

    通过注释看门狗代码,我认为设备正在进入待机模式。

    您能否建议如何  将器件配置为在 UART 中断时从待机状态唤醒?

    我已将 Rx 引脚配置为 GPIO、并按如下方式配置了中断。 正确吗?

      /* Configure the UART Rx pin as GPIO pin as input with falling-edge interrupt*/
        GPIO_setConfig(CONFIG_GPIO_UART2_1_RX, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_RISING | GPIO_CFG_INT_ENABLE);
        // Register the callback function
        GPIO_setCallback(CONFIG_GPIO_UART2_1_RX, GpioWakeUpCallback);
        // Enable GPIO interrupts
        GPIO_enableInt(CONFIG_GPIO_UART2_1_RX);

    我正在通过 UART 发送数据、但它没有唤醒、因为我在下面的行中添加了以下内容。 不打印任何内容

    status = Power_sleep(PowerCC26XX_STANDBY);
    
        
    
        if (status == Power_SOK) {
    
            printf("Successfully woke from standby");
    
        } else {
    
            printf("Failed to enter standby: %d", status);
    
        }
    

    您能否建议如何  将器件配置为在 GPIO 中断时从待机状态唤醒?

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

    如何 将 AONEventMcuWakeUpSet 与 GPIO 配合使用?

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

    尊敬的 Preshant:

    唤醒中断时、我们无法将器件从待机状态唤醒。 如前所述、启用 UART RX 缓冲区将阻止器件进入待机状态。

    请查看我们的 gpiointerrupt 示例、了解如何从 GPIO 中断中唤醒: gpiointerrupt

    此致、

    Arthur

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

    您好  Arthur

    感谢您的快速响应。

    无法将器件配置为在发生 UART 中断时从待机状态唤醒。 正确吗?

    以下理解是否正确?

    我们需要通过将 RX 引脚配置为正常 GPIO 并启用中断来实现自己的“ UART 唤醒“功能。 然后、当我们获得 PIN 中断时、从 PIN 驱动程序中释放引脚、打开 UART 并执行读取。

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

    您好、Prashant、

    正确。 然而,你可以像你所描述的那样做,但这可能只适用于非常缓慢的鲍德拉特。  

    另一种选择是使用您有权访问的传感器控制器、并使其运行 UART 仿真器: UART 仿真器—Sensor Controller Studio v2.0.0 CC13x2 CC26x2 文档

    这样、如果您收到感兴趣的消息、可以使用它来唤醒主 M33 MCU。

    此致、

    Arthur

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

    您好  Arthur

    感谢您的快速响应。

    即使在进入待机模式之前我已将其关闭、看门狗也不会关闭

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

    您好、Prashant、

    请打开一个新主题、因为这是一个新主题。

    此致、

    Arthur

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

    您好  Arthur

    我将为看门狗创建单独的票证。

    我已将 Rx 引脚配置为 GPIO、并按如下方式配置了中断

    /* Configure the UART Rx pin as GPIO pin as input with falling-edge interrupt*/
    GPIO_setConfig(CONFIG_GPIO_UART2_1_RX, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_RISING | GPIO_CFG_INT_ENABLE);
    // Register the callback function
    GPIO_setCallback(CONFIG_GPIO_UART2_1_RX, GpioWakeUpCallback);
    // Enable GPIO interrupts
    GPIO_enableInt(CONFIG_GPIO_UART2_1_RX);

    如果未触发待机模式迭代器、则在器件处于待机模式后不触发该中断

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

    您好、Prashant、

    这可能意味着器件永远不会唤醒。 空工程是否按预期切换 GPIO?

    此致、

    Arthur