如之前文章描述,进行UWB测距时,手机(Initiator)与车端各锚点(Responders)需交互Pre-Poll、Poll、Response0-N、Final、Final-Data等信息。
那什么时候开始交互呢?手机发送了,车端锚点一定能接收到吗?手机与车端锚点是怎么同步的呢?
CCC规范中有专门的章节19.4进行了详细的描述,下面简单介绍总结下。
1、是否可以不同步?
在比较简单的UWB测距应用场景上,理论上是可以不进行时间同步的,但是这会加大车端锚点的功耗。
如果没有时间同步,则车端的锚点,需要一直打开UWB接收,否则手机端发出Pre-Poll等命令时,则车端各锚点无法收到,故无法完成测距。假设车端各锚点一直打开UWB接收,则车端的功耗会加大。
CCC中写明手机端的时间同步是强制要求的。车端各锚点考虑到时延与节能,也是强烈建议要进行时间同步。
2、怎么同步?
根据对CCC规范的解读,我觉得可以总结为如下三种同步方式:
- 方式一:Out of band同步,手机通过BLE与车端主锚点进行同步;
- 方式二:In band同步,手机通过UWB数据包与车端所有锚点进行同步;
- 方式三:vehicle internal同步,主锚点通过车端总线(如CAN、LIN)与从锚点进行同步;
方式一Out of band同步主要在测距启动前,采用BLE进行手机与主锚点的粗略同步;
方式二In band同步主要在测距过程中,由UWB芯片自动进行精确同步;
方式三vehicle internal同步主要在测距启动前,进行车端内部各锚点的同步;
三种方式各有其用途,在UWB测距过程中需结合使用,本文主要描述方式一Out of band同步。即采用BLE进行UWB测距的时间同步。
图1 UWB测距的时间同步
3、BLE时间同步
CCC规范中描述了两种BLE同步procedure。
Procedure 0:在蓝牙连接时,进行时间同步;
Procedure 1:由车端主锚点触发进行时间同步;
在实际UWB测距使用过程中,两种同步流程可以单独使用,也可以结合一起使用。
3.1、Procedure 0
Procedure 0这个流程是在蓝牙连接建立时,手机和车端主锚点各自捕捉自己蓝牙连接中Event Counter=0的LL message,通过该时刻进行时间同步,如下图2的两个红色圆圈。具体可详见图3及图4的蓝牙抓包示例。
之后由手机发出同步报文,将UWBDeviceTime0 ,DeviceEventCount0...等相关参数发送给车端主锚点。
图2 Prcedure 0时间同步
图3 Master蓝牙抓包示例
图4 Slaver蓝牙抓包示例
3.2、Procedure 1
Procedure 1 这个流程是在UWB测距前,由车端主锚点发起Set PHY请求,之后手机端与车端主锚点各自捕捉LL_PHY_UPDATE_IND时刻,如下图5的两个红色圆圈。具体可详见图6的蓝牙抓包示例。
之后由手机发出同步报文,将UWBDeviceTime1 ,DeviceEventCount1...等相关参数发送给车端主锚点。
图5 Prcedure 1时间同步
图6 SetPHY同步流程蓝牙抓包
备注:上面的蓝牙抓包数据流中,Master是车端主锚点、Slave是Initiator(钥匙等智能设备)。