linux RTC时钟时间出现了明显的偏移

RTC时钟时间出现了明显的偏移

  • 1、开发环境
  • 2、问题阐述
    • 3、验证问题
        • 3.1、首先去排查了硬件电路和芯片电压不稳定的问题。
        • 3.2、晶振的问题。
        • 3.3、芯片本身
        • 3.4、芯片寄存器
    • 4、代码修改

1、开发环境

平台:imx6ul
kernel版本:linux4.1.5
RTC芯片:PCF85063
硬件电路图如下所示
在这里插入图片描述

2、问题阐述

硬件时钟RTC往往是用作系统在掉电后,用纽扣电池维持硬件时钟继续运转时间。待系统起来后,再将硬件时间同步到系统时间上。
所以,硬件时间是否准确就很重要了。最近发现一款RTC芯片PCF85063,稍微运行个3-4个小时,就会跟系统时间出现明显的时间偏移(大概是2-3秒),按这个计算一天就12秒左右了。这是完全不可以接受的。
影响时间不准有几大因素:
1、输入时钟(晶振)
2、芯片本身
3、芯片电压不稳定
4、硬件电路问题
接下来我们去验证

3、验证问题

3.1、首先去排查了硬件电路和芯片电压不稳定的问题。
3.2、晶振的问题。

不同的晶振输出的频率都会有所差异,比如同样是32.768KZ的不同型号的晶振,在同一个板子上,分别会出现快了5秒和慢了3秒的情况。
经过实验,分别换电路图中晶振的负载电容,比如5pf,7pf,12.5pf,15pf,22pf。确实是会出现不用程度的时间偏移,
但优化程度远远没有达到目标偏移值。

3.3、芯片本身

将芯片放在其他不同型号,封装一样,稳定的板子上测试,这里我推荐是pcf8563,这里基本上可以推测出是晶振还是芯片的问题了。

3.4、芯片寄存器

查看一下这个型号的手册,发现这个RTC芯片比较特殊,居然有个偏移寄存器PPM。
可以通过这个寄存器去校正晶振频率带来的频移。从而使芯片大约1秒滴答一次。
在这里插入图片描述
寄存器说明如下所示,默认为0x00
在这里插入图片描述
在这里插入图片描述
我个人把这个称为低功耗模式,另一个是性能模式。为什么这么说。一个是2个小时偏移一次,另一个是4分钟偏移一次。通过不断实验对比,得到较为稳定的值即可。

4、代码修改

通过实验得到偏移寄存器的偏移值,再通过pcf85063.c驱动代码的形式写进去即可,如下所示。

static int pcf85063_rtc_mode(struct device *dev, unsigned int arg, unsigned long cmd)
{struct i2c_client *client = to_i2c_client(dev);unsigned char buf[2];unsigned char val;int err;buf[0] = arg;buf[1] = cmd;err = i2c_master_send(client, buf, sizeof(buf));if(err != sizeof(buf)) {dev_err(&client->dev, \"%s: err=%d addr=%02x, data=%02x\n",__func__, err, buf[0], buf[1]);return -EIO;}return 0;
}
static int pcf85063_probe(struct i2c_client *client,const struct i2c_device_id *id)
{
//......省略ret = device_create_file(&client->dev, &dev_attr_clk_out_ctl);if(ret != 0)dev_err(&client->dev, "%s: device create file err\n", __func__);pcf85063_rtc_ioctl(&client->dev, CLKOUT_OFF, 0);+ pcf85063_rtc_mode(&client->dev, 0x02, 0xe0);return PTR_ERR_OR_ZERO(pcf85063->rtc);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机械键盘有哪些分类

机械键盘是一种比传统的薄膜键盘更耐用、更快捷、更具有手感的键盘。它的键帽和按键是独立的,能够提供更好的反应速度和操作感。机械键盘在现代化生活中得到了广泛的应用。根据其特性和使用场景,机械键盘可以分为以下几类: 1.轴体分类 机械…

设计模式探索:建造者模式

1. 什么是建造者模式 建造者模式 (Builder Pattern),也被称为生成器模式,是一种创建型设计模式。 定义:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式要解决的问题: 建造者模…

誉天教育7月开班计划:为梦想插上腾飞的翅膀!

随着夏日的脚步渐近,誉天教育也迎来了新一轮的学习热潮。在这个充满活力和希望的季节里,我们精心策划了7月的开班计划,旨在为广大学子提供一个优质、高效的学习平台,助力他们追逐梦想,实现自我价值。 本月 Linux云计算…

探讨3D沉浸式在线会议系统的研发 - Meta演示的元宇宙虚拟化身多人对话场景,Web端现在也可以实现了 !

要实现一个元宇宙多人会议系统,关键技术有: 1. 3D虚拟空间的构建(含光影特效、虚拟现实和增强现实) 2. 3D虚拟化身的构建(含动画、表情、语音) 3. 多人角色管理 4. 会话控制和信息同步 5. 语音合成 6…

目标检测2--yolov1中相关基础知识(边框回归、交并比、nms)介绍

文章目录 前言回归介绍基本概念线性回归非线性回归边框回归 交并比介绍定义程序实现 NMS介绍定义与原理工作原理代码实现 前言 在上篇博客目标检测1–Pytorch目标检测之yolov1中介绍了yolov1的原理,里面提到几个知识点现在详细介绍一下。 回归介绍 在上篇博客中提…

【Qt】Qt开发环境搭建

目录 一. Qt SDK的下载&安装 二. Qt相关工具介绍 Qt的常用开发工具有: Qt CreatorVisual StudioEclipse 一. Qt SDK的下载&安装 Qt 下载官网: http://download.qt.io/archive/qt/ 国内清华源: https://mirrors.tuna.tsinghua.edu.cn/qt/arc…

实战某大型连锁企业域渗透

点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 扫描二维码五折购书 实战域渗透测试流程 对黑客来说,拿下域控制器是终极目标。然而攻击者空间是如何通过采取信息收集、权限提升、横向移动等一系列手段,从而一步步…

《基于 defineProperty 实现前端运行时变量检测》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,欢迎多多交流~ &am…

STM32CubeMX实现4X5矩阵按键(HAL库实现)

为了实现计算器键盘,需要使用4X5矩阵按键,因此,我在4X4矩阵键盘上重新设计了一个4X5矩阵按键。原理图如下: 原理描述: 4X5矩阵按键,可以设置4个引脚为输出,5个引脚为输入模式,4个引…

【云原生】Prometheus监控Docker指标并接入Grafana

目录 一、前言 二、docker监控概述 2.1 docker常用监控指标 2.2 docker常用监控工具 三、CAdvisor概述 3.1 CAdvisor是什么 3.2 CAdvisor功能特点 3.3 CAdvisor使用场景 四、CAdvisor对接Prometheus与Grafana 4.1 环境准备 4.2 docker部署CAdvisor 4.2.2 docker部署…

【Java探索之旅】初识多态_概念_实现条件

文章目录 📑前言一、多态1.1 概念1.2 多态的实现条件 🌤️全篇总结 📑前言 多态作为面向对象编程中的重要概念,为我们提供了一种灵活而强大的编程方式。通过多态,同一种操作可以应用于不同的对象,并根据对象…

el-table 树形数据与懒加载 二级数据不展示

返回的数据中 children和hasChildren只能有一个,不能同时存在,否则加载数据会失败

零基础STM32单片机编程入门(八)定时器PWM输入实战含源码视频

文章目录 一.概要二.PWM输入框架图三.CubeMX配置一个PWM输入例程1.硬件准备2.创建工程3.调试 四.CubeMX工程源代码下载五.讲解视频链接地址六.小结 一.概要 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用单…

手把手搭建微信机器人,帮你雇一个24小时在线的个人 AI 助理(上)

上一篇,带领大家薅了一台腾讯云服务器:玩转云服务:手把手带你薅一台腾讯云服务器,公网 IP。 基于这台服务器,今天我们一起动手捏一个基于 LLM 的微信机器人。 0. 前置准备 除了自己常用的微信账号以外,还…

盘点8款国内顶尖局域网监控软件(2024年国产局域网监控软件排名)

局域网监控软件对于企业网络管理至关重要,它们可以帮助IT部门维护网络安全,优化网络性能,同时监控和控制内部员工的网络使用行为。以下是八款备受推崇的局域网监控软件,每一款都有其独特的优势和适用场景。 1.安企神软件 试用版领…

VSCode远程服务器如何上传下载文件(超方便!)

方法一: 1、在VSCode应用商店安装SFTP插件 2、然后就可以直接把文件拖进VSCode即可,如下图所示: 这里的目录是我远程服务器上的目录,可以直接将要上传的文件直接拖进需要的文件夹 3、如果要从远程服务器上下载文件到本地&#x…

安装Gradle

官网文档 https://gradle.org/ 腾讯下载镜像:https://mirrors.cloud.tencent.com/gradle/ 文档:https://docs.gradle.org/current/userguide/userguide.html 命令行文档:https://docs.gradle.org/current/userguide/command_line_interface.…

Java高级重点知识点-21-IO、字节流、字符流、IO异常处理、Properties中的load()方法

文章目录 IOIO的分类 字节流字节输出流【OutputStream】字节输入流【InputStream】图片复制 字符流字符输入流【FileReader】字符输出流【FileWriter】 IO异常的处理(扩展知识)Properties属性集(java.util) IO Java中I/O操作主要是指使用 java.io 包下的…

《侃侃而谈 · 关于接外单的一些事》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

期末成绩发布方式

期末考试结束后,成绩单的发放总是让老师们头疼不已。想象一下,每个学生的成绩都需要老师一个个私信给家长,不仅耗时耗力,而且极易出错。 在传统的成绩单发放方式中,老师往往需要通过电子邮件、短信或者微信等方式&…