TOF方案在DW1000上的实现(四):DS-TWR方案
说明
在由DW1000芯片的制造原厂提供的示例代码中,同样提供了DS-TWR方案的实现示例:
Example 5a: double-sided two-way ranging (DS TWR) initiator
Example 5b: double-sided two-way ranging respond
该示例以C代码形式,演示了一个简单的双边双向测距的实现过程,本质上双边双向测距和单边单向测距没有太大的不同。
DS比SS方案多发了一次数据,并且测距结果变为了由responded来计算。
流程
测距流程如下,其中有六个关键的时间参数
poll_tx:initiator发送第一帧数据的时间点
poll_rx:responder接收第一帧数据的时间点
resp_tx:responder发送第二帧数据的时间点
resp_rx:initiator接收第二帧数据的时间点
final_tx:initiator发送第三帧数据的时间点
final_rx:responder接收第三章数据的时间点
通过三次收发数据,便算出两个设备之间的距离,公式如下:
代码分析
DS和SS代码类似,上一个博客已经对SS方案代码流程分析过一遍,这里就不作过多分析了。
增加Discovery阶段的DS方案
事实上,以上例程中的流程只是单纯的测距,一般的实际使用场景中会添加配对流程
首先为了更好的对应到使用场景,我们把之前的定义的角色名换一下:
initiator->Tag
responder->Anchor
Tag我们定义为标签,Anchor我们定义为锚点。
发现阶段的流程如下:
最初,Tag处于发现阶段,它定期发送一个包含它自己地址的Blink消息,并监听来自Anchor的测距流程发起响应(Ranging Init response)。如果Tag没有得到此响应,那么它在再次Blink前会睡眠一段时间(默认为1秒)。Anchor则一直启动接收,当它接收到Blink消息时,Anchor将向标Tag发送测距发起信息,随后Discovery阶段结束,转进到Ranging流程也就是前面讲的流程。
Discover阶段是重要的,它用于交换测距双方的地址信息并进行配对,当同一个场景中拥有多台设备时,他能很好的避免收发双方收到不该收到的数据。
数据帧说明
IEEE 802.15.4标准通用的数据帧格式如下,它包括7个Segment分别是:
1.Frame Control(FC):其中的DestAddrMode和SrcAddrMode比特位控制后续地址位的长度时2byte还是8byte
2.Sequence Number:根据标准规定,每发送一帧就累加256的模。
3.PAN ID:示例中所有的消息帧这里都是0xDECA,实际应用场景可以修改为用户自身需要的网络名
4.Destination Address:目标设备地址
5.Source Address:自身设备地址
6.Ranging Message:数据段,不定长,由用户决定。该帧中包含测距数据的部分一般称为有效载荷
7.FCS:CRC校验位
对于上述提及的Discover阶段和Ranging阶段用到的帧示例如下:
其中的各类型帧中数据段的内容如下:
Blink
Blink帧用于发送标签的Blink消息,不带任何测距信息,所以数据段长度为0,Blink帧总长12byte。
Poll message
Poll message由Tag发送,用于开启测距流程。数据为只有一个byte,内容为0x61,是message identifies用于表明信息类型,然后不带有任何时间戳数据。
Response message
Response message由anchor发送,用于响应tag之前发的poll message,数据段有5个byte,第一个byte为message identifies,剩余四个byte为时间戳数据
Final message
和Response message类似,只是再多4个byte,一共带有两个时间戳数据,共九个byte
Ranging Initiation message
配对响应信息,一个byte用于表明信息类型,两个byte用于对端地址配置,两个byte用于后续ranging流程的延时时间配置,一个五个byte
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!