[Solved] ESP8266 喚醒+DeepSleep 時間過長 (>250ms)

JohnSmith999
Posts: 4
Joined: Sat Apr 23, 2016 2:37 pm

[Solved] ESP8266 喚醒+DeepSleep 時間過長 (>250ms)

Postby JohnSmith999 » Sat Apr 23, 2016 2:50 pm

我目前在從事一個感測裝置的項目,該裝置(AP Mode)約每5秒會起來發送一個廣播的資料,然後又立刻進入 Deep Sleep。

原本預期這個時間應該不長,但從量測 GPIO2 上的結果來看 (第一個 high 到最後一個 low),這個期間超過 250ms.
我試了 RTOS (1.4) / NONOS (1.5) 的 SDK,都有相似的結果。
網上有搜到,指 ESP8266可以 "Wake up and transmit packets in < 2ms",我沒預期有這麼好的數據,但250ms的差距很大。

不知有沒有高手/開發人員可以提供優化的方法?
另外,我發現呼叫 system_deep_sleep(),到真正 Sleep有個時差,大概有100ms,這也是佔很大一部份的時間。
還請有高手可以協助解惑。感謝~

ESP_Alfred
Posts: 56
Joined: Mon Nov 10, 2014 7:31 pm

Re: ESP8266 喚醒+DeepSleep 時間過長 (>250ms)

Postby ESP_Alfred » Tue Apr 26, 2016 5:43 pm

JohnSmith999 wrote:我目前在從事一個感測裝置的項目,該裝置(AP Mode)約每5秒會起來發送一個廣播的資料,然後又立刻進入 Deep Sleep。

原本預期這個時間應該不長,但從量測 GPIO2 上的結果來看 (第一個 high 到最後一個 low),這個期間超過 250ms.
我試了 RTOS (1.4) / NONOS (1.5) 的 SDK,都有相似的結果。
網上有搜到,指 ESP8266可以 "Wake up and transmit packets in < 2ms",我沒預期有這麼好的數據,但250ms的差距很大。

不知有沒有高手/開發人員可以提供優化的方法?
另外,我發現呼叫 system_deep_sleep(),到真正 Sleep有個時差,大概有100ms,這也是佔很大一部份的時間。
還請有高手可以協助解惑。感謝~


HI, John

light sleep 模式醒来的速度是 2ms。
system_deep_sleep调用的时候会保存内部的寄存器,等待串口打印等操作,所以不会立即sleep。我们有立即睡眠的接口可以调用。
可以参考文档 9B-ESP8266-Sleep_Mode_Low_Power_Solutions,里面有对你们这种工作模式的优化方法。
thanks

JohnSmith999
Posts: 4
Joined: Sat Apr 23, 2016 2:37 pm

Re: ESP8266 喚醒+DeepSleep 時間過長 (>250ms)

Postby JohnSmith999 » Tue Apr 26, 2016 11:33 pm

Alfred:
非常感謝你的回覆,你的資訊對我幫助很大,整個流程花費的時間從 244ms 減到了 115ms,改善了53%之多!!
我把對我有幫助的個項列出來,給有需要的朋友參考。

項目1: 用 system_deep_sleep_instant() 取代 system_deep_sleep(),減少 96ms
項目4: 腳本修改 bin 文件,縮短 flash 初始化時間和電流,減少 28ms
項目6: 清空 UART FIFO,減少 4ms

再次感謝你!

timbotttt
Posts: 2
Joined: Thu Apr 28, 2016 3:28 pm

Re: ESP8266 喚醒+DeepSleep 時間過長 (>250ms)

Postby timbotttt » Thu Apr 28, 2016 3:32 pm

朋友你遇到的情况对我也很有帮助,在我实验用system_deep_sleep_instant()代替system_deep_sleep()时,却编译不过去。请问你是直接在usr_main里调用吗,其他需要在哪里声明吗?

Who is online

Users browsing this forum: MSN [Bot] and 9 guests