با عرض سلام
من در حال کار با ماژول 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
آیا نکته ی دیگری دارد؟
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 کردن تسک هم از کد زیر استفاده میکنم :