正点原子 核心板IMX6ULL IIC RTC驱动 PCF8563

news2024/11/28 0:32:00

目录

  • 前言
    • IIC RTC PCF8563硬件使用
      • IIC设备地址
      • 配置 menuconfig 自带PCF8563驱动
      • 修改设备树dtb
      • 编写应用App
    • 测试

前言

此篇基于学完【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6 后,使用核心板进行自行设置。

IIC RTC PCF8563硬件使用

Imx6ul内部的RTC时钟不是很准, 而且特别耗电,纽扣电池撑不住,于是外置RTC芯片PCF8563
PCF8563的规格书可以在立创商城上下载。这里截取需要的部分。

IIC设备地址

在这里插入图片描述
说明了IIC地址是1010001b = 0x51

配置 menuconfig 自带PCF8563驱动

Device Drivers —>

 [*] Real Time Clock  --->

       [*]   Set system time from RTC on startup and resume    (自动同步时间)

       <*>   Philips PCF8563/Epson RTC8564          (CONFIG_RTC_DRV_PCF8563)

在这里插入图片描述
我这里配置成模块,选择M,不配置成Y,也就是不编译进内核,编译成模块。

在内核代码里只编译模块,命令make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules

编译完成后会有一行提示生成了 rtc-pcf8563.ko 这个目录下:
在这里插入图片描述
把.ko 放到/lib/modules/4.1.15/目录下,这里正当原子手册上教过怎么操作模块文件的。

修改设备树dtb

比如连接的I2C1,把原来的ap3216注释掉,改成新的pcf8563,设备地址是0x51(前面说过的)

&i2c1 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	pcf8563@51 {
		compatible = "nxp,pcf8563";
		reg = <0x51>;
		#clock-cells = <0>;
	};

/*	ap3216c@1e {
		compatible = "alientek,ap3216c";
		reg = <0x1e>;
	};*/

然后把compatible 改成 “nxp,pcf8563”

因为在menuconfig里配置pcf8563就是启用了rtc-pcf8563.c,这个文件又会被编译成.ko,这里面提到了device id pcf8563 of match, 要求compatible为"nxp,pcf8563"。

#ifdef CONFIG_OF
static const struct of_device_id pcf8563_of_match[] = {
	{ .compatible = "nxp,pcf8563" },
	{}
};
MODULE_DEVICE_TABLE(of, pcf8563_of_match);
#endif

编写应用App

正点原子的操作是编写个App来操作RTC,不编写用linux 自带的hwclock 命令也可以。

#include "stdio.h"
#include "unistd.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "sys/ioctl.h"
#include "fcntl.h"
#include "stdlib.h"
#include "string.h"
#include <poll.h>
#include <sys/select.h>
#include <sys/time.h>
#include <signal.h>
#include <fcntl.h>
#include <linux/rtc.h>

 
int main(int argc, char** argv)
{
	int pcf8563, ret;
	struct rtc_time rtc_tm;
	
 
	int fd, retvalue;
	char *filename;
	
	
	if(argc != 2){
		printf("Error Usage!\r\n");
		return -1;
	}
 
	filename = argv[1];

	pcf8563 = open(filename, O_RDWR);
	if(fd < 0){
		printf("file %s open failed!\r\n", argv[1]);
		return -1;
	}
 
	ret = ioctl(pcf8563, RTC_RD_TIME, &rtc_tm);
    printf("ret:%d\r\n",ret);
	if(ret == 0)
	{
		printf("Time: %04d-%02d-%02d %02d:%02d:%02d\n", rtc_tm.tm_year+1900, rtc_tm.tm_mon+1,
        rtc_tm.tm_mday, rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
	}
	else{
        printf("pcf8563 error\n");
    }
    return 0;
}

按正点原子教的编译成PCF8563App 放到 /lib/modules/4.1.15下

测试

/lib/modules/4.1.15+ # depmod
random: nonblocking pool is initialized
/lib/modules/4.1.15+ # modprobe rtc-pcf8563.ko 
rtc-pcf8563 0-0051: chip found, driver version 0.4.3
rtc rtc1: invalid alarm value: 1970-1-10 28:0:0
rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc1

出现这段话就是成功了。
然后要先将系统时间写进硬件RTC,hwclock -f /dev/rtc1 -w
就可以直接读取了

/lib/modules/4.1.15+ # ./PCF8563App /dev/rtc1
ret:0
Time: 2022-11-22 12:15:40
/lib/modules/4.1.15+ # 

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

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

相关文章

VMware Workstation虚拟机网络相关配置

1、网络配置 1.1、方式一&#xff1a;配置文件 配置文件&#xff1a;网络参数之IP地址与子网掩码、网关地址、DNS 1.1.1、删除旧网卡配置文件 rm -rf /etc/sysconfig/network-scripts/ifcfg-* 1.1.2、grub内核引导程序&#xff0c;定义网卡重新命名规则 vim /etc/default/…

若依vue ruoyi-vue ant design版本使用

若依vue默认是使用element ui的&#xff0c;但是现在大部分项目都用ant design&#xff0c;ant design的组件也比element多&#xff0c;所以最近有想更改成ant design。网上搜了一下&#xff0c;已经有现成的了。 RuoYi-Antdv https://gitee.com/fuzui/RuoYi-Antdv RuoYi-Ant…

【scala】第二章——Scala 变量和数据类型

文章目录1 注释2 变量和常量&#xff08;重点&#xff09;3 标识符的命名规范4 字符串输出5 键盘输入6 数据类型&#xff08;重点&#xff09;7 整数类型&#xff08;Byte、Short、Int、Long&#xff09;8 浮点类型&#xff08;Float、Double&#xff09;9 字符类型&#xff08…

1秒钟搞懂tee和vim文件的使用命令(超级详细)

1秒钟搞懂tee和vim文件的使用命令&#xff08;超级详细&#xff09;一&#xff0c;tee的具体使用1&#xff0c;tee用来显示屏幕并且保存在文件中2&#xff0c;&#xff08;|&#xff09;管道符用来覆盖上一文件内容3&#xff0c;-a用来追加文件内容二&#xff0c;vim的命令模式…

[附源码]计算机毕业设计JAVA教室用电控制系统

[附源码]计算机毕业设计JAVA教室用电控制系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

如何把图片文字转换成文字?图片转文字方法推荐

我们在上课的时候&#xff0c;常常会跟不上老师的板书&#xff0c;这时候我们就会对一些来不及记录的板书&#xff0c;拍成图片保存下来&#xff0c;等到课后再进行整理。可是当图片积累的过多的时候&#xff0c;再一张一张的进行抄写&#xff0c;就会很浪费时间和精力了。但其…

诚邀莅临 | 天奥智能参展第86届中国国际医疗器械博览会

11月23-26日&#xff0c;第86届中国国际医疗器械博览会&#xff08;CMEF&#xff09;在深圳国际会展中心&#xff08;宝安新馆&#xff09;隆重举办。本届大会以“创新科技、智领未来”为主题&#xff0c;吸引了超过4000家国内外医疗器械、医用耗材、医疗机器人等企业参会。 南…

机器学习参数|数学建模|自相关性

目录 1.定义和影响 1.1自相关性产生的原因 1.2自相关的后果 2.减小影响方法 2.1如何判断数据存在自相关性 a.用相关计量软件 b.Durbin-Watson Statistics(德宾-瓦特逊检验) c.Q-Statistics 以(box-pierce)- Eviews(7th version第七版本)为例子 2.2如何减弱模型的自相关…

pytorch使用GPU加速--windows11,GTX1650Super

使用的都是anaconda创建的环境 1.软件准备 下载cuda 查看自己的显卡驱动–进入NVIDIA的控制面板 然后根据显卡驱动下载对映的cuda 查看的网址 下载cuda的网址 下载cuDNN NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。 cudnn下载网址 这个下…

使用CAPL 内置函数 memcpy 和memcmp 处理数组的若干问题

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

树状数组学习

树状数组简介 树状数组&#xff0c;用于维护和查询前缀和&#xff0c;与线段树功能类似。树状数组代码短&#xff0c;常数和空间小&#xff0c;时间复杂度小&#xff0c;所以这也是一个十分优秀的算法。 设a[i]a[i]a[i]为原数组上的点&#xff0c;s[i]s[i]s[i]为树状数组中各点…

WordPress管理仪表板:在15分钟内成为WordPress专家

WordPress管理仪表板是内容管理系统 (CMS)的核心和灵魂。在这里&#xff0c;您可以监督网站的各个方面&#xff0c;从配置基本设置到发布内容、安装插件和主题等等。如果您不熟悉 WordPress 管理仪表板&#xff0c;您将很难管理网站。 了解如何使用仪表板比您想象的要容易。所有…

PixiJs学前篇(三):Canvas基础【下篇】

前言 在上一篇文章 PixiJs学前篇&#xff08;二&#xff09;&#xff1a;Canvas基础【中篇】 中我们了解了Canvas的基本绘制形状&#xff0c;接下来我们看一下如何在 Canvas 中绘制文本。 绘制文本 文本的绘制也是 Canvas 中也是比较常见的&#xff0c;在 Canvas 的绘制中&a…

STC51单片机36——51单片机简单分两路控制步进电机

按键控制步进电机正反转一定设置的角度&#xff0c;比如一圈360度&#xff0c;按一次30度&#xff0c;一起12档。分两路控制&#xff0c;4个加减按键&#xff0c;一个按键控制复位&#xff0c;每路控制输出tb6600驱动器驱动两个42电机同步。同时数码管显示出来每次按键加减后的…

FastDFS(分布式文件管理系统)

一、简介 解决了大容量的文件存储和高并发访问的问题&#xff0c;文件存取时实现了负载均衡。 FastDFS服务端只有两个角色&#xff0c;tracker server和storage server。 所有同角色服务器集群节点都是平等的&#xff0c;不存在主从关系&#xff08;Master-Slave&#xff09;…

golang爬虫练习-抓取行业信息分类

抓取框架介绍 gathertool gathertool是golang脚本化开发库&#xff0c;目的是提高对应场景程序开发的效率&#xff1b;轻量级爬虫库&#xff0c;接口测试&压力测试库&#xff0c;DB操作库等。 地址&#xff1a; https://github.com/mangenotwork/gathertool 下载: go get …

醛肽:Gly-Phe-Gly-aldehyde、102579-48-6

可逆组织蛋白酶 B 抑制剂 GFG-醛缩氨基脲已用于通过亲和层析从日本血吸虫中纯化组织蛋白酶 B 样蛋白酶 Sj31&#xff0c;并用于从疟原虫物种中分离恶性疟原虫。编号: 200138 中文名称: 三肽Gly-Phe-Gly-aldehyde CAS号: 102579-48-6 单字母: H2N-GFG-CHO 三字母: H2N-Gly-Phe-G…

Docker网络管理

目录 一、Docker 网络实现原理 二、Docker 的网络模式 1.四种网络模式 2.各网络模式详解 &#xff08;1&#xff09;Host模式 &#xff08;2&#xff09;Container模式 &#xff08;3&#xff09;None模式 &#xff08;4&#xff09;Bridge模式 3.指定容器网络…

常用的实体类转换方式 - BeanUtil | MapStruct

0. 相关依赖&#xff1a;1. 实体类信息&#xff1a;2. BeanUtil方法转换&#xff1a;2.1. 实体类转实体类&#xff08;copyProperties&#xff09;&#xff1a;2.2. 实体类集合转实体类集合&#xff08;copyToList&#xff09;&#xff1a;2.3. 实体类集合转Map&#xff08;bea…

java泛型类型解释

文章目录1、Class<T>使用写法2、常见字母含义举例说明3、object.getClass()和Object.class的区别举例说明1、Class 使用写法 mongoTemplate.findAll(Customer.class); 2、常见字母含义 E - Element (在集合中使用&#xff0c;因为集合中存放的是元素) T - Type&#x…