汽车数字钥匙设计08:UWB测距之FinalData参数

如之前文章描述,进行UWB测距时,手机(Initiator)与车端各锚点(Responders)需交互Pre-Poll、Poll、Response0-N、Final、Final-Data等信息。

其中Pre-PollFinal-Data是SP0数据帧,是带参数的。

Poll、Response0-N、Final是SP3数据帧,是不带参数的。

本文重点讲解下Final-Data携带的11个参数,具体如下表。

UWB MAC Message

UWB MAC Message ID

Patameters

Final_Data

2

UWB_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,

假设UWB测距芯片为NCJ29D5,为进行UWB测距,需结合一个主控MCU芯片,完成对UWB测距流程的控制。MCU与NCJ29D5之间采用SPI通信,如下图。双方采用UCI接口(可详见NCJ29D5 UCI说明文档)进行通信。

汽车数字钥匙设计08:UWB测距之FinalData参数_第1张图片

备注:前面4个参数,在Pre-Poll中也有包含。

参数1: UWB_Session_ID

参数名称

长度(bytes)

取值范围

描述

UWB_Session_ID

4

0 –0xFFFFFFFF

ID of the UWB ranging session.

该参数在Pre-Poll命令也有包含。我的理解是启动测距时,由主控MCU控制随机产生,通过UCI命令SESSION_INIT_CMD创建一个UWB测距session。后面关于该测距session的控制基本都得通过该session id来控制。

NCJ29D5可以同时建立多个测距session,此session id可用来区分不同的测距session,每一个session id对应的各自的UWB配置参数。

同一组UWB测距数据流,Pre-Poll和Final-Data的参数相同

参数2: Ranging_Block

参数名称

长度(bytes)

取值范围

描述

Ranging_Block

2

0 –0xFFFF

Index of current ranging Block

当前测距session的block索引。该参数在Pre-Poll命令也有包含

启动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帧。

汽车数字钥匙设计08:UWB测距之FinalData参数_第2张图片

参数3: Round_Index

参数名称

长度(bytes)

取值范围

描述

Round_Index

2

0 –0xFFFF

The ranging round in which the ranging cycle

will be executed in the next ranging block.

该参数在Pre-Poll命令也有包含

Pre-Poll中原文中描述如下:

The ranging round index for the current ranging block as set from the ranging exchange in the previous ranging block.

Final-Data中原文中描述如下:

The ranging round in which the ranging cycle will be executed in the next ranging block.

这两个参数是匹配使用的。

Pre-Poll中表示:当前UWB测距采用哪个round_index进行UWB测距。

Final-Data中表示:下次UWB测距block采用哪个round_index进行UWB测距。

如上描述,每个Ranging block里可能有多个Round,该参数用于配置当前UWB测距的Round index信息。每次UWB测距的Round可能是静态不变的,也可能是动态变化的,具体详见下个参数Hop_Flag。

参数4: Hop_Flag

参数名称

长度(bytes)

取值范围

描述

Hop_Flag

1

0:No Hopping

1:Hopping

Hop Flag for next ranging Block

For no hopping configuration this field is always 0

For continuous hopping configuration this field is always 1

该参数在Pre-Poll命令也有包含

Pre-Poll中原文中描述如下:

Hop flag for current ranging block as set from the ranging exchange in the previous ranging block.

Final-Data中原文中描述如下:

Hop Flag for next ranging Block.

这两个参数是匹配使用的。

Pre-Poll中表示:当前UWB测距采用是否要hopping。

Final-Data中表示:下次UWB测距是否要hopping。

若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的相关要求。

参数5: Final_STS_Index

参数名称

长度(bytes)

取值范围

描述

Final_STS_Index

4

0 –0xFFFFFFFF

STS index of the preceding Final message.

该在Pre-Poll命令也有类似的参数,名字叫Poll_STS_Index,而Final-Data中的参数叫Final_STS_Index。

之前说过一个UWB测距交互流程是:Pre-Poll->Poll->Response0-N->Final->Final Data

所以这两个参数的用途分别是:

1、在Pre-Poll数据帧中通过Poll_STS_Index参数,指示随后的Poll帧的STS_Index。

2、在Final-Data数据帧通过参数Final_STS_Index,指示之前的Final帧的STS_Index。

UWB数据帧有SP0帧和SP3帧,其中SP3帧中就有包含STS_Index字段,如下图:

汽车数字钥匙设计08:UWB测距之FinalData参数_第3张图片

STS_Index参数对于安全测距操作起着重要作用。

每个slot包含有一个SP3帧,无论该slot是否被使用,都需要对测距块中的每个slot进行变更。CCC中描述的基本规则是采用每个slot递增的方式,如下图:

汽车数字钥匙设计08:UWB测距之FinalData参数_第4张图片

具体可详见CCC规范20.6章节,有专门描述了STS index的相关要求。

参数6: Ranging_Timestamp_FINAL_TX

参数名称

长度(bytes)

取值范围

描述

Ranging_Timestamp_FINAL_TX

4

Range = 0 to 0XFFFFFFFF

Timestamp = N ×

1/128 × 1/499.2e6 sec

Time Range = 0 to 67.21 ms

Time difference between POLL and Final messages transmit times at the initiator.

我的理解是initiator端开始发送POLL到开始发送Final帧的时间间隔。

参数7: Number_Ranging_Responders

参数名称

长度(bytes)

取值范围

描述

Number_Ranging_Responders

1

0–255

Number of timestamps to follow in this message.

我的理解是用于指示接下来的参数中,有多少组Responder的参数。

接下来的参数,每4个 为一组锚点的时间戳参数。

即参数8(Responder_Index)、参数9(Ranging_Timestamp_Responder_l)、参数10(Ranging_Timestamp_Uncertainty_Responder_-l)、参数11(Ranging_Status_Responder_l)为一组锚点的时间戳参数.

参数8: Responder_Index

参数名称

长度(bytes)

取值范围

描述

Responder_Index

1

0–255

Index of Responder_l whose timestamp data is referred to in the

Ranging_Timestamp_Responder_l, Ranging_Timestamp_Uncertainty_Responder_l, and Ranging_Status_Responder_l fields

我的理解是用于指示接下来这组时间戳参数,是第几个锚点。

参数9: Ranging_Timestamp_Responder_l

参数名称

长度(bytes)

取值范围

描述

Ranging_Timestamp_Responder_l

4

Range = 0 to 0XFFFFFFFF

Timestamp=N ×

1/128 ×

1/499.2e6 sec

Time Range = 0 to 67.21 ms

Time difference between POLL and RESPONSE of Responder l, as received by the initiator.

我的理解是initiator端开始发送Poll到接收到锚点l(Responder_l)响应的时间间隔。

参数10: Ranging_Timestamp_Uncertainty_Responder_l

参数名称

长度(bytes)

取值范围

描述

Ranging_Timestamp_Uncertainty

_-Responder_l

1

See Section 6.9.1.7 in [IEEE 802.15-4z-2020]

Range of values from 1.5 cm–3.6 m at various confidences

该参数应该是用来补偿的一个参数。具体我翻阅了IEEE 802.15-4z-2020,但目前还不太理解。

参数11: Ranging_Status_Responder_l

参数名称

长度(bytes)

取值范围

描述

Ranging_Status_Responder_l

1

See Table 20-7

The status for the response frame from the responder. See the corresponding description for the ranging status in Table 20-7

该参数用来反馈当前锚点的测距状态,具体状态详见下表。

Ranging Status

Value

Description

Success

0x0

Successful receipt and transmission of a packet

Transaction overflow

0x1

RESPONSE SP3 frame from this responder cannot be processed by the device

Transaction expired

0x2

No RESPONSE SP3 frame was received from this responder

Incorrect frame

0x03

The RESPONSE SP3 frame received from this responder was not correct

Reserved

0x04-0xFF

Table 20-7: Ranging Status of a Responder

其他说明:

随后的参数12(Responder_Index)、参数13(Ranging_Timestamp_Responder_l)、参数14(Ranging_Timestamp_Uncertainty_Responder_-l)、参数15(Ranging_Status_Responder_l)为一组锚点的时间戳参数。

最终有几组参数,取决于共有几个锚点,即参数7(Number_Ranging_Responders)。

Final-Data数据帧最多带127字节的参数。正常时,最多可允许一个测距ranging round中有10个锚点。

但当NkChap_per_Slot= 24时,即每个slot为8ms,则一个测距ranging round中最多只能有7个锚点,否则加上前后POLL和Final数据帧,共超过9个数据帧,则其间隔将超过8个slot,即8*8ms=64ms。而参数6和参数7的时间戳最大值为67.21 ms。

你可能感兴趣的:(数字钥匙,CCC,汽车,软件工程)