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.

[参考译文] CC1312R:射频内核无法唤醒系统 CPU

Guru**** 2481485 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1285686/cc1312r-rf-core-can-not-wake-up-system-cpu

器件型号:CC1312R

射频内核代码:

fwGenQuickAlertInterrupt();

系统 CPU 代码:

void scTaskAlertCallback(void)
{
Semaphore_post(Semaphore_handle(&semScTaskAlert));
// Clear the ALERT interrupt source
scifClearAlertIntSource();
}



void sensor_controller_init(uint8_t num)
{
//Initialize the AcquisitionInt
scifTaskData.temSensor.cfg.threshold = num;
// Initialize the Sensor Controller
scifOsalInit();
scifOsalRegisterCtrlReadyCallback(scCtrlReadyCallback);
scifOsalRegisterTaskAlertCallback(scTaskAlertCallback);
scifInit(&scifDriverSetup);
scifStartRtcTicksNow(0x00010000);
scifStartTasksNbl((1 << SCIF_TEM_SENSOR_TASK_ID));
}



Semaphore_pend(Semaphore_handle(&semScTaskAlert), BIOS_WAIT_FOREVER);//

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

    尊敬的 Yolande:  

    这是传感器控制器代码。 您可以指出从何处获取 fwGenAlertInterrupt?

    我需要知道系统 CPU 上运行的应用程序代码是什么。 您如何知道它不会唤醒系统 CPU?

    此致、

    SID

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

    尊敬的 Sid:

    以下是顾客的回应:

    首先,事件 fwGenQuickAlertInterrupt()在射频内核、系统 CPU 中生成  应用、中断回调

    void scTaskAlertCallback(void)
    {
    Semaphore_post(Semaphore_handle(&semScTaskAlert));
    // Clear the ALERT interrupt source
    scifClearAlertIntSource();
    }

    然后会生成一个事件、该事件会导致

    Semaphore_send(Semaphore_handle(&semScTaskAlert), BIOS_WAIT_FOREVER); 

    为了解除阻止、这将允许系统 CPU 运行应用程序。 您问我、我怎么知道系统 CPU 未被唤醒、这一定是应用程序具有相关提示、例如 LED 灯熄灭、或无线发送数据、我可以通过多种方法判断是否存在唤醒调用。

    如果您需要了解 系统 CPU 应用、只需简单的 GPIO 电池转换  

    RF_Params rfParams;
    RF_Params_init(&rfParams);
    sleep(5);
    
    GPIO_setConfig(20, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    
    GPIO_write(20, CONFIG_GPIO_LED_ON);
    GPIO_setConfig(20, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    
    GPIO_write(20, CONFIG_GPIO_LED_ON);
    
    RF_cmdPropTx_497_8.pktLen = PAYLOAD_LENGTH;
    RF_cmdPropTx_497_8.pPkt = &TxPacket_data.sign_Addr;
    RF_cmdPropTx_497_8.startTrigger.triggerType = TRIG_NOW;
    
    /* Request access to the radio */
    #if defined(DeviceFamily_CC26X0R2)
    rfHandle = RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioSetup, &rfParams);
    #else
    rfHandle = RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup_497_8, &rfParams);
    #endif// DeviceFamily_CC26X0R2
    
    /* Set the frequency */
    RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs_497_8, RF_PriorityNormal, NULL, 0);
    //SendframeInit(&sendframecounter);
    
    sensor_controller_init(COLLECT_TIMER);
    
    
    while(1)
    {
    Semaphore_pend(Semaphore_handle(&semScTaskAlert), BIOS_WAIT_FOREVER);//
    
    GPIO_toggle(20);
    scifAckAlertEvents();
    
    }

    谢谢。此致、

    约兰德

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

    尊敬的 Yolande:

     fwGenQuickAlertInterrupt()需要在传感器控制器任务代码中调用。 但我假设客户已经这么做了。

    请您可以要求客户测试 传感器控制器任务中是否使用了 fwGenAlertInterrupt(),代码是否起作用? 它们的描述和处理方式似乎有所不同。

    此致、
    SID

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

    尊敬的 Sid:

    两个函数 fwGenQuickAlertInterrupt()和 fwGenAlertInterrupt()都尝试使用相同的结果。

    谢谢。此致、

    约兰德

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

    尊敬的 Yolande:

    https://dev.ti.com/tirex/explore/node?node=A__AddniPdrlDWP1siaPICBSw__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST

    他们可以按照此处的教程进行操作、以确保他们遵循了应有的一切。

    他们还可以检查 LED 闪烁示例以查看   fwGenAlertInterrupt()是如何被用来唤醒系统 CPU 的。

    此致、

    SID