RK3568开发笔记-iSL1208 RTC时钟芯片调试记录

文章目录


前言

实时时钟的缩写是RTC(Real_Time Clock)。RTC 是集成电路,通常称为时钟芯片。 实时时钟芯片是日常生活中应用最为广泛的消费类电子产品之一。 目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源,有些主板时钟芯片为了在主电源掉电时,还可以工作,一般添加额外电池供电,本文主要介绍在RK3568平台调试RTC时芯片ISL1208的开发记录

 

一、RTC部分原理图

ISL1208使用i2c接口与cpu进行通信,RK3568通过i2c接口完成对RTC时钟芯片的配置,以及数据读写操作,部分原理图如下所示:

二、设备树配置

根据原理图,RK3568 CPU通过i2c3完成对rtc时钟芯片的配置,通过查询rtc时钟芯片手册,可以得知RTC ISL1208芯片i2c地址为0x6f,我们使用官方sdk包进行配置,打开设备树文件vi /rk356x_linux_220118/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb6-ddr3-v10.dtsi,设备配置节点如下所示:

&i2c3 {
        status = "okay";

        isl1208: isl1208@6f {
                status = "okay";
                compatible = "isil,isl1208";
                reg = <0x6f>;
                pinctrl-names = "default";
                pinctrl-0 = <&rtc_int>;

                interrupt-parent = <&gpio0>;
                interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
        };
};

&pinctrl {
        rtc {
                rtc_int: rtc-int {
                        rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
                };
        };
};

主要配置部分主要包含以下几点:

1、i2c3控制器使能;

2、rtc时钟芯片i2c设备地址配置;

3、中断脚配置,该模块芯片中断脚主要用作定时、报警等功能,在本文不做介绍。

三、内核配置

内核配置主要包含i2c控制器驱动、rtc时钟芯片驱动配置等,官方sdk已经包含ISL1208驱动,我们只需要配置编译该模块驱动即可,驱动路径如下所示:

rk356x_linux_220118/kernel/drivers/rtc/rtc-isl1208.c

驱动配置:> Device Drivers > Real Time Clock >Intersil ISL1208

注意点:

由于RK809内部集成了rtc功能,且sdk默认打开了rtc时钟配置,故需要设置系统启动读取ISL1208时钟芯片时钟作为系统时间,配置节点如下:

> Device Drivers > Real Time Clock > (RTC1) RTC used to set the system time 

 配置完成编译kernel即可。

四、设备信息查看

1、dmesg查看ISL1208节点信息,如下rtc时钟芯片驱动加载成功,时间读取正常:

 2、设备节点查看,rtc0位RK809 rtc设备节点、rtc1为1208时钟芯片设备节点,系统默认读取rtc1时间作为系统时钟:

3、i2c设备节点扫描,i2c3总线上扫描到i2c设备,UU表示设备被系统占用:

五、RTC时间读写设置

1、rtc时间设置。设置时间到系统,并使用hwclock同步rtc时钟芯片,命令如下所示:

date -s "2022-11-09 21:51:00"

hwclock -w -u -f /dev/rtc1

 

2、rtc时间读取。使用hwclock读取rtc时钟芯片时间数据,命令如下所示:

 hwclock -r -u -f /dev/rtc1

总结

以上就是今天要讲的内容,包含ISL1208时钟芯片驱动配置,模块数据读写等。

猜你喜欢

转载自blog.csdn.net/qq_18376583/article/details/127777818