Skip to content

Commit c5ebe0c

Browse files
committed
Init
1 parent 5882eee commit c5ebe0c

7 files changed

Lines changed: 132 additions & 117 deletions

File tree

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
# M5_BM8563
1+
# M5Unit-RTC
22

33
## Overview
44

5+
### SKU:U126
6+
57
M5Stack-**UNIT RTC** related programs.compatible with BM8563 and HYM8563.
68

79
## Related Link
810

9-
[Document & Datasheet](https://docs.m5stack.com/en/unit/rtc)
11+
[Document & Datasheet - M5Unit-RTC](https://docs.m5stack.com/en/unit/rtc)
1012

1113
## License
1214

13-
[UNIT_ENV - MIT](LICENSE)
15+
[M5Unit-RTC - MIT](LICENSE)
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2021 by M5Stack
4+
* Equipped with M5Series sample source code
5+
* 配套 M5Series 示例源代码
6+
* Visit for more information: https://docs.m5stack.com/en/unit/rtc
7+
* 获取更多资料请访问: https://docs.m5stack.com/zh_CN/unit/rtc
8+
*
9+
* Describe: Unit RTC.
10+
* Date: 2022/7/15
11+
*******************************************************************************
12+
Real-time time output on serial port every one second
13+
每个一秒在串口输出实时时间
14+
*/
15+
#include "Unit_RTC.h"
16+
17+
Unit_RTC RTC;
18+
19+
rtc_time_type rtc_time;
20+
rtc_date_type rtc_date;
21+
22+
char str_buffer[64];
23+
24+
void showlog(rtc_time_type *rtc_time, rtc_date_type *rtc_date) {
25+
sprintf(str_buffer, "RTC Time Now is %02d:%02d:%02d", rtc_time->Hours,
26+
rtc_time->Minutes, rtc_time->Seconds);
27+
Serial.println(str_buffer);
28+
sprintf(str_buffer, "RTC Date Now is %02d:%02d:%02d WeekDay:%02d",
29+
rtc_date->Year, rtc_date->Month, rtc_date->Date, rtc_date->WeekDay);
30+
Serial.println(str_buffer);
31+
}
32+
33+
void setup() {
34+
RTC.begin();
35+
Serial.begin(115200);
36+
delay(10);
37+
rtc_time.Hours = 14;
38+
rtc_time.Minutes = 40;
39+
rtc_time.Seconds = 5;
40+
41+
rtc_date.WeekDay = 4;
42+
rtc_date.Month = 7;
43+
rtc_date.Date = 15;
44+
rtc_date.Year = 2021;
45+
46+
RTC.setTime(&rtc_time);
47+
RTC.setDate(&rtc_date);
48+
}
49+
50+
void loop() {
51+
RTC.getTime(&rtc_time);
52+
RTC.getDate(&rtc_date);
53+
54+
showlog(&rtc_time, &rtc_date);
55+
delay(300);
56+
}

examples/set_date/set_date.ino

Lines changed: 0 additions & 42 deletions
This file was deleted.

library.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
{
2-
"name": "M5_BM8563",
3-
"description": "Library for M5_BM8563 RTC",
4-
"keywords": "BM8563 RTC",
2+
"name": "M5Unit-RTC",
3+
"description": "Library for M5Stack Unit RTC",
4+
"keywords": "M5Stack Unit BM8563 RTC",
55
"authors": {
66
"name": "M5Stack",
77
"url": "http://www.m5stack.com"
88
},
99
"repository": {
1010
"type": "git",
11-
"url": "https://github.com/m5stack/M5_BM8563.git"
11+
"url": "https://github.com/m5stack/M5Unit-RTC.git"
1212
},
1313
"version": "0.0.1",
1414
"frameworks": "arduino",
1515
"platforms": "espressif32"
16-
}
16+
}

library.properties

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
name=M5_BM8563
1+
name=M5Unit-RTC
22
version=0.0.1
33
author=M5Stack
4-
maintainer=M5Stack,Sean
5-
sentence=Library for M5_BM8563 RTC
6-
paragraph=See more on http://M5Stack.com
4+
maintainer=M5Stack
5+
sentence=Library for BM8563 RTC
6+
paragraph=See more on https://docs.m5stack.com/en/unit/rtc
77
category=Device Control
8-
url=https://github.com/m5stack/M5_BM8563
8+
url=https://github.com/m5stack/M5Unit-RTC
99
architectures=esp32
10-
includes=M5_BM8563.h
10+
includes=Unit_RTC.h
Lines changed: 43 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,59 @@
1-
#include "M5_BM8563.h"
1+
#include "Unit_RTC.h"
22

3-
BM8563::BM8563() { _addr = DEVICE_ADDR; }
3+
Unit_RTC::Unit_RTC() {
4+
_addr = DEVICE_ADDR;
5+
}
46

5-
BM8563::BM8563(uint8_t addr) { _addr = addr; }
7+
Unit_RTC::Unit_RTC(uint8_t addr) {
8+
_addr = addr;
9+
}
610

7-
void BM8563::begin() {
11+
/*! @brief Initialize the RTC. */
12+
void Unit_RTC::begin() {
813
_wire = &Wire;
914
_wire->begin();
1015
writeReg(0x00, 0x00);
1116
writeReg(0x01, 0x00);
1217
writeReg(0x0D, 0x00);
1318
}
1419

15-
void BM8563::begin(TwoWire *wire) {
20+
/*! @brief Initialize the RTC. */
21+
void Unit_RTC::begin(TwoWire *wire) {
1622
_wire = wire;
1723
_wire->begin();
1824
writeReg(0x00, 0x00);
1925
writeReg(0x01, 0x00);
2026
writeReg(0x0D, 0x00);
2127
}
2228

23-
void BM8563::begin(TwoWire *wire, uint8_t scl, uint8_t sda, uint32_t i2c_freq) {
29+
/*! @brief Initialize the RTC. */
30+
void Unit_RTC::begin(TwoWire *wire, uint8_t scl, uint8_t sda,
31+
uint32_t i2c_freq) {
2432
_wire = wire;
25-
_wire->begin(sda, scl, i2c_freq);
33+
_wire->begin(DEVICE_ADDR, sda, scl, i2c_freq);
2634
writeReg(0x00, 0x00);
2735
writeReg(0x01, 0x00);
2836
writeReg(0x0D, 0x00);
2937
}
3038

31-
void BM8563::writeReg(uint8_t reg, uint8_t data) {
32-
_wire->beginTransmission(0x51);
39+
/*! @brief Write data to register. */
40+
void Unit_RTC::writeReg(uint8_t reg, uint8_t data) {
41+
_wire->beginTransmission(DEVICE_ADDR);
3342
_wire->write(reg);
3443
_wire->write(data);
3544
_wire->endTransmission();
3645
}
3746

38-
uint8_t BM8563::ReadReg(uint8_t reg) {
39-
_wire->beginTransmission(0x51);
47+
/*! @brief Read data from register. */
48+
uint8_t Unit_RTC::ReadReg(uint8_t reg) {
49+
_wire->beginTransmission(DEVICE_ADDR);
4050
_wire->write(reg);
4151
_wire->endTransmission(false);
42-
_wire->requestFrom(0x51, 1);
52+
_wire->requestFrom(DEVICE_ADDR, 1);
4353
return _wire->read();
4454
}
4555

46-
void BM8563::getBm8563Time(void) {
47-
_wire->beginTransmission(0x51);
48-
_wire->write(0x02);
49-
_wire->endTransmission(false);
50-
_wire->requestFrom(0x51, 7);
51-
while (_wire->available()) {
52-
_trdata[0] = _wire->read();
53-
_trdata[1] = _wire->read();
54-
_trdata[2] = _wire->read();
55-
_trdata[3] = _wire->read();
56-
_trdata[4] = _wire->read();
57-
_trdata[5] = _wire->read();
58-
_trdata[6] = _wire->read();
59-
}
60-
61-
DataMask();
62-
Bcd2asc();
63-
Str2Time();
64-
}
65-
66-
void BM8563::Str2Time(void) {
56+
void Unit_RTC::Str2Time(void) {
6757
Second = (asc[0] - 0x30) * 10 + asc[1] - 0x30;
6858
Minute = (asc[2] - 0x30) * 10 + asc[3] - 0x30;
6959
Hour = (asc[4] - 0x30) * 10 + asc[5] - 0x30;
@@ -76,7 +66,7 @@ void BM8563::Str2Time(void) {
7666
*/
7767
}
7868

79-
void BM8563::DataMask() {
69+
void Unit_RTC::DataMask() {
8070
_trdata[0] = _trdata[0] & 0x7f; //
8171
_trdata[1] = _trdata[1] & 0x7f; //
8272
_trdata[2] = _trdata[2] & 0x3f; //
@@ -95,7 +85,7 @@ void BM8563::DataMask() {
9585
入口参数:
9686
返 回 值:无
9787
***********************************************************************/
98-
void BM8563::Bcd2asc(void) {
88+
void Unit_RTC::Bcd2asc(void) {
9989
uint8_t i, j;
10090
for (j = 0, i = 0; i < 7; i++) {
10191
asc[j++] =
@@ -104,13 +94,13 @@ void BM8563::Bcd2asc(void) {
10494
}
10595
}
10696

107-
uint8_t BM8563::Bcd2ToByte(uint8_t Value) {
97+
uint8_t Unit_RTC::Bcd2ToByte(uint8_t Value) {
10898
uint8_t tmp = 0;
10999
tmp = ((uint8_t)(Value & (uint8_t)0xF0) >> (uint8_t)0x4) * 10;
110100
return (tmp + (Value & (uint8_t)0x0F));
111101
}
112102

113-
uint8_t BM8563::ByteToBcd2(uint8_t Value) {
103+
uint8_t Unit_RTC::ByteToBcd2(uint8_t Value) {
114104
uint8_t bcdhigh = 0;
115105

116106
while (Value >= 10) {
@@ -121,14 +111,14 @@ uint8_t BM8563::ByteToBcd2(uint8_t Value) {
121111
return ((uint8_t)(bcdhigh << 4) | Value);
122112
}
123113

124-
void BM8563::getTime(rtc_time_type *RTC_TimeStruct) {
114+
void Unit_RTC::getTime(rtc_time_type *RTC_TimeStruct) {
125115
// if()
126116
uint8_t buf[3] = {0};
127117

128-
_wire->beginTransmission(0x51);
118+
_wire->beginTransmission(DEVICE_ADDR);
129119
_wire->write(0x02);
130120
_wire->endTransmission(false);
131-
_wire->requestFrom(0x51, 3);
121+
_wire->requestFrom(DEVICE_ADDR, 3);
132122

133123
while (_wire->available()) {
134124
buf[0] = _wire->read();
@@ -141,12 +131,12 @@ void BM8563::getTime(rtc_time_type *RTC_TimeStruct) {
141131
RTC_TimeStruct->Hours = Bcd2ToByte(buf[2] & 0x3f); //
142132
}
143133

144-
int BM8563::setTime(rtc_time_type *RTC_TimeStruct) {
134+
int Unit_RTC::setTime(rtc_time_type *RTC_TimeStruct) {
145135
if (RTC_TimeStruct == NULL || RTC_TimeStruct->Hours > 24 ||
146136
RTC_TimeStruct->Minutes > 60 || RTC_TimeStruct->Seconds > 60)
147137
return 0;
148138

149-
_wire->beginTransmission(0x51);
139+
_wire->beginTransmission(DEVICE_ADDR);
150140
_wire->write(0x02);
151141
_wire->write(ByteToBcd2(RTC_TimeStruct->Seconds));
152142
_wire->write(ByteToBcd2(RTC_TimeStruct->Minutes));
@@ -155,13 +145,13 @@ int BM8563::setTime(rtc_time_type *RTC_TimeStruct) {
155145
return 1;
156146
}
157147

158-
void BM8563::getDate(rtc_date_type *RTC_DateStruct) {
148+
void Unit_RTC::getDate(rtc_date_type *RTC_DateStruct) {
159149
uint8_t buf[4] = {0};
160150

161-
_wire->beginTransmission(0x51);
151+
_wire->beginTransmission(DEVICE_ADDR);
162152
_wire->write(0x05);
163153
_wire->endTransmission(false);
164-
_wire->requestFrom(0x51, 4);
154+
_wire->requestFrom(DEVICE_ADDR, 4);
165155

166156
while (_wire->available()) {
167157
buf[0] = _wire->read();
@@ -181,11 +171,11 @@ void BM8563::getDate(rtc_date_type *RTC_DateStruct) {
181171
}
182172
}
183173

184-
int BM8563::setDate(rtc_date_type *RTC_DateStruct) {
174+
int Unit_RTC::setDate(rtc_date_type *RTC_DateStruct) {
185175
if (RTC_DateStruct == NULL || RTC_DateStruct->WeekDay > 7 ||
186176
RTC_DateStruct->Date > 31 || RTC_DateStruct->Month > 12)
187177
return 0;
188-
_wire->beginTransmission(0x51);
178+
_wire->beginTransmission(DEVICE_ADDR);
189179
_wire->write(0x05);
190180
_wire->write(ByteToBcd2(RTC_DateStruct->Date));
191181
_wire->write(ByteToBcd2(RTC_DateStruct->WeekDay));
@@ -203,7 +193,7 @@ int BM8563::setDate(rtc_date_type *RTC_DateStruct) {
203193
return 1;
204194
}
205195

206-
int BM8563::setAlarmIRQ(int afterSeconds) {
196+
int Unit_RTC::setAlarmIRQ(int afterSeconds) {
207197
uint8_t reg_value = 0;
208198
reg_value = ReadReg(0x01);
209199

@@ -234,7 +224,7 @@ int BM8563::setAlarmIRQ(int afterSeconds) {
234224
return afterSeconds * div;
235225
}
236226

237-
int BM8563::setAlarmIRQ(const rtc_time_type &RTC_TimeStruct) {
227+
int Unit_RTC::setAlarmIRQ(const rtc_time_type &RTC_TimeStruct) {
238228
uint8_t irq_enable = false;
239229
uint8_t out_buf[4] = {0x80, 0x80, 0x80, 0x80};
240230

@@ -267,8 +257,8 @@ int BM8563::setAlarmIRQ(const rtc_time_type &RTC_TimeStruct) {
267257
return irq_enable ? 1 : 0;
268258
}
269259

270-
int BM8563::setAlarmIRQ(const rtc_date_type &RTC_DateStruct,
271-
const rtc_time_type &RTC_TimeStruct) {
260+
int Unit_RTC::setAlarmIRQ(const rtc_date_type &RTC_DateStruct,
261+
const rtc_time_type &RTC_TimeStruct) {
272262
uint8_t irq_enable = false;
273263
uint8_t out_buf[4] = {0x80, 0x80, 0x80, 0x80};
274264

@@ -308,11 +298,11 @@ int BM8563::setAlarmIRQ(const rtc_date_type &RTC_DateStruct,
308298
return irq_enable ? 1 : 0;
309299
}
310300

311-
void BM8563::clearIRQ() {
301+
void Unit_RTC::clearIRQ() {
312302
uint8_t data = ReadReg(0x01);
313303
writeReg(0x01, data & 0xf3);
314304
}
315-
void BM8563::disableIRQ() {
305+
void Unit_RTC::disableIRQ() {
316306
clearIRQ();
317307
uint8_t data = ReadReg(0x01);
318308
writeReg(0x01, data & 0xfC);

0 commit comments

Comments
 (0)