物联网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输出,且输出极性可设
    差不多就到这里来了。

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

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

相关文章

EEPROM之MB85RC64介绍

一、芯片介绍 工作频率 : 400 kHz (最大) 即,当主机和一个EEPROM通信时,从机地址为1010 000WR,如果主机和多个EEPROM通信时,从机地址为1010 A2 A1 A0 WR 二、时序分析 (1)从机地址…

适用于 Windows 和 Mac 的 16 款最佳数据恢复软件

数据恢复软件是找回因硬盘损坏、病毒攻击或意外删除数据等原因而在设备上丢失的数据的最佳方法。在数字世界中,丢失数据是一件非常糟糕的事情,这会让许多人的情况变得更糟。使用最佳数据恢复软件可以减轻您必须努力恢复丢失数据的压力。它将带回您的大部…

C# OpenCvSharp DNN 部署yolov4目标检测

目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Windows.Forms;namespace OpenCvSharp_DNN_Demo {publ…

Linux环境下配置mysql主从复制

主从配置需要注意的地方 1、主DB server和从DB server数据库的版本一致 2、主DB server和从DB server数据库数据一致[这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录] 3、主DB server开启二进制日志,主DB server和从DB serve…

二分查找------蓝桥杯

题目描述&#xff1a; 请实现无重复数字的升序数组的二分查找 给定一个元素升序的、无重复数字的整型数组 nums 和一个目标值 target&#xff0c;写一个函数搜索 nums 中的target&#xff0c;如果目标值存在返回下标 (下标从0 开始)&#xff0c;否则返回-1 数据范围: 0 < l…

分布式文件存储系统minio

参考Linux搭建免费开源对象存储 wget https://dl.minio.io/server/minio/release/linux-amd64/minio yum install -y wget yum install -y wget wget https://dl.minio.io/server/minio/release/linux-amd64/minio chmod x minio sudo mv minio /usr/local/bin/ minio --vers…

外汇天眼:外汇天眼:注意,19个外汇平台因诈骗被监管拉黑!

近年来&#xff0c;全球金融市场出现了众多非法投资平台&#xff0c;这些平台利用虚假宣传和高回报承诺欺骗投资者&#xff0c;造成了严重的经济损失。为了保护投资者利益&#xff0c;监管机构也在加大力度打击这些非法平台。就在最近&#xff0c;又有19个外汇交易平台因涉嫌诈…

【C语言 - 力扣 - 反转链表】

反转链表题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 题解1-迭代 假设链表为 1→2→3→∅&#xff0c;我们想要把它改成 ∅←1←2←3。 在遍历链表时&#xff0c;将当前节点的 next 指针改为指向前一个节点。由于节点没…

计算机网络-差错控制(纠错编码 海明码 纠错方法)

文章目录 纠错编码-海明码海明距离1.确定校验码位数r2.确定校验码和数据的位置3.求出校验码的值4.检错并纠错纠错方法1纠错方法2 小结 纠错编码-海明码 奇偶校验码&#xff1a;只能发现错误不能找到错误位置和纠正错误 海明距离 如果找到码距为1&#xff0c;那肯定为1了&…

idea运行程序报错 java 程序包org.junit不存在

在 IntelliJ IDEA 中运行程序时遇到错误提示&#xff1a;“java: 程序包org.junit不存在”&#xff0c;针对这一问题&#xff0c;我们可以考虑以下三步来解决&#xff1a; 第一步&#xff1a;检查JUnit依赖 尽管现代项目创建时通常会默认引入JUnit依赖&#xff0c;但仍需检查…

双向链表的插入、删除、按位置增删改查、栈和队列区别、什么是内存泄漏

2024年2月4日 1.请编程实现双向链表的头插&#xff0c;头删、尾插、尾删 头文件&#xff1a; #ifndef __HEAD_H__ #define __HEAD_H__ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef int datatype; enum{FALSE-1,SUCCSE}; typedef str…

2、ChatGPT 在数据科学中的应用

ChatGPT 在数据科学中的应用 ChatGPT 可以成为数据科学家的绝佳工具。以下是我所了解到的关于它擅长的地方和不那么擅长的地方。 我从使用 ChatGPT 中学到了一个教训。它在数据科学中非常有帮助,但你必须仔细检查它输出的所有内容。它非常适合某些任务,并且可以非常快速准确…

Visual Studio 20XX控制台程序鼠标点击阻塞问题

文章目录 方法一方法二 在Visual Studio 20xx编写的控制台程序中&#xff0c;当鼠标点击控制台时&#xff0c;会阻塞控制台程序运行&#xff0c;不按回车无法继续运行。 方法一 右击控制台标题栏&#xff0c;选择属性&#xff0c;去掉快速编辑模式(Q)的勾选&#xff0c;如&…

进程状态、排队

进程状态 1. 进程排队2. 进程各个状态3. 查看一个进程的状态4. linux内核描述进程状态5. 孤儿进程 1. 进程排队 进程为什么要排队呢&#xff1f;答案就是资源不够。需要等待某个软硬件资源&#xff0c;就像我们常用的scanf函数就是等待键盘资源。 之前的文章我们有个结论&#…

java面试题:MySQL中的各种JOIN的区别

表关联是频率非常高的一种数据库操作&#xff0c;在MySQL中&#xff0c;这种JOIN操作有很多类型&#xff0c;包括内联接、左外连接、右外连接等等&#xff0c;而每种连接的含义都不一样&#xff0c;如果死记硬背&#xff0c;不仅很难记住&#xff0c;而且也容易搞混淆&#xff…

pytorch 利用Tensorboar记录训练过程loss变化

文章目录 1. LossHistory日志类定义2. LossHistory类的使用2.1 实例化LossHistory2.2 记录每个epoch的loss2.3 训练结束close掉SummaryWriter 3. 利用Tensorboard 可视化3.1 显示可视化效果 参考 利用Tensorboard记录训练过程中每个epoch的训练loss以及验证loss&#xff0c;便于…

前端工程化之:webpack3-5(css module)

目录 一、css module 1.思路 2.实现原理 3.如何应用样式 4.其他操作 &#xff08;1&#xff09;全局类名 &#xff08;2&#xff09;如何控制最终的类名 5.其他注意事项 一、css module 通过命名规范来限制类名太过死板&#xff0c;而 css in js 虽然足够灵活&…

京东首页移动端-web实战

设置视口标签以及引入初始化样式 <link rel"stylesheet" href"./css/normalize.css"><link rel"stylesheet" href"./css/index.css"> body常用初始化样式 body {width: 100%;min-width: 320px;max-width: 640px;margin:…

mysql 多数据源

依赖 <dependencies><!--mysql连接--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--多数据源--><dependency><g…

VLM 系列——Llava1.6——论文解读

一、概述 1、是什么 Llava1.6 是llava1.5 的升级暂时还没有论文等&#xff0c;是一个多模态视觉-文本大语言模型&#xff0c;可以完成&#xff1a;图像描述、视觉问答、根据图片写代码&#xff08;HTML、JS、CSS&#xff09;&#xff0c;潜在可以完成单个目标的视觉定位、名画…