CH582休眠问题

我用三块ch582芯片,节点ABC,节点A发送给节点B,节点B发送给节点C。加入了睡眠。

目前有个问题就是,节点A第一次发送的信息,要等节点A发送第二次信息后后节点B才能第一次发的信息收到。节点C收到节点A第一次发送的信息要等节点A发送第三次信息时才能收到。

是基于哪几个例程添加代码后做的测试?

sleep休眠期间,32M停振,无线收发机无法工作,无法通过发送射频信号的方式去唤醒接收方MCU。

B/C可以收到包,要么是A发包的瞬间,B/C刚好处于唤醒工作的状态,有机会开启接收扫描窗口;要么是有类似BLE连接、mesh的朋友-低功耗节点连接等之类的机制。


用的自配网例程来搞得。

相关代码:

 

PRINT("sleep mode sleep \n");
        tmos_stop_task(halTaskID, HAL_REG_INIT_EVENT);  //默认2分钟一次的校准先暂停
        DelayMs(5);

        RTC_TRIGFunCfg(32768 * 10);
        PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_RTC_WAKE, Long_Delay);/* 使能RTC中断唤醒源 */

        PFIC_EnableIRQ(RTC_IRQn);/* 使能RTC中断 */
        /* 注意当主频为80M时,Sleep睡眠唤醒中断不可调用flash内代码 */

        LowPower_Sleep(RB_PWR_RAM30K | RB_PWR_RAM2K); /* 只保留30+2K SRAM 供电 */

        HSECFG_Current(HSE_RCur_100); /* 降为额定电流(低功耗函数中提升了HSE偏置电流) */
        PFIC_DisableIRQ(RTC_IRQn);

        DelayMs(5);
        PRINT("wake.. \n");
        DelayMs(20);
        tmos_set_event(halTaskID, HAL_REG_INIT_EVENT);      //先校准RF,再开广播
////**********
       tmos_start_task(App_TaskID, APP_NODE_TEST_EVT, 4800);      //发送时长1600=1s




如上解释,RTC唤醒前的休眠阶段,是无法收包的。

mesh协议中有设计朋友-低功耗节点连接功能,朋友节点会代收发给低功耗节点的消息包,低功耗节点唤醒后第一时间向朋友节点拉取消息。


只有登录才能回复,可以选择微信账号登录