ds1302程序详解_ds1302z与ds1302区别

ds1302程序详解_ds1302z与ds1302区别树莓派学习笔记-基于DS1302实时时钟实验前言:虽然树莓派已经具备了通过连接网络自动校对时间的功能,但考虑到我们的应用需求又或是存在意外情况,我们的树莓派始终具有脱机工作的可能性,而一旦进行脱机工作,系统时间的精确度便无法得以保证,因为当电源关闭时,整个系统都是处于关闭状态的,其中也包括系统

树莓派学习笔记-基于DS1302实时时钟实验   前言:虽然树莓派已经具备了通过连接网络自动校对时间的功能,但考虑到我们的应用需求又或是存在意外情况,我们的树莓派始终具有脱机工作的可能性,而一旦进行脱机工作,系统时间的精确度便无法得以保证,因为当电源关闭时,整个系统都是处于关闭状态的,其中也包括系统时间的运行。众所周知,一般的时钟模块都具有备用电池,可以保证在系统关闭的情况下持续走时。因此,为保证树莓派系统时间的一般准确性,我们可以为其连接一个时钟模块,以确保系统时间的持续运作。   注:本实验主要通过使用树莓派系统下的wiringPi库在C语言环境下操作完成。本实验所使用树莓派系统是版本日期2021-05-07版Raspberry Pi OS(32bit)本实验主要以DS1302时钟模块为例,在树莓派3A+(其他型号同理)平台上进行实时时钟实验。本实验在图形界面下进行操作,但对于命令行环境下的读者也具有一定的参考意义,绝大部分操作基本可以使用命令方式进行替换。   一、认识DS1302   
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别DS1302典型封装   1.DS1302简介   [1]DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。   二、配置硬件环境   [2]WiringPi是一个用C语言编写的树莓派(RaspberryPi)软件包,可用于树莓派GPIO引脚控制、串口通信、SPI通信及I2C通信等功能,非常适合熟悉C/C++的人员在树莓派上进行软件开发。WiringPi的作者是Gordon Henderson,其官方网址为http://wiringpi.com。WiringPi遵循GNU GPLv3公约,任何人都可以免费使用该软件包。   1、WiringPi的安装与更新WiringPi预装(Pre-installed)在标准的树莓派操作系统Raspbin中。   
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别使用该命令查看系统中是否安装有wiringPi库,并显示出其版本号、作者及当前树莓派的一些信息   2、WiringPi的引脚定义   WiringPi对树莓派物的理引脚进行了封装,拥有其独特的引脚定义,可以使用如下命令查看:   
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别读者需要注意的是,树莓派的物理引脚、BCM引脚和WiringPi引脚属于三种不同的定义,切勿混淆。   在明白了以上细节后,我们便可以进行时钟模块与树莓派的连接。   一般的DS1302模块具有以下5个引脚,即:VCC、GND、CLK、DTA、RST,我们按照如下方式连接,
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别   DS1302模块—树莓派   VCC———–3.3V   GND———-0V   CLK———–SCLK   DTA———–SDA0   RST———–CE0   需注意:一般的DS1302时钟模块DTA引脚或许是没有上拉电阻的,可能会出现时钟模块工作不稳定的现象,后续步骤可能会报错,在这里我们为了后续的实验顺利进行,需要在DTA引脚上添加一个10K的上拉电阻的(连接到VCC),具体情况取决于实验使用的时钟模块硬件电路设计,非必须。   三、配置软件程序   [3]这里我们使用Github上Darran Zhang的代码作为测试。   主要文件有二,其一是C程序ds1302.c,另一个是可执行脚本程序ds1302.sh,由于代码较长在此就不贴出。   将ds1302.c与ds1302.sh两个文件置于同一目录下,在该目录下打开终端,输入命令赋予脚本文件执行权限。   双击打开ds1302.sh文件进行编辑,找到下图位置,确认引脚定义是正确的,。
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别注意:引脚号采用前文中我们提到的wiringPi的定义方式,切勿混淆   保存更改并退出后我们在该文件目录下打开终端执行https://zhuanlan.zhihu.com/p/ds1302.sh rtest进行测试,若观察到屏幕上显示如下信息则说明通讯成功,
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别   否则,则需要返回到之前的步骤检查错误,检查接线是否正确等问题,如果以上均正确,那么很有可能是由于第三节第2小节中我们提及的DTA引脚未连接10K上拉电阻所引起。   在上一步成功后,可双击在终端中执行ds1302.sh程序运行,可以观察到屏幕上自动开始打印来自ds1302的时间信息,但我们也发现了一个问题,那就是此时的时间为ds1302内部的时间,是未经过校准的时间,往往是错误的时间,可按下CTRL+C停止当前运行,
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别   因此接下来我们要在终端中继续执行https://zhuanlan.zhihu.com/p/ds1302.sh sdsc,该命令作用是将linux系统时间赋值给ds1302,因此在执行此步骤前请确保你的树莓派系统时间是正确的。(联网进行自动同步或手动设置为正确时间)
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别   我们再次在终端中运行ds1302.sh脚本程序,此时我们发现,时间已经变为正确的了,
ds1302程序详解_ds1302z与ds1302区别
ds1302程序详解_ds1302z与ds1302区别   以上基本就是本次实验的全部内容,感兴趣的小伙伴可以进一步进行测试,例如我们可以将树莓派的网络连接断开(又或是关机断电断网一段时间),使统时间更改为一个错误时间,然后在程序目录下打开终端执行https://zhuanlan.zhihu.com/p/ds1302.sh slc命令,该命令的作用是将ds1302的时间信息赋值给我们的系统,并以此来检验ds1302是否正常运行,并且解决我们在前言中提到的问题。   附:关于本文使用的ds1302.sh脚本程序的几个常用指令   四、后记   如何应用今天的实验结果做一些更有意义的事情,比如说:创建一个脚本程序在每次开机的时候自启动,当检测到网络未连接的时候,对系统时间进行自动的校正。   (另:访问github有困难的同学可以私信联系我取得本实验中所用到的程序文件,另外如若本文中存在错误或不当言论,还请各位老师直言不讳,后记中提到的脚本有兴趣的朋友可以去尝试一下,十分期待与你们的交流。)

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/72811.html

(0)
上一篇 2024年 8月 6日
下一篇 2024年 8月 6日

相关推荐

关注微信