/**********************************************************************
|
* Copyright: (C)2026 LingYun IoT System Studio
|
* Author: GuoWenxue<guowenxue@gmail.com>
|
*
|
* Description: ISL1208 RTC driver on ISKBoard
|
*
|
* ChangeLog:
|
* Version Date Author Description
|
* V1.0.0 2026.07.08 GuoWenxue Release initial version
|
*
|
************************************************************************/
|
|
#ifndef __ISL1208_H
|
#define __ISL1208_H
|
|
#include "i2c_bitbang.h"
|
|
/**
|
* @brief RTC 时间结构体 (标准十进制格式,应用层直接读写)
|
*/
|
typedef struct {
|
uint8_t second; /* 秒: 00 - 59 */
|
uint8_t minute; /* 分: 00 - 59 */
|
uint8_t hour; /* 时: 00 - 23 (固定为24小时制) */
|
uint8_t day; /* 日: 01 - 31 */
|
uint8_t month; /* 月: 01 - 12 */
|
uint8_t year; /* 年: 00 - 99 (代表 2000 - 2099 年) */
|
uint8_t weekday; /* 星期: 00 - 06 (00代表星期天) */
|
} rtc_time_t;
|
|
/**
|
* @brief ISL1208 硬件初始化与掉电自愈函数
|
* @param bus: 绑定的 I2C 物理总线指针 (如 &i2c1_bus)
|
* @retval 0: 初始化成功; -1: 总线通信失败或芯片未响应
|
*/
|
extern int isl1208_init(i2c_bus_t *bus);
|
|
/**
|
* @brief 应用层设置 RTC 时间接口函数(rtc_time_t格式)
|
* @param time 指向待写入时间数据的 rtc_time_t 结构体常指针
|
* @retval 0:成功, -1:失败
|
*/
|
extern int isl1208_set_time(const rtc_time_t *time);
|
|
/**
|
* @brief 应用层设置 RTC 时间接口函数(字符串格式)
|
* @param time_str 输入的时间字符串指针,格式如 "2026-01-01 10:00:00"
|
* @retval 0:成功, -1:失败
|
*/
|
extern int isl1208_set_time_str(const char *time_str);
|
|
/**
|
* @brief 应用层获取 RTC 时间接口函数
|
* @param time 指向用于接收时间数据的 rtc_time_t 结构体指针
|
* @retval 0:成功, -1:失败
|
*/
|
extern int isl1208_get_time(rtc_time_t *time);
|
|
/**
|
* @brief 应用层获取 RTC 时间接口函数(字符串格式)
|
* @param buf 用于存储格式化时间字符串的缓冲区指针
|
* @param buf_len 接收缓冲区长度(建议至少20字节)
|
* @retval 0:成功, -1:失败
|
*/
|
extern int isl1208_get_time_str(char *buf, size_t buf_len);
|
|
/**
|
* @brief 获取并格式化打印当前 RTC 时间接口函数
|
* @retval 0:成功, -1:失败
|
*/
|
extern int isl1208_print_time(void);
|
|
#endif /* __ISL1208_H */
|