#ifndef _DRVRTCI2C_H_ #define _DRVRTCI2C_H_ #include #include #define USR_DRV_RTC_I2C_ADDRESS 0x68 #define USR_DRV_RTC_I2C_SECOND 0x00 #define USR_DRV_RTC_I2C_MINUTE 0x01 #define USR_DRV_RTC_I2C_HOUR 0x02 #define USR_DRV_RTC_I2C_DAY 0x03 #define USR_DRV_RTC_I2C_DATE 0x04 #define USR_DRV_RTC_I2C_MONTH 0x05 #define USR_DRV_RTC_I2C_YEAR 0x06 #define USR_DRV_RTC_I2C_CAL_CFG1 0x07 #define USR_DRV_RTC_I2C_TCH2 0x08 #define USR_DRV_RTC_I2C_CFG2 0x09 #define USR_DRV_RTC_I2C_SFKEY1 0x20 #define USR_DRV_RTC_I2C_SFKEY2 0x21 #define USR_DRV_RTC_I2C_SFR 0x22 typedef __packed struct { uint8_t ms; uint8_t second; uint8_t minute; uint8_t hour; uint8_t date; uint8_t month; uint8_t year; uint8_t dayOfWeek; } USR_DRV_RTC_I2C_TIME; int8_t DrvRtcI2CInit(uint8_t i2c_id, int32_t i2c_speed); int8_t DrvRtcI2CGetTime(USR_DRV_RTC_I2C_TIME *rtc_time); int8_t DrvRtcI2CSetTime(USR_DRV_RTC_I2C_TIME *rtc_time); int8_t DrvRtcI2CReadSecond(uint8_t *second); int8_t DrvRtcI2CReadMinute(uint8_t *minute); int8_t DrvRtcI2CReadHour(uint8_t *hour); int8_t DrvRtcI2CReadDate(uint8_t *date); int8_t DrvRtcI2CReadMonth(uint8_t *month); int8_t DrvRtcI2CReadYear(uint8_t *year); int8_t DrvRtcI2CSetSecond(uint8_t second); int8_t DrvRtcI2CSetMinute(uint8_t minute); int8_t DrvRtcI2CSetHour(uint8_t hour); int8_t DrvRtcI2CSetDate(uint8_t date); int8_t DrvRtcI2CSetMonth(uint8_t mon); int8_t DrvRtcI2CSetYear(uint8_t year); int8_t DrvRtcI2CTrickCharge_mA(void); int8_t DrvRtcI2CTrickCharge_uA(void); int8_t DrvRtcI2COutput1hz(void); #endif