RTC 使用 简介 ITX-3588J 开发板采用HYM8563作为RTC( Real Time Clock ),HYM8563是一款低功耗CMOS实时时钟/日历芯片,它提供一个可编程的时钟输出 ,一个中断 输出和一个掉电检测器,所有的地址和数据都通过I2C总线接口串行传 递。最大总线速度为 400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动 递增 可计时基于 32.768kHz 晶体的秒,分,小时,星期,天,月和年 宽工作电压范围:1.0~5.5V 低休眠电流:典型值为 0.25μA(VDD =3.0V, TA =25°C) 内部集成振荡电容 漏极开路中断引脚 RTC有两个供电选择,一个是纽扣电池,一个是电容。开发板装上1220纽扣电池 后,可以保证板子掉电后RTC长时间正常运行,电容则是短时间内保证RTC运行。 纽扣电池座和电容的位置如下图所示: RTC驱动 Android SDK中的DTS配置参考: "kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-diff.dtsi"和 `kernel/arch/arm64/boot/dts/rockchip/rk3588-firefly-itx-3588j.dtsi &i2c6 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&i2c6m0_xfer>; clock-frequency = <400000>; hym8563: hym8563@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; clock-frequency = <32768>; clock-output-names = "hym8563"; pinctrl-names = "default"; pinctrl-0 = <&hym8563_int>; interrupt-parent = <&gpio0>; interrupts = ; wakeup-source; status = "disabled"; }; }; 驱动参考:"kernel-5.10/drivers/rtc/rtc-hym8563.c" 接口使用 Linux 提供了三种用户空间调用接口。在 ITX-3588J 开发板中对应的路径为: SYSFS接口:/sys/class/rtc/rtc0/ PROCFS接口: /proc/driver/rtc IOCTL接口: /dev/rtc0 SYSFS接口 可以直接使用 "cat" 和 "echo" 操作 "/sys/class/rtc/rtc0/" 下面的接口。 比如查看当前 RTC 的日期和时间: # cat /sys/class/rtc/rtc0/date 2022-06-21 # cat /sys/class/rtc/rtc0/time 06:52:08 设置开机时间,如设置 120 秒后开机: #120秒后定时开机 echo +120 > /sys/class/rtc/rtc0/wakealarm # 查看开机时间 cat /sys/class/rtc/rtc0/wakealarm #关机 reboot -p PROCFS 接口 打印 RTC 相关的信息: # cat /proc/driver/rtc rtc_time : 06:53:50 rtc_date : 2022-06-21 alrm_time : 06:55:05 alrm_date : 2022-06-21 alarm_IRQ : yes alrm_pending : no update IRQ enabled : no periodic IRQ enabled : no periodic IRQ frequency : 1 max user IRQ frequency : 64 24hr : yes IOCTL接口 可以使用 "ioctl" 控制 "/dev/rtc0"。 详细使用说明请参考文档 "kernel-5.10/Documentation/admin-guide/rtc.rst" 。 FAQs Q1: 开发板上电后时间不同步? A1: 检查一下 RTC 电池是否正确接入。