如之前文章描述,进行UWB测距时,手机(Initiator)与车端各锚点(Responders)需交互Pre-Poll、Poll、Response0-N、Final、Final-Data等信息。
其中Pre-Poll和Final-Data是SP0数据帧,是带参数的。
Poll、Response0-N、Final是SP3数据帧,是不带参数的。
本文重点讲解下Pre-Poll携带的5个参数,具体如下表。
UWB MAC Message | UWB MAC Message ID | Patameters |
Pre-POLL | 1 | UWB_Session_ID, |
假设UWB测距芯片为NCJ29D5,为进行UWB测距,需结合一个主控MCU芯片,完成对UWB测距流程的控制。MCU与NCJ29D5之间采用SPI通信,如下图。双方采用UCI接口(可详见NCJ29D5 UCI说明文档)进行通信。
参数1: UWB_Session_ID
参数名称 | 长度(bytes) | 取值范围 | 描述 |
UWB_Session_ID | 4 | 0 –0xFFFFFFFF | ID of the UWB ranging session. |
关于该参数我的理解是启动测距时,由主控MCU控制随机产生,通过UCI命令SESSION_INIT_CMD创建一个UWB测距session。后面关于该测距session的控制基本都得通过该session id来控制。
NCJ29D5可以同时建立多个测距session,此session id可用来区分不同的测距session,每一个session id对应的各自的UWB配置参数。
参数2: Poll_STS_Index
参数名称 | 长度(bytes) | 取值范围 | 描述 |
Poll_STS_Index | 4 | 0 –0xFFFFFFFF | STS index of the succeeding POLL message. |
UWB数据帧有SP0帧和SP3帧,其中SP3数据帧中就有包含STS_Index字段,如下图:
STS_Index参数对于安全测距操作起着重要作用。
每个slot包含有一个SP3帧,无论该slot是否被使用,都需要对测距块中的每个slot进行变更。CCC中描述的基本规则是采用每个slot递增的方式,如下图:
具体可详见CCC规范20.6章节,有专门描述了STS index的相关要求。
参数3: Ranging_Block
参数名称 | 长度(bytes) | 取值范围 | 描述 |
Ranging_Block | 2 | 0 –0xFFFF | Session’s Index of current ranging block. |
当前测距session的block索引。
启动UWB测距时,要配置一个对应的Ranging session。
如下图,每个Ranging session里可能会有多个Ranging Block,每个Ranging Block里可能会有多个Round。每一个Round对应的就是之前说一个UWB测距交互流程(Pre-Poll->Poll->Response0-N->Final->Final Data)。每个Round里会有多个Slot,用来“放置”Pre-Poll、Poll、Response0-N、Final、Final Data等UWB帧。
参数4: Round_Index
参数名称 | 长度(bytes) | 取值范围 | 描述 |
Round_Index | 2 | 0 –0xFFFF | The ranging round index for the current ranging block as set from the ranging exchange in the previous ranging block. |
当前UWB测距采用哪个round_index进行UWB测距。如上描述,每个Ranging block里可能有多个Round,该参数用于配置当前UWB测距的Round index信息。每次UWB测距的Round可能是静态不变的,也可能是动态变化的,具体详见下个参数Hop_Flag。
参数5: Hop_Flag
参数名称 | 长度(bytes) | 取值范围 | 描述 |
Hop_Flag | 1 | 0:No Hopping 1:Hopping | Hop flag for current ranging block as set from the ranging exchange in the previous ranging block For no hopping configuration this field is always 0 For continuous hopping configuration this field is always 1 |
若Hop_Flag设置为0,则表示设置为“no hopping”,这表示initiator每次都会使用相同的ranging round来进行UWB测距。
若Hop_Flag设置为1,则表示设置为“hopping”,这表示initiator每次测距使用的的ranging round可能会变化。
Hopping方式又分为两种:
第一种,是continuous hopping,即每次测距使用不同的ranging round。
第二种,是adaptive hopping,如果Initiator认为该round是干净无干扰的,则不进行hopping;如果Initiator认为该round存在干扰,则进行hopping.
具体可详见CCC规范20.4章节,有专门描述了Hopping Flag的相关要求。
微信号:耐思时刻
## 一起每天进步一点点 ##