MaixPy BM8563 RTC 使用说明

更新历史
日期 版本 作者 更新内容
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 文档