ESP8266的RTC時間和系統時間測試對比


http://home.eeworld.com.cn/home.php?mod=space&uid=361439&do=blog&id=334813

 

ESP8266的RTC時間和系統時間測試對比

已有 6613 次閱讀2016-5-17 13:23 |個人分類:ESP8266 WIFI

官方有關時間的 API 主要有兩個
system_get_time
功能 :
查詢系統時間,單位:微秒
函數定義 :
uint32 system_get_time(void)
參數 :
⽆無
返回 :
系統時間,單位:微秒。
system_get_rtc_time
功能 :
查詢  RTC  時間,單位: RTC  時鍾周期
⽰示例 :
例如  system_get_rtc_time  返回  10 ( 表⽰示  10  個  RTC  周期 ),
system_rtc_clock_cali_proc  返回  5.75 ( 表⽰示  個  RTC  周期為  5.75  微秒 ),
則實際時間為  10 x 5.75 = 57.5  微秒。
注意 :
system_restart  時,系統時間歸零,但是  RTC  時間仍然繼續。但是如果外部硬件通過  EXT_RST
腳或者  CHIP_EN  腳,將芯⽚片復位后(包括  deep-sleep  定時喚醒的情況), RTC  時鍾會復位。具
體如下:
• 外部復位( EXT_RST : RTC memory  不變, RTC timer  寄存器從零計數
•  watchdog reset : RTC memory  不變, RTC timer  寄存器不變
•  system_restart : RTC memory  不變, RTC timer  寄存器不變
• 電源上電  : RTC memory  隨機值, RTC timer  寄存器從零計數
•  CHIP_EN  復位  : RTC memory  隨機值, RTC timer  寄存器從零計數
函數定義 :
uint32 system_get_rtc_time(void)
參數 :
⽆無
返回 :
RTC  時間
system_rtc_clock_cali_proc
功能 :
查詢  RTC  時鍾周期 .
注意:
RTC  時鍾周期含有⼩小數部分。
RTC  時鍾周期會隨溫度或電源電壓變化發⽣生偏移,因此  RTC  時鍾適⽤用於在精度可接受的范圍內進⾏行計
時,建議最多每分鍾調⽤用⼀一次即可。
函數定義 :
uint32 system_rtc_clock_cali_proc(void)
參數 :
⽆無
返回 :
RTC  時鍾周期,單位:微秒, bit11 ~ bit0  為⼩小數部分
⽰示例 :
os_printf( clk cal : %d \r\n ,system_rtc_clock_cali_proc()>>12);
上面兩個都可以實現計算時間的功能,主要區別是 system_get_time(void) 時間只要出現系統重啟就會重新計時,但是 system_get_rtc_time  只有不掉電就不會出現計時丟失 , 所以如果我們需要實現一個時鍾功能,肯定是選擇system_get_rtc_time 函數來實現。對於這兩個函數的區別可以看下圖片就一目了然:
 
從上面圖片我們看出來系統時間計時和 RTC 計時都差不多,相差不大, system_rtc_clock_cali_proc 也確實如官方 API 所說的 RTC  時鍾周期會隨溫度或電源電壓變化發⽣生偏移,所以也僅僅只有用做不是精確計時,如果需要精確計時還是需要外部 RTC 芯片。還有電源重啟后之前 RTC 的數值是會丟失的
API 所說的電源上電  : RTC memory  隨機值, RTC timer  寄存器從零計數是一致的,有關ESP8266的時間函數測試分析就此結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM