ble cs技术(一):基本原理和流程
说明
channel sounding是蓝牙6.0的新出的功能,虽然说是新出,但是大家都说核心的技术其实还是以前那套tof方案和aoa方案用于定位应用,只不过SIG将其进行统一打包,至于这套东西真正是怎么样的,我还真没研究过。
由于工作和兴趣原因,需要对这套东西进行研究,故打算开几篇博客来记录下研究的新的笔记。万事开头难,第一步就是入门了,关于入门,最好的方法莫过于阅读SIG的入门介绍文章,文章连接如下:
Bluetooth® Channel Sounding: A Technical Overview | Bluetooth® Technology Website
该文章由SIG官方发布,支持中文,对CS技术进行了一个比较好的介绍,这里我只对核心部分进行分析,读这篇文章前最好先看下原文。
测距原理
关于测距原理,CS主要使用PBR和RTT两种方法,对于这两种方法的说明,原文给出了清晰的介绍,这里参考原文2.2.2即可,这里做下简要的总结
- 基于相位的测距(PBR):通过发送频率不同的恒定信号,根据接收时相位差变化情况来进行测距,但由于信号有周期性问题,会出现距离模糊问题(就是距离超出波长就会有重复结果的问题),但除此之外精度受其他因素影响较少。
- 回程定时 (RTT):通过发包和收包的时间变化情况,来进行测距,即最常见的飞行时间,这个方法缺点以前研究uwb的tof也说过,只能算大致距离,精度受影响因素较多。
Channel sounding便是利用将两种测距方案结合,通过rtt测出大致距离以此解决pbr距离模糊的问题,实现高精度定位
CS 基本架构
如原文所说,其实CS虽然是用于测距,但是实现流程跟常规通信交互是一致,本质还是通信双方相互发包,在数据交互过程完成RTT和PBR过程。
为了更好的研究CS,需要从宏观的角度对cs的流程有一定的认识才能对细节进行进一步分析,因此我们就先着重于分析这CS套交互流程(procedure)是怎么样的,对其有一个起码的认识,这样就算初步的入门了。
procedure
cs procedure跟我们BLE ASL数据交互的procedure流程类似,在BLE连接里,数据交互发生在每个connection event中,每个connection event间隔一定的connection interval(原文3.4.1)。类似的的,每个cs数据包交互都发生在每个cs event中。
event、subevent和step
在event中,会对再进步细分为subevent和step,最后以step为最小单位来进行数据包的交互,为什么要如此细分我们先不管,只需要知道一次tx/rx的包交互便称为一个step。
cs_sync包
在step中进交换的包称为cs_sync包,结构如下:
包中每段的说明如下:
preamble:前导码,和LE中的preamble类似,用于给modular进行调谐和设置增益,固定。根据PHY是用1M还是2M和access address的lsb是0还是1有四种固定选择
access address:访问地址,本质作用是类似UWB TOF中的Ranging maker存在,用于作为记录包发送和接收的时间记录锚点。他的生成比较复杂,后面再单独分析。
trailer:这部分为4bit,有“0101”和”1010“两种选择,具体选哪个取决于上面access addressmsb是0还是1而决定,具体作用与调制解调相关。
Sounding/random sequence:这部分序列作用于access address类似,rtt提供了多种toa时间戳确定方法,具体用哪一种需要可以根据相关配置进行选择。这部分也相对复杂,后面再单独分析
用于进行定位的cs_sync包跟以前我们用于通信的ASL包差异最大的便是他没有数据段,不需要传数据,他的作用就是为了rtt应用而存在,所以cs_sync包内容中最关键的就是access address和最后的sequence,因为这两部分与rtt技术中的时间戳息息相关。
cs_tone
cs_tone本质上不能算数据包,他只是一个持续固定时间,频率固定的正弦波信号。但它有确确实实是tx/rx交互的一部分内容,关于他的作用与以前的aoa技术一致,这里就不错重复说明,这里相当于sig把以前的aoa技术进行了复用。
step mode
现在我们重新回到step的分析来,前面说过一次tx/rx的交互便称为一个step,交互的内容可以是数据包cs_sync,也可以是恒音信号cs_tone,甚至同时交换数据包和恒音,因此很自然而言的需要对不同的交互内容进行应该区别,于是我们以step mode来进行划分
mode-0
mode-0的说明这里原文讲的比较好,总结下就是initiator发送一个cs_sync包,reflector同时返回cs_sync包和cs_tone。这个模式主要用于对双方设备的信号误差进行误差检测计算和补偿校准,用于提高测距和测角的精度。
mode-1
只发送和接收cs_sync的情况,主要用于rtt测距
mode-2
只发送和接收ct_tone的情况,主要用于pbr测角
mode-3
cs_sync和cs_tone都会发送和接收的情况,相当于测距测角同时做,这个模式不是必须的,主要看设备支不支持,毕竟其实mode1和2都能做到。
至此对step的情况我们有了一个基本的认识,现在,我们返回到上一层sub event中
mode sequencing
前面说过,每个procedure包含多个event,每个event包含多个sub event,sub event有包含多个step。那么sub event本质就是一串step的序列,称为step sequence,而组成step sequence的这些step的我们知道有四种mode,也就是四种类型。那么他们的排序是怎么样的呢?这个sig做出了规定。
在原文3.8中给出了很清晰的解释,总结下来就是:
-
每个sub event都是以一个或多个(1-3可选)的mode 0 step作为开始
-
上述mode 0 step结束后,紧接着的是连续的数个main mode step,数量是随机选择的,范围在 Min_Main_Mode_Steps 至 Max_Main_Mode_Steps 之间(含)。
-
main mode step结束后,紧跟的是数量固定为一个的sub mode step。
-
sequence的边界并不局限于subevent,也就是说类似如下图的结果,第一个step sequence结束后,sub event还没有结束(用户可能配置一个sub event支持step比较多),还进行了一个mode 2 step,这个step是作为第二个sequence的开头存在,第二个sequence是横跨sub event1 和 sub event2存在的。sub event要以mode 0的step作为开始,但是main/sub step sequence并不需要。
-
main mode和sub mode的组合要限制,具体看3.8.2
上述中,main mode step的数量是从配置参数max和min中随机选的,但用户也可以使用主模式重复配置(Main_Mode_Repetition ),使能这个配置后,每次进行的main step mode不再随机变化,而是固定重复。
关于step sequence中main mode的选择,和sub mode的搭配,需要与实际测距测角的性能考虑,这里后续再进行具体深入研究。
event和step sequence
再回过头来看,sub event可以说只是处于通信时的一些资源性能考虑对step sequence进行了拆分并补充上用于提高精度的mode 0,如果我们把这些subevent和mode 0去掉,本质上每个event进行的动作就是一些重复的main/sub step sequence。只是这些sequence里面的main mode数量随机或者固定(Main_Mode_Repetition )罢了。
event结束后的上层交互
每次subevent结束后,控制器需要向上层返回测距结果
其中Step_Data中包含了测距实际数据(TOF数据或相位数据)
小结
那么通过上述的分析,对于cs的procedure我们就有了一个基本的认识。但是还有很多细节的东西我们还没有分析,比如cs procedure中每个step的信道怎么样的,会变化吗?access address要如何选择?比如进入procedure前,相关的初始化和配置流程是怎么样的?如何保证安全问题?等等,这些问题就需要再另外再分析了。