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