[ccc3.0][数字钥匙] UWB MAC协议(一)

news/2024/4/30 14:12:24/文章来源:https://blog.csdn.net/qq_29246181/article/details/127204885

UWB MAC协议--jianqiang.xue

  • 一、测距交换序列
    • (一)Pre-POLL请求消息及其参数
    • (二)Final_Data 消息及其参数

一、测距交换序列

本节详细介绍了DK MAC协议,用于在响应者设备的发起者和每个响应者之间进行三包交换的双向测距。图20-5展示了MAC协议中发起者和NResponderK\N^{K}_{Responder}\,NResponderK响应者在第(s+1)个测试会话中的UWB消息流,在第(i+1)个测试模块中有NSlotPerRoundK\N^{K}_{SlotPerRound} \ NSlotPerRoundK 插槽。

虽然图中所示的MAC协议是根据相对于发起者时钟和时间基准的MAC时间轴进行的,但本协议应根据20.3节中所述的相应响应者-设备的时间基准进行。NResponderK\N^{K}_{Responder}\,NResponderK UWB测距数据包到NSlotPerRoundK\N^{K}_{SlotPerRound} \ NSlotPerRoundK 槽位的映射如表20-2所示。

在这里插入图片描述
表20-2:槽位到UWB测距报文的映射关系。

槽位索引标记STS数据包格式发送者
0Pre-POLLSP0 : 数据帧发起者
1POLLSP3 : 参考帧发起者
1+1Response_0SP3 : 参考帧回应者
1+1Response_1SP3 : 参考帧回应者
SP3 : 参考帧回应者
SP3 : 参考帧回应者
1 + NResponderK\N^{K}_{Responder}\,NResponderKResponder_ NResponderK\N^{K}_{Responder}\,NResponderK-1SP3 : 参考帧回应者
1 + NResponderK\N^{K}_{Responder}\,NResponderK + 1结束SP3 : 参考帧发起者
1 + NResponderK\N^{K}_{Responder}\,NResponderK + 2 = NPacketsK\N^{K}_{Packets}\,NPacketsK结束-数据SP0 : 数据帧发起者
1 + NResponderK\N^{K}_{Responder}\,NResponderK + 3槽位未使用N/AN/A
槽位未使用N/AN/A
NSlotPerRoundK\N^{K}_{SlotPerRound}\,NSlotPerRoundK -1槽位未使用N/AN/A

在正常工作模式下(即发起者和响应者都处于活跃的测距会话中),MAC协议序列如下:

  1. 发起方发送的第一个数据包是一个名为Pre-POLL消息的数据包。注意,如上所述,当启动或恢复一个测距会话时,默认情况下,在测距块0的第0轮开始测距。第一个报文是SP0报文。其有效载荷应包括:
    • UWB_Session_ID^k:当前测距会话ID。
    • STS_Index^k:(i,Round_Idx(i),POLL):后续POLL消息的STS索引。
    • i:测试会话当前块索引
    • Hop_Flag^k(i):跳变设置从以前的测距交换。如果当前测距周期是测距会话启动或恢复后的第一次测距周期未,则设置为 0。注意,当跳变模式设置为“自适应跳变”时,接收端才会分析该字段。
    • Round_Idx^k(i): (i+1)第(i+1)个范围块的舍入索引,该索引在前一个范围交换(第i个范围块)的Final_Data数据包中设置。如果当前测距周期是已启动或恢复的测距会话中的第一轮,则 Round_Idx^k(i=0)设置为“0”。

(一)Pre-POLL请求消息及其参数

Pre-POLL消息及其参数的定义如表20-3和表20-4所示。表20-4中列出的所有参数值都应采用小端序格式编码。

表20-3:Pre-POLL请求消息及其参数。

UWB MAC 消息UWB MAC 消息ID参数
Pre-POLL1UWB_Session_ID,
Poll_STS_Index,
Ranging_Block,
Hop_Flag,
Round_Index

表20-4 Pre-Poll Message中的参数定义。

参数长度(bytes)描述
UWB_Session_ID40 - (2^32-1)UWB测距会话ID
Poll_STS_Index40 - (2^32-1)后续POLL消息的STS索引
Ranging_Block20-65535会话当前测距模块的索引
Hop_Flag10:无跳变
1:跳变
对于没有跳变配置,该字段始终为0。对于连续跳变配置,该字段始终为1(除了在启动或恢复一个跳变会话后索引为0的第一个跳变模块)。
Round_Index20-65535周期内计数索引,从前一个测距模块中的测距交换设置的当前测距模块的范围舍入索引。这个字段在第一个量程块中被设置为0,我们总是从量程0开始。
  1. 从UWB^ {K}_ {time0}开始测量一段时间的T^ {K}_ {Slot}后,发起者开始发送POLL消息。这应该是一个SP3类型的包(见第21节)。经过一段时间后,发起方开始发送POLL消息。这应该是一个SP3类型的包(见第21节)。
  2. 每个响应者l (l = 0,…,N^{k}_{Responder} -1)将在其专用的响应槽中发送响应数据包。
    • 每条消息应作为SP3类型的报文发送。STS使用的索引与上面第2步中发送的POLL消息相关(参见第20.6节)。
    • 如果任何一个响应器在当前范围内没有收到发起者发出的POLL消息,该响应器在专用响应槽内不得发送。
  3. 如果启动器已经接收到至少一个有效的响应:
    • 在(N ^k _Responder + 2)个槽后,发起者将发送它的结束消息。这个数据包是一个SP3数据包,它完成了飞行时间测量。如果没有收到有效的响应,启动器可以选择发送它的结束消息和下面的结束数据包。在跳过结束消息和结束数据包报文的情况下:
      • 如果自适应跳变模式是主动的,则启动器和应答器的跳变模式都将被触发。
      • 对于跳过的最终数据包,帧计数器值不应增加。
    • 在(N ^k _Responder + 3)个槽位后,发起方通过向响应设备发送[结束数据包]报文完成测距交换。该报文为SP0类型报文,有效数据应包括以下内容:
      • UWB_Session_ID^k:当前测距会话ID。
      • i:测试会话 当前模块索引
      • Hop_Flag^k(i+1):在测距模块i+1中使用跳变。注意,只有当跳变配置设置为自适应跳变时,该字段才相关。
      • Round_Idx^k(i):在量程模块i+1中,下一个量程交换的量程整数索引。
      • STS_Index^k:(i,Round_Idx(i),POLL):前面结束消息的STS索引。
      • Final Time Stampk ^k (i): 结束消息的时间戳。这个时间戳将被计算为发起者POLL消息的RMARKER和发起者结束消息的RMARKER之间的差值
      • NRxResponses\N_{RxResponses}\,NRxResponses:当前测距交换中接收到的响应数。
        [Time_Stamps^s(l)]:所有应答者的所有测距测量时间戳N ^k _Responder,其有效的测距响应已在启动器接收到。在没有收到有效响应的情况下,发起者可以额外添加响应者的时间戳数据。有效数据的大小取决于添加的时间戳数据的数量。每个响应者的时间戳数据应包括以下字段:
        • Responder_Index l, l = 0, 1,…, N^k _Responder - 1对应于响应器槽位l(测距内槽位索引2+l)。
        • 第(l+1)个响应器的时间戳响应器值。时间戳值应计算为发起者POLL消息的RMARKER与第(l+1)个响应者响应消息的RMARKER之间的差值(详见第21.6节)。如果没有从响应方收到有效响应,但为该响应方添加了时间戳数据,则时间戳值应设置为0。
        • Ranging_Timestamp_Uncertainty_Responder parameter (测距时间戳不确定性响应器参数).
        • 在收到有效响应的情况下,Ranging_Status_Responder参数设置为0x0 (success),否则该参数设置为表20-7所示的值之一,以显示错误的原因。

(二)Final_Data 消息及其参数

[结束数据包]消息及其参数的定义如表20-5和表20-6所示。
表20-5:Final_Data消息及其参数。

UWB MAC 消息UWB MAC 消息ID参数
Final_Data2UWB_Session_ID,
Ranging_Block,
Hop_Flag,
Round_Index,
Final_STS_Index,
Ranging_Timestamp_FINAL_TX,
Number_Ranging_Responders,
Responder_Index,
Ranging_Timestamp_Responder_l,
Ranging_Timestamp_Uncertainty_Responder_l,
Ranging_Status_Responder_l,

表20-6:Final_Data消息中的参数定义。

参数长度(bytes)描述
UWB_Session_ID40 - (2^32-1)UWB测距会话ID
Ranging_Block20-65535会话:当前测距模块的索引
Hop_Flag10:无跳变
1:跳变
对于没有跳变配置,该字段始终为0。对于连续跳变配置,该字段始终为1(除了在启动或恢复一个跳变会话后索引为0的第一个跳变模块)。
Round_Index20-65535周期内计数索引,从前一个测距模块中的测距交换设置的当前测距模块的范围舍入索引。这个字段在第一个量程块中被设置为0,我们总是从量程0开始。

todo P423

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

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

相关文章

Redis概述

目录 一、NoSQL数据库 1.技术发展 2.NoSQL数据库 ①session问题 ②解决IO压力 ③NoSQL概述 ④NoSQL适用场景 ⑤NoSQL不适用的场景 ⑥NoSQL的分类 ⑦NoSQL的特点 ⑧Memcache ⑨Redis ⑩ MongoDB 官网地址:Redis 一、NoSQL数据库 NoSQL_百度百科 (baidu…

保护PDF文件的3种方法

做好的PDF文件我们可以根据不同需求来设置保护。 方法一 如果希望PDF文件不能被随意打开,我们可以设置打开密码,这样点击PDF文件后就会提示需要输密码才能进一步打开。 如何设置PDF打开密码呢?一般PDF编辑器都可以设置,如果没有…

SpringBoot Web开发设置请求映射规则

前言 本篇文章介绍 SpringBoot Web 开发中的请求映射注解的详细使用,希望观众老爷们多多支持,欢迎在评论区批评指正! 设置请求映射规则通过 RequestMapping注解,该注解标注在类或者方法上; 该注解用来设定所能匹配请…

顺序查找和二分查找

案例1):1 #include <stdio.h>2 3 int seqSearch(int arr[], int arrLen, int val){ //定义一个数组,一个数组长度,目标值4 for (int i = 0; i < arrLen; i++){5 if(arr[i] == val){6 return i;7 }8 }9 return -1; //找…

Java8 函数式编程

文章目录Java 函数式编程1. Lambda 表达式1.1 标准格式1.2 使用前提1.2.1 一个参数1.2.2 多个参数1.2.3 有返回值1.3 省略简化1.4 函数式接口1.4.1 Supplier1.4.2 Consumer1.4.3 Predicate1.4.4 Function1.5 方法引用1.5.1 对象 :: 实例方法1.5.2 类 :: 静态方法1.5.3 类 :: 实…

期货价格怎么算出来的?

期货价格怎么算出来的&#xff1f; 期货价格现货价格融资成本 如果对应资产是一个支付现金股息的股票组合&#xff0c;那么购买期货合约的一方因没有马上持有这个股票组合而没有收到股息。相反&#xff0c;合约卖方因持有对应股票组合收到了股息&#xff0c;因而减少了其持仓成…

数据结构-泛型(Java)

文章目录一、什么是泛型&#xff1f;1、非泛型2、泛型3、泛型的使用 泛型类 泛型接口 泛型方法二、泛型类1、 泛型类 正确使用分析 错误使用分析2、泛型类实现抽奖器3、泛型类派生子类 泛型类派生子类第一种第二种 非泛型三、泛型接口第一种&#xff1a;泛型类实现泛型接口第二…

使用python的pygame做的小游戏项目:小船打鱼

python小游戏项目&#xff1a;小船打鱼成果展示代码解析go_fishing.pygame_function.pygame_stats.pyscoreboard.pyalien.pysettings.pyship.pybullet.pybutton.py存在的问题代码都在这里&#xff0c;只需要创建好项目&#xff0c;将对应的代码保存在对应文件名的文件中即可&am…

【微搭低代码】Javascript基础知识-函数及模块介绍

低代码要想入门&#xff0c;首先需要学习javascript&#xff0c;我们已经有了两篇基础文章 变量定义及初始化 循环及条件控制 我们本篇介绍两个知识点&#xff0c;一个是函数&#xff0c;一个是模块 函数 在js中函数是可以重复使用的代码块&#xff0c;定义函数是为了去除冗余…

在Windows下自制ARM交叉编译工具链

参考链接&#xff1a;gnu工具链 1.Download MinGW and MSys packages. 安装MSys 参考此链接https://www.msys2.org/安装&#xff0c;注意只需要安装即可。 安装开发环境,设置镜像,需要进入安装路径中的/etc/pacman.d/进行修改 // /etc/pacman.d/mirrorlist.mingw32 Serve…

【5G RRC】5G 切换(handover)那点事儿

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

python去图片背景

Remove Image Background using Python https://youtu.be/RkdFkhfMK2k

跨境电商必读,WhatsApp营销入门指南!

关键词&#xff1a;WhatsApp营销、跨境电商营销 现在&#xff0c;跨境社交媒体和Messengers不仅仅是私人交流的渠道了。很多跨境电商已经找到了在WhatsApp营销的秘诀&#xff0c;如果你还没开始&#xff0c;你可能已经落后了。同时&#xff0c;与其他平台相比&#xff0c;在 W…

Vue组件-卡片动画倒计时

前言 最近有朋友在做投票的项目&#xff0c;里面有用到一个倒计时的组件&#xff0c;还想要个动画效果。cv大法浸染多年的我&#xff0c;首先想到的是直接找个现有的组件。 通过一通搜索&#xff0c;看上的只有一个 vue2-flip-countdown&#xff0c;但是当我要修改大小和颜色…

(附源码)计算机毕业设计SSM游乐园娱乐项目管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Github的使用教程

文章目录注册查找仓库下载代码fork仓库管理创建仓库添加文件提交issue提交/接受PRpages一直想进入工程这块领地&#xff0c;但是好像没咋学过github&#xff0c;今天学一下&#xff0c;先上个名词解释 注册 首先&#xff0c;github其实是不需要邮箱和手机号的&#xff0c;可以…

window11下安装.framework3.5的方法

window11下安装.framework3.5的方法 如果正常安装报错了&#xff0c;可采用如下方法重新安装 一、把安装iso文件 zh-cn_windows_11_business_editions_version_22h2_updated_sep_2022_x64_dvd_515a832b.iso 装载到虚拟盘中H:\sources\sxs\中的文件拷贝到硬盘已存在的盘符F:\w…

容器适配器——stack/queue/priority_queue

目录 一. stack 二. queue 三. priority_queue 1. empty()&#xff0c;top()&#xff0c;size()的实现 2. pop和push的实现 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该种模式是将一个类的接口转…

C语言:数组参数、指针参数

目录 一.字符指针&#xff0c;指针数组&#xff0c;数组指针简单回顾 二.数组参数、指针参数 一维数组传参 二维数组传参 这里需要注意&#xff1a; 一级指针传参 思考 二级指针传参 思考 一.字符指针&#xff0c;指针数组&#xff0c;数组指针简单回顾 #include<std…

java虚拟机中的双亲委派机制

文章目录双亲委派机制工作原理工作场景调用过程三种加载器调用范围String类加载过程StringTest类加载过程双亲委派机制优点双亲委派机制 Java虚拟机对class文件采用的是按需加载的方式&#xff0c;也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加…