MaixPy BM8563 RTC 使用说明
2024-08-27
更新历史
| 日期 | 版本 | 作者 | 更新内容 |
|---|---|---|---|
| 2024-08-27 | 1.0.0 | iawak9lkm | 初版文档 |
BM8563 简介
BM8563 是一款实时时钟(RTC)芯片,用于保存时间和日期。连接备用电池后,即使设备关机,它也能继续计时。
MaixPy 中使用 BM8563
创建 BM8563 对象时需要填写芯片所在的 I2C 总线。MaixCAM Pro 板载的 BM8563 使用 I2C-4。
示例代码:
from maix import ext_dev, pinmap, err, time
### Enable I2C
# ret = pinmap.set_pin_function("PIN_NAME", "I2Cx_SCL")
# if ret != err.Err.ERR_NONE:
# print("Failed in function pinmap...")
# exit(-1)
# ret = pinmap.set_pin_function("PIN_NAME", "I2Cx_SDA")
# if ret != err.Err.ERR_NONE:
# print("Failed in function pinmap...")
# exit(-1)
BM8563_I2CBUS_NUM = 4
rtc = ext_dev.bm8563.BM8563(BM8563_I2CBUS_NUM)
### 2020-12-31 23:59:45
t = [2020, 12, 31, 23, 59, 45]
# Set time
rtc.datetime(t)
while True:
rtc_now = rtc.datetime()
print(f"{rtc_now[0]}-{rtc_now[1]}-{rtc_now[2]} {rtc_now[3]}:{rtc_now[4]}:{rtc_now[5]}")
time.sleep(1)
使用 MaixCAM Pro 板载的 BM8563 时,不需要另外配置 I2C-4 引脚。
上面的示例设置 BM8563 时间,然后每秒读取一次。
下面的示例可以在 BM8563 时间和系统时间之间同步。
from maix import ext_dev, pinmap, err, time
### Enable I2C
# ret = pinmap.set_pin_function("PIN_NAME", "I2Cx_SCL")
# if ret != err.Err.ERR_NONE:
# print("Failed in function pinmap...")
# exit(-1)
# ret = pinmap.set_pin_function("PIN_NAME", "I2Cx_SDA")
# if ret != err.Err.ERR_NONE:
# print("Failed in function pinmap...")
# exit(-1)
BM8563_I2CBUS_NUM = 4
rtc = ext_dev.bm8563.BM8563(BM8563_I2CBUS_NUM)
### Update RTC time from system
rtc.systohc()
### Update system time from RTC
# rtc.hctosys()
while True:
rtc_now = rtc.datetime()
print(f"{rtc_now[0]}-{rtc_now[1]}-{rtc_now[2]} {rtc_now[3]}:{rtc_now[4]}:{rtc_now[5]}")
time.sleep(1)
BM8563 API 会保护同一芯片的并发读写,因此可以在不同位置创建对象,不会因为同时访问而产生数据竞争。
传给 BM8563 对象的 timetuple 格式是 (year, month, day[, hour[, minute[, second]]])。年、月、日必填;省略的时间项不会被修改。读取成功时会返回包含 6 个元素的列表:(year, month, day, hour, minute, second);空结果表示读取失败。
完整参数见 BM8563 API 文档。