蓝牙规范-Vol 6:低功耗控制器 Part B 链路层规范 章节4.1-4.3 空口协议

本文主要是介绍蓝牙规范-Vol 6:低功耗控制器 Part B 链路层规范 章节4.1-4.3 空口协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 4 空口协议
    • 4.1 帧间隔
      • 4.1.1 帧间间隔
      • 4.1.2 最小AUX帧间隔
      • 4.1.3 最小子事件间隔
    • 4.2 timing要求
      • 4.2.1 主动时钟精度
      • 4.2.2 休眠时钟精度
      • 4.2.3 延迟范围
      • 4.2.4 窗口扩展
    • 4.3 链路层设备过滤
      • 4.3.1 白名单
      • 4.3.2 广播过滤策略
      • 4.3.3 扫描过滤策略
        • 4.3.3.1 扩展扫描过滤策略
      • 4.3.4 发起态过滤策略
      • 4.3.5 建立定期同步状态过滤策略

4 空口协议

空口协议由多重访问方案、设备发现及链路层链接方法组成。

4.1 帧间隔

4.1.1 帧间间隔

在同一个通道索引下的连续2个数据包的时间间隔成为帧间间隔,它由上一个数据包的最后一个比特的到下一个数据包的第一个比特之间的时间间隔定义,帧间间隔被成为T_IFS并且位150us。

4.1.2 最小AUX帧间隔

最小AUX帧间隔为一个包含AuxPr的数据包和它标示的辅助包之间的最小时间间隔,它是由包含AuxPtr的数据包的最后一个比特到它的辅助包的第一个比特之间的时间间隔定义,最小的AUX帧间隔被称为T_MAFS并且为300us。

图4.1展示了最小AUX帧间隔的一个示例:
在这里插入图片描述

4.1.3 最小子事件间隔

最小子事件间隔为一个子事件的最后数据包的最后一个比特到下一个子事件的第一个数据包的第一个bit之间的时间间隔。

最小子事件间隔被称为T_MSS且为150us。

图4.2展示了在CIS中最小子事件间隔的应用示例:
在这里插入图片描述
图4.2展示了在BIS中最小子事件间隔的应用示例:
在这里插入图片描述

4.2 timing要求

链路层使用2种时钟精度的一种:在Section 4.2.1所述情况下,应使用主动时钟精度,其他情况下使用休眠时钟精度。

本节中指出的时钟精度只适用于发送数据包时的设备,用于定时接收数据包的时钟可能有精度误差,但是接收设备需要允许这个误差,例如,如果接收设备时钟精度为2000ppm则最大的偏差为45us,对于已经进行时间同步的上一个事件1秒之后的事件,设备至少需要提前2045µs开始监听,并至少持续到比它正常结束的时间晚2045µs。

4.2.1 主动时钟精度

在连接、BIG或CIG事件期间,在主动扫描期间,以及发起连接请求时的数据包发送的平均timing由主动时钟精度决定,其中漂移小于或等于±50ppm,所有瞬时timing与平均timing的偏差不得超过2µs。

注意:这意味着数据包发送的开始时间在上一个包结束以后的150±2us

具体的说,这些要求适用于下面的这些间隔:

  • 同一个连接事件的相邻的数据包。
  • 在同一个BIG或者CIG事件的数据包,即使他们在不同的CISes或BISes或不同的子事件。
  • 广播包和包含SCAN_REQ, AUX_SCAN_REQ, CONNECT_IND, 或AUX_CONNECT_REQ PDU的数据包
  • 包含SCAN_REQ的数据包和包含SCAN_RSP PDU的响应包。
  • 包含AUX_SCAN_REQ PDU的数据包和包含AUX_SCAN_RSP PDU的响应包。
  • 包含AUX_CONNECT_REQ PDU的数据包和包含AUX_CONNECT_RSP PDU的响应包。

4.2.2 休眠时钟精度

其他所有的活动的平均timing由休眠时钟精度决定,其中漂移小于或等于±500ppm,所有瞬时timing和平均timing的偏差不得大于16us,主动时钟最坏情况下的偏差和漂移应该小于或等于休眠时钟的偏差和漂移。

在连接中,设备使用的睡眠时钟精度不应低于最近发送的LL_CLOCK_ACCURACY_REQ或LL_CLOCK_ACCURACY_RSP PDU的SCA字段中提示的最坏的情况。如果在最近的连接中,链路层还没有初始化或响应休眠时钟精度更新过程(见Section 5.1.14),master应使用至少与用于创建连接的CONNECT_IND or AUX_CONNECT_REQ PDU`的SCA字段中提出的最坏情况下的精度相同的精度的休眠时钟,slave需要使用精度为±500ppm或更高的休眠时钟。

注意:这些要求适用于下面的时间间隔:

  • ACL锚点之间的时间(见Section 4.5.7)
  • CIS锚点之间的时间(见Section 4.5.14.1)
  • BIG锚点之间的时间(见Section 4.4.6.4)
  • 广播和定期广播间隔和advDelay值(见Section 4.4.2.2)
  • 在同一个扩展广播事件或定期广播事件中的数据包间隔
  • 由广播PDUs中的SyncInfo字段和AuxPtr字段指定的所有偏移量

注意:这意味着具有500ppm睡眠时钟精度的2秒连接间隔的master将需要在的锚点的两侧拓宽1ms加16µs加上在连接间隔内从机实际使用的时钟精度的任何允许值的窗口。

4.2.3 延迟范围

当两个设备之间的距离超过几米时,信号在它们之间传播所花的时间与Section 4.2.1中定义的主动时钟精度有重要关系。当设备在监听一个可能在D米以外的设备时,它应该在数据包可能已经被传输的最后时间(例如T_IFS + 2µs)之后侦听额外的2D * 4 ns。

(1/c ~= 3.3 * refractive index ns/m,因此4ns是一个保守的限值)
光速时30KM/s,因此1/c ~= 3.3ns/m,refractive index为介质折射率。

图4.4 展示了master的数据包发送时的延迟范围。
在这里插入图片描述

4.2.4 窗口扩展

在各种情况下,链路层都期待在一个确定的窗口(从receiveWindowStart 到 receiveWindowEnd)或确定的时间(receiveWindowStart 和receiveWindowEnd相等的时候)中接收数据包。但是由于主动时钟精度(见Section 4.2.1)和休眠时钟精度(见Section 4.2.2),对于链路层发送时候来说,窗口的确切时间是不确定的,因此接收端需要调整监听时间来容纳这个不确定性。

增加的监听时间称作窗口扩展,假设时钟精度以百万分之一(ppm)表示,通过下面公式进行计算:
在这里插入图片描述
当使用主动时钟时,J为2,当使用休眠时钟时,J为16,其他的参数在表4.1中定义:
注意:txCA为链路层发送的时钟精度,timeOf LastSync为链路层接收能够同步它的时钟到链路层发送时钟的最近时间。
在这里插入图片描述
在这里插入图片描述
注意:这只适用于从正确的发送者接收到包的事件,不管CRC是否匹配,时间是否重新同步。

如果接收端有关于链路层发送的时钟的更准确精度信息
,它可以选择一个较小的值作为transmitterAllowance

windowWidening = transmitterAllowance + receiverAllowance

其中,receiverAllowance是接收端为自己的时钟精度所做的余量。

接收端需要在receiveWindowStart前的windowWidening开始监听,直到receiveWindowEnd后的windowWidening结束。

ACL连接中的windowWidening应小于((connInterval ÷ 2) - T_IFS μs),如果windowWidening达到了((connInterval ÷ 2) - T_IFS μs).,则这个连接被认为已经丢失(见Section 4.5.12)。

如果CIS或NSE < 3的BIS的windowWidening达到了((ISO_Interval ÷ 2) - T_IFS)us,则链路层需要终止CIS(见Section 5.1.16)或停止和BIG同步。

如果CIS或NSE ≥ 3的BIS的windowWidening达到了Sub_Interval,则链路层需要终止CIS(见Section 5.1.16)或停止和BIG同步。

4.3 链路层设备过滤

链路层通过对端设备的设备地址来进行设备过滤,链路层通过链路层设备过滤来最小化它需要响应的设备的数量。

链路层需要支持链路层设备过滤,除非它只支持广播状态并且只支持不可链接不可扫描的广播。

广播状态,扫描状态,发起状态,建立定期同步状态的过滤策略是相互独立的,当链路层在广播状态时,应使用广播过滤策略,其他状态也分别使用对应状态的过滤策略。当链路层不支持广播态,扫描态,发起态或建立定期同步状态的时候,对应的过滤策略也不要求支持。

4.3.1 白名单

链路层用来做设备过滤的设备的集合叫做白名单。

白名单包括一组用于链路层设备过滤的白名单档案,一份白名单档案包括设备地址和设备地址类型(公共地址或随机地址),同样也有特殊的设备地址类型:匿名地址:这个类型匹配所有没有附带地址的广播。所有支持链路层设备过滤的链路层需要支持存储至少一条白名单档案。

复位的时候,白名单为空。

白名单由Host来配置并由链路层用作广播,扫描或初始化设备过滤,但不应用在定期同步建立中,这允许Host配置链路层在不唤醒Host的情况下进行请求操作。

所有的设备过滤策略使用相同的白名单。

4.3.2 广播过滤策略

广播过滤策略决定了广播者的链路层如果处理扫描和连接请求。

当链路层使用不可链接和不可扫描的定向广播事件,可扫描的定向广播事件,可链接的定向广播事件时,广播过滤策略可以被忽略。否则链路层需要使用由Host配置的下面集中广播过滤策略之一:

  • 链路层需要处理来自所有设备的扫描和连接请求(例如,未使用白名单的情况下),这是复位以后的默认值。
  • 链路层处理来自所有设备的连接请求,并且只处理来自白名单的设备的扫描请求。
  • 链路层处理来自所有设备的扫描请求,并且只处理来自白名单设备的连接请求。
  • 链路层只处理来自白名单设备的扫描和连接请求。

4.3.3 扫描过滤策略

扫描过滤策略决定扫描者的链路层如何处理广播和扫描回应PDUs,链路层需要使用由Host配置的下面几种扫描过滤策略之一:

  • 链路层处理所有的广播和扫描回应PDUs(不使用白名单的情况下),当然,不包含扫描者设备地址的定向广播PDU会被忽略,这是复位以后的默认值。
  • 链路层只处理白名单上的设备的广播和扫描回应PDUs,不包含扫描者设备地址的定向广播PDU会被忽略。

同一时间只支持一种扫描过滤策略。

注意:扫描过滤策略不影响发起态或建立定期同步状态,尽管他们涉及到了扫描广播PDUs。

4.3.3.1 扩展扫描过滤策略

如果链路层支持扩展广播过滤策略,则下面的模式需要被支持:

  • 链路层处理所有的广播和扫描回应PDUs(不使用白名单的情况下),当然,如果定向广播PDU的TargetA不是扫描者的设备地址或可解析的私有地址的话会被忽略。
  • 链路层只处理白名单上的设备的广播和扫描回应PDU,如果定向广播PDU的TargetA不是扫描者的设备地址或可解析的私有地址的话会被忽略。

4.3.4 发起态过滤策略

发起态过滤策略决定了发起者的链路层如何处理广播PDUs,链路层使用由Host配置的下面几种发起态过滤策略之一:

  • 链路层忽略掉白名单,处理通过Host配置的一个特定设备的可链接广播的PDUs。
  • 链路层处理白名单上的所有设备的可链接广播PDUs。

如果链路层接收到从广播者处接收到了一个可连接的定向广播,但是设备不在白名单中并且不是Host指定的设备地址,则这个可链接的定向广播会被忽略。

同一时间只支持一种发起态过滤策略。

4.3.5 建立定期同步状态过滤策略

建立定期同步状态过滤策略决定了扫描者的链路层在尝试与定期广播进行同步时如何处理广播PDUs,链路层使用由Host配置的下面几种建立定期同步状态过滤策略之一:

  • 链路层忽略定期广播者列表并且处理Host配置的特定设备的广播PDUs。
  • 链路层处理定期广播者列表的所有设备的广播PDUs。

如果链路层接收到来自不在定期广播者列表或Host配置的特定设备的广播者的包含SyncInfo字段的广播PDU,或者广播具有列表或Host中没有指明的广播SID,这个SyncInfo字段需要被忽略。

同一时间只支持一种建立定期同步状态过滤策略。

定期广播的同步和扫描同时进行,但是这两个活动的过滤策略是互相独立的,建立定期同步状态而不是扫描态过滤策略来决定使用哪一个广播PDUs来对定期广播进行同步(同步成功后发送给Host)。如果接收到的PDU只符合这两种策略的一种,则它只能被使用这种策略的过程处理而不是另一个过程处理。

当链路层使用定期广播同步传输流程(见Section 5.1.13)接收到定期广播序列时,链路层应该忽略定期广播者列表。

这篇关于蓝牙规范-Vol 6:低功耗控制器 Part B 链路层规范 章节4.1-4.3 空口协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/611894

相关文章

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

JavaEE7 Servlet 3.1(JSR 340)规范中文版

http://www.iteye.com/news/27727-jinnianshilongnian     Jave EE 7中的部分规范已正式获得批准通过,其中包括JSR340 Java Servlet 3.1规范,去年翻译了该规范,在此分享出来,希望对某些朋友有所帮助,不足之处请指正。   点击直接下载    在线版目录   Servlet3.1规范翻译

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

Level3 — PART 3 — 自然语言处理与文本分析

目录 自然语言处理概要 分词与词性标注 N-Gram 分词 分词及词性标注的难点 法则式分词法 全切分 FMM和BMM Bi-direction MM 优缺点 统计式分词法 N-Gram概率模型 HMM概率模型 词性标注(Part-of-Speech Tagging) HMM 文本挖掘概要 信息检索(Information Retrieval) 全文扫描 关键词

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

MySQL record 02 part

查看已建数据库的基本信息: show CREATE DATABASE mydb; 注意,是DATABASE 不是 DATABASEs, 命令成功执行后,回显的信息有: CREATE DATABASE mydb /*!40100 DEFAULT CHARACTER SET utf8mb3 / /!80016 DEFAULT ENCRYPTION=‘N’ / CREATE DATABASE myd

【CSS in Depth 2 精译_023】第四章概述 + 4.1 Flexbox 布局的基本原理

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 第三章 文档流与盒模型(已