跳转至

pcf8563t - pcf8563t时钟模块

示例

-- 数据手册 https://www.nxp.com.cn/docs/zh/data-sheet/PCF8563.pdf
local pcf8563t = require "pcf8563t"

local i2cid = 1
i2c.setup(i2cid, i2c.FAST)
pcf8563t.setup(i2cid) -- 选一个i2c, 也可以是软件i2c对象

-- 设置时间
local time = {year=2023,mon=11,day=2,wday=5,hour=13,min=14,sec=15}
pcf8563t.write(time)

-- 读取时间
local time = pcf8563t.read()
log.info("time",time.year,time.mon,time.day, time.hour,time.min,time.sec, "week=".. time.wday)

-- 设置闹钟, 并自动清除中断标志,开启alarm功能
alarm = {day=2,hour=13,min=14,sec=15}
pcf8563t.alarm(alarm)
local alarm_int = 1 -- 选一个GPIO,接时钟模块的INT脚
gpio.setup(1, function()
    log.info("alarm!!!")
    pcf8563t.control(nil, nil, 0, nil)
end, gpio.PULLUP)

-- 主动清除中断标志
pcf8563t.control(nil, nil, 0, nil)
-- 关闭alarm
pcf8563t.control(0, nil, 0, nil)

pcf8563t.setup(id, by)

初始化

参数

传入值类型 解释
int i2c设备的id, 或者软件i2c的对象,必须填
int 年份基准,默认是2000, 可以不填

返回值

返回值类型 解释
boolean 成功返回true, 否则返回false

例子


pcf8563t.read()

读出时间

参数

返回值

返回值类型 解释
table 时间信息,如果读取失败会返回空的表

例子

local time = pcf8563t.read()
if time and time.year then
    log.info("time", json.encode(time))
end
-- time 是个table, 有以下字段, 与os.date是兼容的
-- time.year 年份
-- time.mon  月份
-- time.day  月内的天数
-- time.hour 小时, 24进制
-- time.min  分钟
-- time.sec  秒
-- time.wday 周N, 周日为1, 周六为7

pcf8563t.write(time)

设置时间

参数

传入值类型 解释
table 时间信息,与pcf8563t.read的字段规则是一样的

返回值

返回值类型 解释
nil 无返回值

例子

local time = {year=2023,mon=11,day=2,wday=5,hour=13,min=14,sec=15}
pcf8563t.write(time)

pcf8563t.alarm(time)

设置闹钟

参数

传入值类型 解释
table 时间信息

返回值

返回值类型 解释
nil 无返回值

例子

-- 设置闹钟, 并自动清除中断标志,开启alarm功能
-- 注意只能设置天(wday)/小时(hour)/分钟(min)/周天(wday), 无法设置年月
alarm = {day=2,hour=13,min=14}
pcf8563t.alarm(alarm)
local alarm_int = 1 -- 选一个GPIO,接时钟模块的INT脚
gpio.setup(1, function()
    log.info("alarm!!!")
    pcf8563t.control(nil, nil, 0, nil)
end, gpio.PULLUP)

-- 注意规则!!! 传入的值,需要全部匹配才会触发
-- 例如, 每当min=1时触发, 不判断hour/day/wday
alarm = {min=1}
-- 例如, 每当min=1且hour=0时触发, 不判断day/wday
alarm = {min=1, hour=0}
-- 全部day/hour/min都满足才触发
alarm = {day=2,hour=13,min=14}
-- 全部day/hour/min/wday都满足才触发
alarm = {day=2,hour=13,min=14,wday=2}

pcf8563t.control(AIE, TIE, AF, TF)

设置闹钟

参数

传入值类型 解释
int 闹钟开关, 0 关闭, 1 开始, nil保持原样
int 定时器开关, 0 关闭, 1 开始, nil保持原样
int 清除闹钟中断, 0 清除, nil保持原样
int 清除定时器中断, 0 清除, nil保持原样

返回值

返回值类型 解释
nil 无返回值

例子

-- 主动清除中断标志
pcf8563t.control(nil, nil, 0, nil)
-- 关闭alarm
pcf8563t.control(0, nil, 0, nil)