当前位置: 首页 > news >正文

Linux设备驱动 -- RTC驱动移植DS1339

查看原理图

RTC芯片采用的是DS1339芯片,这是达拉斯半导体公司的一款RTC芯片,使用I2C接口。

芯片接在RK3568的I2C5。

Linux内核支持DS1339

检索linux内核是否支持DS1339芯片驱动。

通过搜索可知到,Linux系统内核中已有达拉斯DS1339的驱动,DS13xx这一系列芯片都是使用同一个驱动。

内核参考文档:kernel/Documentation/rtc.txt、kernel/Documentation/devicetree/bindings/rtc/rtc-ds1307.txt

驱动源码位置:kernel/drivers/rtc/rtc-ds1307.c

驱动注册和匹配:

staticconststructof_device_idds1307_of_match[]={// ...{.compatible="dallas,ds1339",.data=(void*)ds_1339},// ...};staticstructi2c_driverds1307_driver={.driver={.name="rtc-ds1307",.of_match_table=of_match_ptr(ds1307_of_match),.pm=&ds1307_pm_ops,},.probe=ds1307_probe,.remove=ds1307_remove,.id_table=ds1307_id,};module_i2c_driver(ds1307_driver);

配置内核使能配置使能

->Device Drivers->Real TimeClock(RTC_CLASS[=y])->Dallas/Maxim DS1307/37/38/39/40/41,ST M41T00,EPSON RX-8025,ISL12057(RTC_DRV_DS1307[=y])
CONFIG_RTC_DRV_DS1307=y

编写设备树节点

&i2c5{status="okay";pinctrl-0=<&i2c5m0_xfer>;rtc_ds1339:rtc@68{compatible="dallas,ds1339";reg=<0x68>;trickle-resistor-ohms=<2000>;status="okay";};
  • pinctrl-0属性:将i2c5对应的引脚配置为i2c功能。

  • compatible属性:其值必须是dallas,ds1339,否则无法和内核中已有的驱动匹配。

  • reg属性:ds1339 rtc芯片的i2c地址。

  • trickle-resistor-ohms用于配置 RTC 芯片涓流充电电路的限流电阻阻值(单位:欧姆),核心作用是限制对 RTC 备用充电电池的充电电流,防止过充,仅适用于支持涓流充电的 RTC 芯片(如 DS1339),取值需匹配芯片手册要求(如 DS1339 常用 2000/4000/8000 等),无充电需求时可省略或设为 0。

编写配置好设备树节点,重新编译内核。

用户空间访问

# 读取当前时间cat/sys/class/rtc/rtc0/time# 读取日期cat/sys/class/rtc/rtc0/date# 设置时间 (格式: HH:MM:SS)echo"12:34:56">/sys/class/rtc/rtc0/time# 设置日期 (格式: YYYY-MM-DD)echo"2024-01-01">/sys/class/rtc/rtc0/date
http://www.jsqmd.com/news/608794/

相关文章:

  • Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接戮
  • Stable-Diffusion-v1-5-archive多分辨率实践:512/768/1024输出适配与长宽比控制
  • 图书借阅系统
  • 使用 C# 删除 PDF 中的数字签名咐
  • 06OpenCVSharp角点检测与检测平整度
  • 2026年4月国内汽车后视镜热弯模具直销厂家,铝行业精炼用热鼎盘/硅酸钙保温管,汽车后视镜热弯模具直销厂家推荐分析 - 品牌推荐师
  • Nginx本地缓存
  • 扫雷游戏(优化)
  • 避坑指南:ESP32C3开发板音频系统常见问题排查(I2S+ES8311实战)
  • AI新手必读:从零开始,彻底搞懂AIGC与大模型(收藏版)
  • 别再死记硬背SAC公式了!用CleanRL代码逐行拆解,手把手教你理解熵正则化与重参数化
  • 抖音无水印下载神器:三分钟掌握批量下载技巧
  • 项目实训——大数据租房推荐智能体(爬虫部分1)
  • 20251906 2025-2026-2 《网络攻防实践》第三周作业
  • 第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组个人题解
  • 【Linux复习】:进程信号
  • Qwen2-VL-2B多模态向量模型教程:图文嵌入向量用于多标签图像分类迁移学习
  • RFID智能柜-RFID智能柜厂家推荐 - 聚澜智能
  • Dell R720服务器安装Ubuntu避坑指南:从BIOS设置到分区优化全流程
  • Nginx本地缓存API
  • 程序控制结构
  • Altium AD20差分对走线实战:如何用交互式布线快速搞定高速信号线
  • ABAQUS用户子程序进阶指南——UMAT参数详解与实战配置
  • 通俗秒懂:储能控制器在电网调频中的关键作用与实现原理
  • 软件需求工程教案
  • Golang如何设置HTTP路由_Golang HTTP路由教程【实用】
  • 一张图看懂巴菲特 48 年投资帝国:知识图谱效果全展示
  • 别再手动配环境了!用ModelScope官方镜像5分钟搞定AI模型运行环境(附最新CPU/GPU镜像地址)
  • 【转载】ROS 中 CMakeLists.txt 文件使用的讲解与总结
  • Workstation 避坑指南:网络总连不上?深度解析常见网络配置故障与底层排错逻辑