RTC - 读取 DS1307/DS3231 RTC 时间模组
材料准备
- Ameba x 1
- DS1307/DS3231 RTC x 1
范例说明
DS1307是常见的RTC IC,像是TinyRTC就使用DS1307。如果需要高精准度的RTC,可以使用DS3231。请先下载DS1307RTC library:
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/DS1307RTC-1.0.0.zip
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/DS1307RTC-1.0.0.zip
另外时间格式的部分会用到Time library:
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/Time-1.0.1.zip
https://github.com/ambiot/amb1_arduino/raw/master/Arduino_libraries/Time-1.0.1.zip
安装library的方式请参考Arduino官方网站的教学文章将zip档的library加入Ameba:
https://www.arduino.cc/en/Guide/Libraries#toc4
这个library支援了DS1307, DS1337 以及 DS3231。使用的介面为I2C,工作电压为3.3V
请打开范例 “File” -> “Examples” -> “AmebaDS1307RTC” -> “ReadTest”
这个范例会从 DS1307/DS3231读取时间,如果使用的模组是TinyRTC (DS1307)
接线如下:
如果是DS3231,接线如下:
RTL8710,接线如下:
然后我们编译程式,并上传至Ameba,完成之后按下Reset按钮,可以在Serial Monitor看到底下的log:
程式码说明
在loop()的地方宣告了tmElements_t的struct型态的变数,用来保存时间相关的内容
tmElements_t tm;
接着呼叫RTC.read()将时间资讯填入tmElements_t的变数里
RTC.read(tm)
tmElements_t的资料成员:
typedef struct { uint8_t Second; uint8_t Minute; uint8_t Hour; uint8_t Wday; // day of week, sunday is day 1 uint8_t Day; uint8_t Month; uint8_t Year; // offset from 1970; } tmElements_t, TimeElements, *tmElementsPtr_t;
使用者可以取出里面的内容使用
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved. 使用条款