مشکل در ورود و خروج مداوم از Sleep Mode در ماژول EC200U_EU_AA

با عرض سلام
من در حال کار با ماژول EC200U_EU_AA هستم و قصد دارم حالت Sleep را با استفاده از API موجود در power_demo.c فعال کنم. برای این کار، از ()ql_autosleep_enableاستفاده می‌کنم.
من هیچ wakelock فعالی ندارم و USB را نیز جدا کرده‌ام، اما با این حال، ماژول به‌صورت مداوم وارد وقفه ql_enter_sleep_cb شده و بلافاصله وارد وقفه ql_exit_sleep_cb می شود و این روند پشت‌سر‌هم تکرار می‌شود.
من همه ی ترد های دیگر را غیرفعال کرده ام و فقط ترد مربوط به پاور فعاله با این وجود این مشکل هم چنان پابرجاست.
چه چیزی باعث می شود که ماژول به‌طور مداوم از Sleep Mode خارج شود؟

مشکل دیگری که دارم وقتی میخواهم ترد دیگری را suspend کنم ماژول ریست میشود من از این دستور استفاده میکنم :
ql_rtos_task_suspend
آیا نکته ی دیگری دارد؟

ممنونم از راهنماییتان.

سلام. اگر ممکنه قسمت مربوط به پاور کدتون رو بذارید. مرسی

سلام دوست عزیز این کد خدمت شما

static void ql_power_demo_thread(void *param)
{
    //QL_POWERDEMO_LOG("power demo thread enter, param 0x%x", param);

	ql_event_t event;
	int err;

    //register sleep callback function
    ql_sleep_register_cb(ql_enter_sleep_cb);
    
    //register wakeup callback function
    ql_wakeup_register_cb(ql_exit_sleep_cb);

#ifdef QL_APP_FEATURE_USB	
	//register usb hotplug callback function
	ql_usb_bind_hotplug_cb(usb_hotplug_cb);
#endif

	while(1)
	{

        if(Enter_SLEEP_Mode == true)   
        {
            Enter_SLEEP_Mode = false;
            ql_uart_write(QL_UART_PORT_1, "autosleepex Enabled\r\n", 19);
            ql_autosleep_enable(QL_ALLOW_SLEEP);
        }
     }
}

همچنین کدهای وقفه هنگام ورود به مد sleep :

void ql_enter_sleep_cb(void* ctx)
{   

     ql_uart_write(QL_UART_PORT_1, "Entered Sleep Mode\r\n", 20); 

#ifdef QL_APP_FEATURE_GNSS
    ql_pin_set_func(QL_PIN_NUM_KEYOUT_5, QL_FUN_NUM_UART_2_CTS);  //keyout5 pin need be low level when enter sleep, adjust the function to uart2_rts can do it
    ql_gpio_set_level(GPIO_12, LVL_HIGH);                         //close mos linked to gnss, to avoid high current in sleep mode
    ql_gpio_set_level(GPIO_11, LVL_LOW);                          //gpio11 need be low level when enter sleep to reduce leakage current to gnss
#endif
}

و وقفه بعد از خروج از مد sleep

//exit sleep callback function is executed after exiting sleep, custom can recover the information before sleep
//Caution:callback functions cannot run too much code 
void ql_exit_sleep_cb(void* ctx)
{   
     ql_uart_write(QL_UART_PORT_1, "exit sleep cb\r\n", 15); 
    
#ifdef QL_APP_FEATURE_GNSS
    ql_pin_set_func(QL_PIN_NUM_KEYOUT_5, QL_FUN_NUM_UART_3_TXD);  //keyout5 pin used as gnss uart3_txd function, after exit sleep, set it to uart3_txd
#endif    
}

هم چنین برای suspend کردن تسک هم از کد زیر استفاده میکنم :

ql_rtos_task_suspend (&GPIO_Task);

هنگام اجرای دستور suspend ماژول ریست می شود :slightly_frowning_face:

ممنونم از راهنماییتون :pray: