物联网ARM开发-STM32之RTC浅谈

RTC

一.RTC简单介绍

  RTC好比我们用来记录时间的一个钟表,他里面有年月日,还可以记录星期,小时,分钟等。是Real Time Clock的缩写,译为实时时钟,本质上是一个独立的定时器。

1. 1 与通用定时器的区别

  1. 可以在后备电源下工作,主电源掉电以后,单片机内部电源还会继续给RTC提供电源,保持其正常运行。
  2. 计数器符合年、月、日、星期、时、分、秒、等日期的时间技术规则,例如它可以区分是不是闰年还有大小月份。
  3. 不受复位信号影响,例如主电源上电过程会有一个复位效果,但是RTC不会受其影响。
  4. 低功耗计时,通常电流是uA。最典型的就是我们电脑主板内部的RTC。

1.2 常见的独立RTC芯片

  1. PCF8563,NXP公司的,I2C接口
  2. DS1302,MAX公司的,两线串行接口
  3. DS3231, MAX公司的,I2C接口,内置高精度时钟信号源,常温范围内5ppm(百万分之一)精度,普通柱状晶体是20ppm,且容易受温度影响。

1.3 RTC在实际项目中的应用

  1. 为用户提供时间,日期
  2. 实现时间记录功能,比如安全监控项目
  3. 实现按时间要求的相关任务,比如按约定时间控制相关水闸等
  4. 实现周期性的唤醒,执行相关的周期性任务

2. STM32F407上的RTC

2.1 主要特点

  先列一张RTC的部分结构框图,再结合框图进行分析。
在这里插入图片描述

图1 RTC的部分结构框图

  1. 是一个独立的BCD(二进制转换成十进制)定时器,例如今天是30号,读出来的数据是0x30,但是转成16进制就是0x1E。
  2. 此外还可以提供亚秒,系统自动将月份补偿为28、29(闰年)、30和31天
  3. 软件可编程夏令时补偿(高纬度地方,夏天天亮的早,人为的加快一个小时)
  4. 两个具有中断功能的可编程闹钟,可以通过任意日历字段的组合驱动闹钟
  5. 自动唤醒单元,可周期性地生成标志以触发自动唤醒中断
  6. 参考时钟检测:可使用更加精确的第二时钟源来提高精度
  7. 利用亚秒级移位特性与外部时钟实现精确同步
  8. 用于事件保存的时间戳功能,指的是单片机上的一个IO口检测到电平的变化的时候,会将这个变化时间记录
  9. 入侵检测:2个带可配置过滤器和内部上拉的入侵事件,出于对产品数据的保密,敏感数据可以保存在ram里面,由备用电源供电,给这个产品放一个壳,一旦拆开这个壳,就会被检测到,然后自动清除ram数据。
    10.可屏蔽中断或事件:闹钟A、闹钟B、唤醒中断、时间戳、入侵检测
  10. 数字校准电路:粗调(5ppm),细调(0.95ppm)
  11. 20个备份寄存器(80字节)。
  12. 复用功能输出:1.512Hz或1Hz时钟输出(LSE频率为32.768KHz),2. RTC_ALARM(闹钟A、闹钟B或唤醒)
  13. 复用功能输入:1.RTC_TS:时间戳事件检测,2.RTC_TAMP1:TAMPER1事件检测,3.RTC_TAMP2:TAMPER2事件检测,4.RTC_REFIN:参考时钟源输入

2.2后备电源

   纽扣电池经过一个二极管,防止主电源给电池充电,同时还要经过一个二极管,防止电池给整个单片机供电。示意图如下:
在这里插入图片描述

图2 RTC后备电源示意图

2.3 时钟和预分频器

  看图可以发现有两个额外的脚PC14,PC15,这两个脚如果先用我们的RTC,最好接一个片外的石英晶体(32.768KHz),为什么是32.768,因为它是2的15次方,通过分配可以精确到1Hz。,在看,到RTC有三条路,一条是32KHz,不好的地方是误差大。第二个是正道,还一个是歪道(系统时钟分配过来的)。示意图如下:
在这里插入图片描述

图3 时钟示意图
在这里插入图片描述
图4 补充解释图

2.4 实时时钟和日历

  1. RTC日历时间和日期寄存器可通过与PCLK1(APB1时钟)同步的影子寄存器来访问,APB时钟频率必须至少为RTC时钟频率的7倍
  2. 时间和日期寄存器可以直接访问
  3. RTC_SSR对应与亚秒
  4. RTC_TR对应于时间
  5. RTC_DR对应于日期
  6. 每隔两个RTCCLK周期,便将当前日历值复制到影子寄存器里面去

2.5可编程闹钟

  1. 可通过将RTC_CR寄存器中的ALRAE和ALRBE位置1来使能可编程闹钟功能
  2. 如果日历亚秒、秒、分钟、小时、日期或日分别与闹钟寄存器中编程的值相匹配,则ALRAF,ALRBF标志就会变成1
  3. 闹钟A和闹钟B在使能后,可连接到RTC_ALARM输出,且输出极性可设
    差不多就到这里来了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java空指针异常报错java.lang.NullPointerException介绍与解决

java.lang.NullPointerException 出现的几种原因: 字符串变量未初始化接口类型的对象没有用具体的类初始化,比如: Map map // 会报错 Map map new Map(); //则不会报错了当一个对象的值为空时,你没有判断为空的情况。字符串与文…

数据结构|对称矩阵压缩存储的下标公式推导|如何求对称矩阵压缩存储对应的一维数组下标

因为考试的时候可能会给很多情况的变式题,所以要会推导而不是背公式,情况变了,公式就不管用了。 行优先、只存储主对角线下三角区: 矩阵下标 ai,j(i>j)->一维数组下标 B[k] 按照行优先的原则,确定 ai,j 是一维数…

Go 中如何检查文件是否存在?可能产生竞态条件?

嗨,大家好!本文是系列文章 Go 技巧第十三篇,系列文章查看:Go 语言技巧。 Go 中如何检查文件是否存在呢? 如果你用的是 Python,可通过标准库中 os.path.exists 函数实现。遗憾的是,Go 标准库没有…

Python:批量url链接保存为PDF

我的数据是先把url链接获取到存入excel中,后续对excel做的处理,各位也可以直接在程序中做处理,下面就是针对excel中的链接做批量处理 excel内容格式如下(涉及具体数据做了隐藏) 标题文件链接文件日期网页标题1http://…

蓝桥杯Web应用开发-浮动与定位

浮动与定位 浮动布局比较灵活,不易控制,而定位可以控制元素的过分灵活性,给元素一个具体的空间和精确的位置。 浮动 我们使用 float 属性指定元素沿其容器的左侧或右侧放置,浮动布局常见取值如下: • left&#xff0…

2024美赛数学建模C题完整论文教学(含十几个处理后数据表格及python代码)

大家好呀,从发布赛题一直到现在,总算完成了数学建模美赛本次C题目Momentum in Tennis完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C论文共49页&…

Java设计模式-责任链模式

责任链模式 一、概述二、结构三、案例实现四、优缺点五、源码解析 一、概述 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门…

spring boot学习第十篇:elastic search必须使用用户名密码授权后才能访问、在java代码中操作索引

前提条件:安装好了elastic search服务,参考:elastic search入门_ubuntu elasticsearch 密码-CSDN博客 1、配置elastic search必须使用用户名密码授权才能访问 1.1开启x-pack验证 修改config目录下面的elasticsearch.yml文件,添…

如何使用 sqlalchemy declarative base 多层次继承

在SQLAlchemy中,通过declarative_base创建的基类可以通过多层次的继承建立继承关系。这允许你在数据库中创建具有继承结构的表。在我使用某数据库做中转的时候,经常会遇到各种各样的问题,例如下面的问题,通过记录并附上完美的解决…

C语言—自定义函数的传值调用和传址调用

不多废话,先说函数定义,分为两种: 库函数:C语言内部提供的函数;自定义函数:自己写的函数。 本文主要讲自定义函数,也就是如何自己实现函数的编写。 自定义函数,包括:函…

【Qt学习笔记】(三)常用控件(持续更新)

Qt 常用控件 1 控件概述2 QWidget 控件核心属性2.1 enabled2.2 geometry2.3 window frame 的影响2.4 windowTitle2.5 window Icon2.6 windowOpacity2.7 cursor2.8 font2.9 toolTip2.10 focusPolicy2.11 stylesheet 1 控件概述 Widget是Qt中的核心概念英文原义是"小部件&q…

算法学习——LeetCode力扣数组篇

算法学习——LeetCode力扣数组篇 704. 二分查找 704. 二分查找 - 力扣(LeetCode) 描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值…

C语言-4

排序算法简介 /*学习内容:冒泡排序(最基本的排序方法)选择排序(冒泡的优化)插入排序(在合适的位置插入合适的数据) *//*排序分类:1.内部排序待需要进行排序的数据全部存放到内存中&…

wins 安装 tensorflow keras

1.python版本 python版本3.12,安装tensorflow会报错: 经过多次实验,使用的python版本是3.9.0 2.安装tensorflow a. pip install --trusted-host http://mirrors.aliyun.com/pypi/simple/ tensorflow2.6.0 速度有点慢,半个多小…

前端实现搜索框筛选

效果图 页面解析 是一个input输入框和一个button按钮组成输入框查询 内容是一个折叠面板 html代码 <div class"left-content-box"><div class"colum-search"><el-input v-model"columKey" clearable placeholder"请输入关…

SpringBoot+Druid并开启监控页面

介绍 Druid 是一个开源的数据库连接池项目&#xff0c;由阿里巴巴集团开发并贡献给开源社区。它在Java领域中以其高性能、强大功能和易用性著称&#xff0c;是Java应用中广泛使用的数据库连接池组件之一。 Druid 的主要特点包括&#xff1a;   高性能与低延迟&#xff1a; Dr…

CRM的线索管理功能是什么?如何帮助企业实现业绩增长?

随着“以客户为中心”观念的逐渐普及&#xff0c;销售团队的客户比过去更复杂&#xff0c;交易周期更久&#xff0c;竞争也更激烈。假如没有明确的销售计划&#xff0c;团队可能陷入混乱&#xff0c;最后导致客户&公司之间的负面结果。在这种情况下&#xff0c;人工智能驱动…

小白Linux学习笔记--进程管理

进程管理 文章目录 进程管理进程pstree 命令静态查看进程信息pspgrep 动态查看进程信息top 终端提示符不显示停止进程killallpkillxkill进程优先级指定优先级调整优先级 前后台作业进程管理课后作业 进程 进程&#xff1a; 运行在内存中程序实例 , 进程是程序运行的一种状态 , …

EasyExcel分页上传数据

EasyExcel分页上传数据 一、实例 controller上传入口 PostMapping("/upload")ResponseBodyLog(title "导入工单", businessType BusinessType.IMPORT)public AjaxResult uploadFile(HttpServletRequest request, MultipartFile files) throws Exceptio…

【cmu15445c++入门】(6)c++的迭代器

一、迭代器 C 迭代器是指向容器内元素的对象。它们可用于循环访问该容器的对象。我们知道迭代器的一个示例是指针。指针可用于循环访问 C 样式数组. 二、代码 自己实现一个迭代器 // C iterators are objects that point to an element inside a container. // They can be…