当前位置: 首页 > news >正文

STM32实现毫秒级时间同步

提起“时间同步”这个概念,大家可能很陌生。一时间搞不清楚是什么意思。

我理解“时间同步”可以解决多个传感器采集数据不同时的问题,让多个传感器同时采集数据。

打个比方。两个人走路,都是100毫秒走一步(频率相同是前提,一般传感器都支持调整频率,容易调到同频,但不容易同相位,因为没法同时启动)。就是两个人起点不同,就走不到一起去。

为了使他们对齐,需要“时间同步”这个概念。

怎么样才能使他们走齐呢?需要一个人发送一个信号,比如说:“停下来”。当另一个人听到这个信号时,他倒退一段距离,和这个人对齐。然后就可以一起走了。

转到STM32上,一个STM32(A)需要给另一个STM32(B)上发送信号,另一个接收到后,开始执行采集命令。而A需要延时一段时间执行采集命令,才能和B同时采集,即时间同步。

那么怎么知道A要延时多久执行采集命令呢?可以用示波器硬件测量,A发B收之间的时间间隔。也可以A发B收,然后B发A收,得到的时间间隔除以2,得到A发B收的时间间隔。(这是软件测量法)。

STM32需要使能RTC时钟,用Hal_Get_Rtc_Time函数,STM32的时间戳。但是弊端是无法精确到毫秒,只能达到秒级。因为RTC时钟亚秒计数器无法设置给另一个STM32(即HAL_Set_Rtc_Time只能设置时、分、秒,无法设置亚秒寄存器,这点可以试一下)。

所以STM32要实现小于一毫秒的时间同步,需要再开一个微秒定时器,里面的数值作为微秒时间值,和RTC时钟配合起来计时。在RTC_Init的时候,维护一个uint16_t的变量Micros,然后在另一个函数里extern声明一下,再调用。STM32启动微秒定时器中断,每隔一微秒加一。(实际测试起来,微秒中断太可怕了,达不到这个性能,可以这么写,但是执行不了,因为速度太快,中断函数里的程序执行不过来,所以我采用的是100微秒的中断,在里面加100,维护微秒值Micros)。

这样就出现了A和B的两个RTC时钟,都是100微秒中断计时一次。同频但不同相。

为了实现同相,需要发信号。比如Stm32外接一个Wifi模块,蓝牙模块,或Rola模块。总之是一个可以发送接收的模块。

流程:A发送RTC时间戳,延时一段时间(发送到接收的时间),触发采集。

B接收到时间戳,立即触发采集。这样两者就是同时触发的啦。

A和B时间同步。

相关文章:

STM32实现毫秒级时间同步

提起“时间同步”这个概念,大家可能很陌生。一时间搞不清楚是什么意思。 我理解“时间同步”可以解决多个传感器采集数据不同时的问题,让多个传感器同时采集数据。 打个比方。两个人走路,都是100毫秒走一步(频率相同是前提&…...

瑞吉外卖之com.fasterxml.jackson.dataformat.cbor.CBORFactor相关报错

1.报错:Error creating bean with name routerFunctionMapping defined in class path resource [com/itheima/reggie/config/WebMvcConfig.class]: Failed to instantiate [org.springframework.web.servlet.function.support.RouterFunctionMapping]: Factory met…...

CSS - grid制作表格

1. grid-template-columns:网格布局中的列的数量,也可以设置列的宽度 .grid-container {display: grid;grid-template-columns: 80px 200px auto 40px; }.grid-container {display: grid;grid-template-columns: auto auto auto auto;//表示所有列的宽度…...

【pip】 的换源(临时换源和永久换源)

【pip】 的换源(临时换源和永久换源) 一、临时换源二、永久换源三、Linux换源四、Windows换源 一、临时换源 临时换源只需要在pip安装包时,加上一个-i参数后接源的url即可: 临时换源: 清华源 pip3 install markdown…...

Kaggle 数据集dogs-vs-cats的错误

如果你想用kaggle数据集dogs-vs-cats做深度学习数据,可能会遇到数据bug,大概类似于下面的错误: UnidentifiedImageError: cannot identify image file 其原因不是你的程序有问题,而是数据集本身还有bug: cats/666.jpgdogs/11702.jpg 预览一下…...

【网络原理】网络地址转换----NAT技术详解

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 我们在 IP协议 一文中介绍过,由于IPv4协议中 IP地址只有32位,导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备&#x…...

React怎么创建虚拟dom和挂载到页面

1、🍟你可以直接下载本节配套的资源代码,然后导入vscode看效果,也可以跟着教程一点一点敲,都是没问题的。 2、🤔怎么运行本节代码? 很简单,随便找个浏览器打开index.html即可。💕 代…...

kafka-console-ui的简介及安装使用

kafka-console-ui的简介及安装使用 一、kafka-console-ui的简介二、安装kafka-console-ui2.1 源码安装2.2 docker安装 三、kafka-console-ui功能使用3.1、功能特性3.2、 功能介绍3.2.1 集群3.2.2 topic3.2.3 消费组3.2.4 Acl3.2.5 运维 一、kafka-console-ui的简介 kafka-cons…...

git 的分支管理详解

Git 的分支管理是其强大功能之一,允许开发者在同一代码库中并行开发多个特性或修复 bug,而不干扰主分支的代码。下面是对 Git 分支管理的详解: 1. 查看分支 查看所有分支 git branch # 查看本地分支 git branch -r # 查看远程分支 git br…...

w003基于Springboot的图书个性化推荐系统的设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

医院信息化与智能化系统(6)

医院信息化与智能化系统(6) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的…...

前端学习---(6)js基础--4

Promise Promise 是异步编程的一种新的解决方案和规范。 Promise优点: 1、可以很好地解决ES5中的回调地狱的问题(避免了层层嵌套的回调函数)。 2、统一规范、语法简洁、可读性和和可维护性强。 3、Promise 对象提供了简洁的 API,使得管理异步…...

241026-RHEL如何以root身份卸载Docker

在 RHEL 8.8 中,以 root 身份卸载 Docker 可以通过以下步骤完成: 停止 Docker 服务(如果已启动): sudo systemctl stop docker删除 Docker 包: 运行以下命令卸载 Docker 引擎及其依赖包(docker-…...

iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出

效果图 从iPhone复制文件夹到windows电脑 步骤windows 打开iTunes通过USB连接iPhone和电脑手机允许授权iTunes中点击手机图标,进入到点击左边“文件共享”,在右边随便选择一个App(随意...)写入U盘:拖动电脑的文件&am…...

jenkins ssh 免密报错Host key verification failed.

jenkins 发布项目,ssh连接远程服务器时报错:Host key verification failed. 解决: 原因是生成的sshkey不是用的jenkins用户,所以切换用户到:jenkins重新生成sshkey su jenkins ssh-keygen -t rsa ssh-copy-id -i ~/…...

智能科学与技术(一级学科)介绍

智能科学与技术:探索智能的边界与未来 智能科学与技术的起源与发展学科定位与内涵学科范围与研究方向培养目标相关学科 在当今这个信息爆炸的时代,人工智能(AI)已经成为科技创新的重要驱动力。随着技术的不断进步,智能…...

iOS调试真机出现的 “__llvm_profile_initialize“ 错误

一、错误形式&#xff1a; app启动就崩溃&#xff0c;如下&#xff1a; Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…...

Android SELinux——neverallow问题处理(十六)

上一篇我们介绍了通过添加允许策略处理问题,这里我们主要来看一些 neverallow 策略问题该怎么处理。 一、neverallow介绍 遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级…...

Vue 关于路由

关于路由 路由的模式与区别 路由的两种模式&#xff1a; hashhistory 区别&#xff1a; 表象不同 hash 模式中&#xff0c;在地址里以 /#/ 分隔&#xff1b;history 模式中&#xff0c;地址里以 / 分隔。关于找不到当前页面发送请求的问题 history 模式会给后端发送一次请…...

香港海洋投资启动创新海洋牧场,领航全球海洋经济

香港&#xff0c;这座国际大都市&#xff0c;以其独特的地理位置和深厚的海洋文化底蕴&#xff0c;再次站在了全球海洋经济发展的前沿。近日&#xff0c;香港海洋投资发展有限公司&#xff08;以下简称“香港海洋投资”&#xff09;在万众瞩目中&#xff0c;正式宣布启动其创新…...

Kleiber:简化多架构Docker镜像构建与发布的自动化工具

1. 项目概述与核心价值最近在整理自己的开发工具链时&#xff0c;又翻出了devgap/kleiber这个项目&#xff0c;它在我日常的容器化开发工作流中扮演了一个相当关键但又不那么起眼的角色。简单来说&#xff0c;Kleiber 是一个 Docker 镜像的构建和发布自动化工具&#xff0c;但它…...

基于RAG与代码专用嵌入模型构建本地智能代码库问答系统

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“smart-codebase”。光看名字&#xff0c;你可能觉得这又是一个关于代码智能化的工具&#xff0c;但仔细研究其设计和实现思路&#xff0c;你会发现它瞄准的是一个非常具体且高频的痛点&#xff1a;如…...

5分钟快速上手COLA架构:构建清晰分层的企业级应用完整指南

5分钟快速上手COLA架构&#xff1a;构建清晰分层的企业级应用完整指南 【免费下载链接】COLA &#x1f964; COLA: Clean Object-oriented & Layered Architecture 项目地址: https://gitcode.com/gh_mirrors/col/COLA COLA&#xff08;Clean Object-oriented &…...

Stardew Valley Mod开发:使用OpenClaw主题框架快速构建原生风格UI

1. 项目概述&#xff1a;一个为Stardew Valley Mod开发者量身打造的主题框架如果你是一位《星露谷物语》&#xff08;Stardew Valley&#xff09;的模组&#xff08;Mod&#xff09;开发者&#xff0c;或者正打算踏入这个充满创造力的社区&#xff0c;那么你很可能已经体会过&a…...

2026 最稳高薪副业 + 主业赛道,网络安全零基础系统学习大纲,实战项目 + 证书考取 + 求职面试一站式教程

网络空间安全建设刻不容缓&#xff0c;已成为国家安全建设的重中之重。 随着境内外敌对势力的大规模安全事件&#xff0c;《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全产业从小众产业逐步发展成为国家…...

多尺度地理加权回归(MGWR)终极指南:从入门到实战的完整教程

多尺度地理加权回归(MGWR)终极指南&#xff1a;从入门到实战的完整教程 【免费下载链接】mgwr Multiscale Geographically Weighted Regression (MGWR) 项目地址: https://gitcode.com/gh_mirrors/mg/mgwr 面对复杂多变的空间数据&#xff0c;传统的地理加权回归(GWR)常…...

【信息科学与工程学】计算机科学与自动化 第十篇 芯片设计04(5)

载流子统计与输运函数方程式详表 1. 载流子统计基础 (zailiu-1 ~ zailiu-100) 序号 名称 数学表达式/核心描述 参数说明 物理意义 应用场景 条件描述 zailiu-1 麦克斯韦-玻尔兹曼分布 f(E)=Ae−E/(kB​T)或 f(v)=(2πkB​Tm​)3/2e−mv2/(2kB​T) E: 能量, v: 速度,…...

达梦数据库主备集群手工搭建及主备切换演练

环境&#xff1a;DM8、Linux&#xff08;CentOS 7 &#xff09;&#xff0c;三台服务器。 本文记录从零搭一套"一主一备一监视" 式的主备集群&#xff0c;纯手工操作&#xff0c;不依赖图形化工具。 一、环境规划 1.1 IP规划 角色主机名业务IP心跳IP实例名主库&…...

强化学习在双摆控制中的应用与挑战

1. 双摆控制中的强化学习挑战双摆系统是控制理论中经典的欠驱动非线性系统&#xff0c;由两个通过关节连接的刚性杆组成&#xff0c;仅有一个关节可施加驱动力。这种系统表现出丰富的动力学特性&#xff0c;包括混沌行为和高度敏感性&#xff0c;使其成为测试控制算法的理想平台…...

Git Hooks与代码质量左移:self-review工具实战指南

1. 项目概述&#xff1a;从“自我审查”到“代码质量守护者”最近在GitHub上看到一个挺有意思的项目&#xff0c;叫motiful/self-review。光看名字&#xff0c;你可能会觉得这又是一个关于代码审查流程或者团队协作规范的工具。但点进去仔细研究后&#xff0c;我发现它的定位非…...