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.

[参考译文] CC3220SF:从 GPIO 触发的 LPDS 模式唤醒时崩溃

Guru**** 2578945 points
Other Parts Discussed in Thread: CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/891486/cc3220sf-crash-when-waking-up-from-lpds-mode-triggered-by-gpio

器件型号:CC3220SF

您好!

  我按照以下文章操作、根据 AWS 演示项目启用 GPIO 从 LPDS 模式唤醒并在 LaunchPad 板中进行测试。

 https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/p/702783/2592071#2592071

  通过观察 UART 输出消息、我可以检测代码的状态。 结果是它可以进入 LPDS 模式。 但是、一旦按下 SW2、代码将停止或崩溃。   

while (true)

  UART_READ (xtUartHnst,&cChar, 1);
  uartSendCmd ('a');
  vTaskDelay (PDM_TO_TICKs (1000));

  唤醒回调函数。 未观察到 LED 切换或 UART 消息。

void gpioButtonFxn1 (uint_least8_t 索引)

  GPIO_TOGGLE (GPIOCC32XX_GPIO_10);
  uartSendCmd ('a');
  while (1);

     

  请帮助。 谢谢。

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

    尊敬的 Martin:

    请从中断回调中删除任何 while 循环或定时驱动程序操作。 GPIO_toggle 应该可以、但 uartSendCmd 需要很长时间。 while 循环可能会破坏 RTOS 调度程序。 我建议在按钮回调中添加一个信标或消息队列、然后在另一个线程中实现该 uartSendCmd。

    此致、

    Sarah

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

    您好、Sarah、

      在移除 while 环路和 uartSendCmd 后、仍然无法切换 LED。  还有其他建议吗? 谢谢。

    void gpioButtonFxn1 (uint_least8_t 索引)

      GPIO_TOGGLE (GPIOCC32XX_GPIO_10);

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

    您好、Sarah、

      我添加了消息队列、 测试结果与之前相同。 按下 SW2后、代码停止执行。

      您能否在 AWS 演示项目中验证 LPDS GPIO 唤醒功能? 可能是低级驱动程序中有一个错误、我很难验证。 谢谢。

    接收任务:

    if (xQueueReceive( xWxakeupQueue,&pcReceivedString, portMAX_DELAY )== pdPASS)

    IotLogInfo( pcReceivedString );
    vPortFree(( void *) pcReceivedString );

    回叫:

    void gpioButtonFxn1 (uint_least8_t 索引)

    /*清除 GPIO 中断并切换 LED */
    GPIO_TOGGLE (GPIOCC32XX_GPIO_10);
    xQueueSend( xWakeupQueue,“唤醒”,0);

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

    您好、Sarah、

      我使用原始 AWS 演示代码启动一个新项目。 仅添加了以下修改:

    1. 将演示功能替换为 LED 闪烁环路:

    // demo_runrundemos();
    while (true)

    GPIO_TOGGLE (GPIOCC32XX_GPIO_10);
    vTaskDelay (PDM_TO_TICKs (1000));

    2.在 CC3220SF_LAUNCHXL.c 中添加回调函数  

    GPIO_CallbackFxn gpioCallbackFunctions[]={
    gpioButtonFxn1、// CC3220SF_LAUNCHXL_GPIO_SW2 *
    gpioButtonFxn1 // NULL // CC3220SF_LAUNCHXL_GPIO_SW3 *
    };

    3.定义回调函数

    void gpioButtonFxn1 (uint_least8_t 索引)

    /*清除 GPIO 中断并切换 LED */
    GPIO_TOGGLE (GPIOCC32XX_GPIO_09);

    通过按下 SW2或 SW3、我无法看到 LED_D7切换。 您能告诉我是否需要进一步修改代码? 谢谢。

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

    您好、Sarah、

      请跳过我的最后一封电子邮件。 我 现在可以在非 LPSD 模式下获得可靠的 GPIO 中断。 但是、仍然无法获得 LPDS GPIO 唤醒。

      由于 GPIO13也是在 gpioPinConfigs[]中定义的,所以我是否应该修改 gpioPinConfigs[]中的代码来启用 LPDS 唤醒?

      以下是基于原始 AWS 演示项目的代码:

    1. 将演示功能替换为 LED 闪烁环路:

    // demo_runrundemos();

    power_enablePolicy();
    PRCMLPDSWakeupSourceEnable (PRCM_LPD_GPIO);

    while (true)


    GPIO_TOGGLE (GPIOCC32XX_GPIO_10);
    vTaskDelay (PDM_TO_TICKs (1000));

    2.修改 PowerCC32XX_CONFIG:

    CONST PowerCC32XX_ConfigV1 PowerCC32XX_CONFIG ={
    .policyInitFxn =&PowerCC32XX_initPolicy、
    policyFxn =&PowerCC32XX_sleepPolicy、
    .enterLPDSHookFxn =空、
    .resumeLPDSHookFxn =空、
    .enablePolicy = false、
    .enableGPIOWakeupLPDS = true、
    .enableGPIOWakeupShutdown = true、
    .enableNetworkWakeupLPDS = true、
    .wakeupGPIOSourceLPDS = PRCM_LPD_GPIO13、
    .wakeupGPIOTypeLPDS = PRCM_LPD_FALL_EDGE、
    .wakeupGPIOFxnLPDS = gpioButtonFxn0、
    .wakeupGPIOFxnLPDSArg=0、
    .wakeupGPIOSourceShutdown = PRCM_HIB_GPIO13、
    .wakeupGPIOTypeShutdown = PRCM_HIB_RISE_EDGE、
    .ramRetentionMaskLPDS = PRCM_SRAM_COL_1 | PRCM_SRAM_COL_2 |
    PRCM_SRAM_COL_3 | PRCM_SRAM_COL_4、
    keepDebugActiveDuringLPDS = false、
    ioRetentionShutdown = PRCM_IO_RET_GRP_1、
    .pinParkDefs = parkInfo、
    .numPins = sizeof (parkInfo)/sizeof (PowerCC32XX_ParkInfo)
    };

    Martin

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

    您好、Sarah、

      我上传了更多代码和测试结果。 请提供帮助并谢谢。

    此致、

    Martin

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

    您好!

      是否有任何 TI 员工可以帮助您审查此问题?

      由于这个问题、我们的项目现在正在等待处理。 谢谢。

    Martin