news 2026/4/18 10:35:10

RK3568 Android14 集成 HYM8563 外部 RTC (I2C接口)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RK3568 Android14 集成 HYM8563 外部 RTC (I2C接口)

RK3568 Android14 集成 HYM8563 外部 RTC (I2C接口)

前言

虽然 RK3568 SoC 内部自带了 RTC 控制器(rtc-rkw808),但在很多工业板卡或手持设备设计中,为了更低的待机功耗和更灵活的电池备份方案,硬件工程师往往会选择外挂一颗低功耗 RTC 芯片。
HYM8563 (与 BM8563、PCF8563 寄存器兼容)是最常见的一种 I2C 接口 RTC 芯片。本文将记录在 RK3568 Android 14 平台上,如何驱动这颗芯片,并使其成为系统的主 RTC。

一、 硬件原理与连接

1.1 硬件接口

HYM8563 是一颗标准的 I2C 从设备。
通讯接口:I2C (SCL/SDA)
设备地址:0x51 (7-bit address)
中断引脚:INT (输出低电平有效,非常重要,用于实现定时开机/唤醒功能)

1.2 原理图参考

假设我们将 RTC 挂载在 I2C5 总线上,中断脚连接到 GPIO0_D3。

HYM8563与RK3568引脚对应表

BM8563引脚RK3568引脚功能说明
SCLI2C5_SCL_M0I2C时钟信号线
SDAI2C5_SDA_M0I2C数据信号线
INTGPIO0_D3中断输出,用于唤醒主控
VCCVCC_3V3供电(纽扣电池或常电)

二、 内核驱动配置 (Kernel Config)

Rockchip 的 Linux 5.10 / 6.1 内核源码中已经包含了该芯片的通用驱动。

2.1 检查 Menuconfig

执行 make menuconfig,确保勾选以下选项:

Device Drivers--->[*]Real Time Clock---><*>Philips PCF8563/Epson RTC8564/Haoyu HYM8563

对应的 .config 配置项为:

CONFIG_RTC_DRV_HYM8563=y

注意:通常驱动源码位于 drivers/rtc/rtc-hym8563.c。

2.2 设备树配置 (DTS)

这是集成的核心步骤。我们需要在对应的 I2C 节点下添加 RTC 设备,并指定中断引脚。
打开 arch/arm64/boot/dts/rockchip/rk3568-your-board.dts:

/* 启用 I2C3 控制器 */&i2c5{status="okay";/* 添加 RTC 节点 */hym8563:hym8563@51{status="okay";compatible="haoyu,hym8563";reg=<0x51>;pinctrl-names="default";/* 配置中断脚: GPIO0_D3 *//* RK_PD3 需要在头文件中查找或直接写数字,通常推荐使用宏定义 */pinctrl-0=<&rtc_int>;interrupt-parent=<&gpio0>;interrupts=<RK_PD3 IRQ_TYPE_LEVEL_LOW>;};};/* 配置引脚复用(如果该引脚默认为其他功能) */&pinctrl{rtc{rtc_int:rtc-int{rockchip,pins=<0RK_PD3 RK_FUNC_GPIO&pcfg_pull_up>;};};};

三、 编译与验证

编译内核并烧录 boot.img 和 dtbo.img (如有)。

3.1 功能验证 (Linux 层)

# 读取硬件时间 hwclock-r-f/dev/rtc0 # 将系统时间写入硬件 RTC date-s"2025-05-01 12:00:00"hwclock-w-f/dev/rtc0 # 断电重启,再次读取,检查时间是否保存

3.2 唤醒测试 (关键)

HYM8563 的中断脚连接到 GPIO,主要为了支持 “设置闹钟唤醒系统”(深度休眠唤醒)。
设置定时唤醒:

echo+30>/sys/class/rtc/rtc0/wakealarm(表示30秒后触发中断)

让系统进入休眠:

echo mem>/sys/power/state

观察:
30秒后,系统应该自动亮屏或串口打印唤醒日志。如果无法唤醒,请检查:
INT 引脚的硬件连接是否正确。
DTS 中 interrupts 极性配置是否为 IRQ_TYPE_LEVEL_LOW。
示波器测量 INT 脚是否有电平拉低动作。

四.、常见问题 (FAQ)

Q1: 读取时间报错 “RTC_RD_TIME: Invalid argument”
原因:RTC 芯片内部寄存器数据非法(通常是电池没电或初次上电未初始化,Voltage Low 标志位被置起)。
解决:写入一次正确时间即可清除标志位:hwclock -w。

Q2: 系统重启后时间变回 1970 年
原因:纽扣电池没电,或者板子上并没有给 VCC 脚接常电。
解决:测量电池电压;检查 hctosys 是否开启(内核配置 CONFIG_RTC_HCTOSYS=y)。

Q3: I2C 通讯失败 (Timeout / No ack)
原因:地址错误(7位地址是 0x51,8位读地址是 0xA3),或者 I2C 上拉电阻缺失。
解决:检查原理图,确认 SDA/SCL 是否有 4.7k 上拉电阻。

总结

集成 HYM8563 相对简单,主要是标准的 I2C 设备调试。但在 Android 14 上,需要额外注意 aliases 别名 的设置,确保系统将 HYM8563 识别为 rtc0,否则系统可能依然读取 SoC 内部的默认时间,导致掉电时间不准。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:31:54

进程的状态及其 CPU 占用

1. R —— 唯一的 CPU 消费者这是最直观的状态&#xff0c;但这里有一个必须厘清的概念。定义&#xff1a;在内核源码中&#xff0c;R 并不意味着进程一定正在 CPU 上跑。它表明进程“要么是在运行中&#xff0c;要么在运行队列 (runqueue) 里” 。对 CPU 的占用&#xff1a;正…

作者头像 李华
网站建设 2026/4/18 3:43:41

32 低功耗模式(睡眠 停机 待机 )

一、前言在实际嵌入式开发过程中&#xff0c;我们会去考虑我们设计出来的产品的实际工作时间&#xff0c;例如桥梁探测系统&#xff0c;智能穿戴设备&#xff0c;我们希望在满足用户前提下尽可能地减少用户充电次数&#xff0c;所以引出今日沟通的主题&#xff1a;低功耗模式。…

作者头像 李华
网站建设 2026/4/18 3:51:01

【AI开发宝典】字节跳动Agent实践手册:从0到1构建你的智能助手,大模型应用不再难!

《字节跳动 Agent 实践手册》系统构建了 Agent 技术从理论到实践、从技术到业务的完整指导体系&#xff0c;全面覆盖字节跳动 Agent 技术应用的核心维度。 手册开篇明确 Agent 作为具备自主性与社会性的软件实体&#xff0c;深度融入办公、电商、内容创作、教育等多元业务线&a…

作者头像 李华
网站建设 2026/4/17 9:32:55

海外盲盒小程序开发,加快企业盲盒出海收益[特殊字符]

海外盲盒小程序开发&#xff0c;加快企业盲盒出海收益&#x1f4b0;海外盲盒小程序应具备哪些功能❓1、语言系统&#xff1a;在小程序平台上&#xff0c;支持多种语言切换&#xff0c;满足不同地区的消费者需求。2、盲盒商城&#xff1a;用户在首页可以清晰看到各类盲盒商品&am…

作者头像 李华