AN1297:使用Silicon Labs蓝牙协议栈的定制测向解决方案


KEY POINTS

  • Constant Tone Extension 恒定音调扩展
  • Antenna Switching 天线转换
  • IQ samples IQ样本
  • Phase compensation 相位补偿

蓝牙 5.1 通过添加在蓝牙数据包之后发送和接收恒定音调扩展 (CTE) 的选项来引入对测向的支持。 这使得测量不同天线上的输入信号的相位成为可能。 但是,根据测量相位计算输入信号的方向是应用程序的责任,而不是蓝牙堆栈的责任。 本文档解释了堆栈和应用程序之间关于相位测量的接口,以便能够使用 Silicon Labs 的蓝牙堆栈实现自定义测向解决方案。 本文档中的信息提供了使用 Silicon Labs 可定制参考实现的替代方法,适用于对测向算法有深入了解并喜欢开发自己的解决方案的开发人员。

喜欢从 Silicon Labs 可定制测向解决方案入手的开发人员应参考 AN1296:使用 Silicon Labs RTL 库而不是本文档进行应用程序开发。

1 简介

本文档解释了 Silicon Labs 蓝牙堆栈如何支持测向。在继续之前,读者必须具备测向的基本知识。要了解基础知识,请参阅 UG103.18:Bluetooth® 测向基础知识。还推荐阅读蓝牙 SIG 发布的蓝牙测向技术概述:https://www.bluetooth.com/wpcontent/uploads/Files/developer/1903_RDF_Technical_Overview_FINAL.pdf。

测向是估计入射信号的角度,它基于天线阵列的概念,其中在空间中特别布置的多个天线对相同的参考信号进行采样。参考信号是连续波,其中频率和相位在足够长的时间间隔内保持,以便在所有天线上采样。然后,样本被转换成相位差,相位差被转换成角度估计。

由于蓝牙 5.1 引入了可以在常规蓝牙数据包之后应用的恒定音调扩展 (CTE),Silicon Labs 蓝牙堆栈可以在不同的天线上对这些扩展进行采样,并将天线样本提供给应用程序。本文档介绍了天线样本格式。任何想要实现自己的测向应用程序的人都可以使用这些样本,该应用程序将天线样本转换为角度估计。

如果您不熟悉测向,或者您熟悉该概念但对角度估计器算法没有深入了解,Silicon Labs 强烈建议在您的应用程序中使用 RTL 库。 RTL 库提供了一个完整的解决方案来计算来自真实世界环境中天线样本的输入信号的角度。要了解有关 SiliconLabs 解决方案的更多信息,请参阅 AN1296:使用 Silicon Labs RTL 库进行应用程序开发。如果您决定使用 Silicon Labs RTL 库继续开发,您可以跳过本文档。

2 恒定音调扩展

2.1概念

为了确定入射信号的角度,必须在足够长的时间周期内发射相位连续、幅度恒定、频率恒定的信号,以供所有接收天线采样。不建议在测试环境之外长时间发射CW(连续波)信号,因为它具有非常尖锐的频谱,会对工作在2.4 GHz频率范围内的其他设备造成严重干扰。因此,必须使用短CW,并且发射机和接收机必须同步,以便双方都知道何时发送CW信号。

可以找到许多解决方案来克服这个简单的问题,事实上,市场上已经有许多室内定位解决方案使用测向算法。然而,它们都不是基于众所周知的标准。相比之下,蓝牙标准非常普遍,它本身就解决了同步问题:蓝牙数据包以非常严格的时序发送,对等设备在每次接收时重新同步它们的时钟。

蓝牙5.1引入了一种新的方法来请求和发送短CW信号,作为普通包的扩展。这种扩展称为CTE(Constant Tone Extension ),当请求时,它在包的CRC之后发送。

CTE既可以通过连接发送(在接收到LL_CTE_REQ数据包后的LL_CTE_RSP数据包中),也可以通过定期广告发送(在AUX_SYNC_IND数据包中)。此外,硅实验室蓝牙堆栈提供了一种非标准解决方案,其中cte可以在扩展广告(AUX_ADV_IND数据包)中发送,这使得测向在要定位的资产数量方面更具可扩展性。有关cte的更多信息,请参见蓝牙核心规范v5.1或更高版本。

2.2发送和接收CTEs

要在连接上启用cte响应,请在CTE发送器端使用API sl _ Bt _ cte _ transmitter _ enable _ connection _ cte()。要将CTE请求从接收方发送到发送方,请在接收方使用API sl _ Bt _ cte _ receiver _ enable _ connection _ cte()。如果在发射器端启用了CTE响应,蓝牙堆栈会自动用CTE响应来响应每个CTE请求。

要在周期性广告中传输cte,首先在发送方启动一个周期性广告程序,然后使用API sl _ Bt _ cte _ transmitter _ enable _ connectionless _ cte()。要开始侦听附加到定期广告的cte,首先在接收端建立定期同步,然后使用API sl _ Bt _ cte _ receiver _ enable _ connectionless _ cte()。

要在Silicon Labs专有的扩展广告中传输cte,首先在发射器端启动一个(常规的)扩展广告,然后使用API sl _ Bt _ cte _ transmitter _ enable _ sil ABS _ cte()。要开始侦听附加到Silicon Labs专有扩展广告的cte,首先在接收器端开始扫描,然后使用API sl _ Bt _ cte _ receiver _ enable _ sil ABS _ cte()。

每当蓝牙堆栈接收到CTE(通过连接或广告),蓝牙堆栈就会引发iq_report事件。根据传输模式的不同,这意味着sl _ Bt _ evt _ cte _ receiver _ connection _ IQ _ report事件、sl _ Bt _ evt _ cte _ receiver _ connectionless _ IQ _ report事件或sl _ Bt _ evt _ cte _ receiver _ si labs _ IQ _ report事件。每个事件包括一组智商样本。以下部分详细说明了这些示例的含义以及如何解释它们。

注意:要使上面列出的API工作,需要在您的项目中安装CTE发射机和CTE接收机软件组件。有关API的更多信息,请参见http://docs.silabs.com的蓝牙API参考。

3 解读IQ样本

3.1取样

虽然恒定音调扩展是一个简单的连续波,长度在16 μs至160 μs之间变化,但它被划分为蓝牙核心规范(第6卷,B部分,第2.5节)中定义的周期。

恒定音调扩展的前4 μs称为保护期,接下来的8 μs称为参考期。参考周期后,恒定音调扩展由一系列交替的开关时隙和样本时隙组成,每个时隙的长度为1 μs或2 μs,由使用CTE发射机和CTE接收机API的应用指定。2μs时隙使得在天线之间使用具有更长转换时间的更便宜的RF开关成为可能。1μs时隙使得对每个天线进行多次采样成为可能,这有助于降低噪声影响,提高精度。

一旦CTE启动,无线电就开始以其固有采样率对基带信号的同相(I)和正交(Q)分量进行采样。然后,样本被下采样至1样本/μs采样速率。前4个样本(在保护周期中获取)被丢弃,然后8个样本(在参考周期中获取)被存储在样本缓冲器中。最后,丢弃在交换时隙中获取的每个样本,并将在样本时隙中获取的每个样本存储在样本缓冲器中。在2μs时隙的情况下,每个样本时隙仅保留一个样本。存储的样本在上图中用实心圆标记。

此时,N = 8+(L–12)/2/S个样本同时存在于同相(I)和正交(Q)样本缓冲器中,其中L是CTE的长度,单位为微秒,S是时隙的长度,单位为微秒。I和Q样本被合并到具有2N个元素的公共IQ样本缓冲器中,使得I和Q样本彼此交替跟随:

I(0),Q(0),I(1),Q(1),I(2),Q(2),I(3),Q(3),… I(N),Q(N)。

该IQ样本缓冲区被传递给应用程序进行进一步处理。

3.2天线切换

CTE的目标是能够在不同的天线上采样相同的连续波。由于无线电一次只能在一个天线上采样,因此必须在天线之间创建一个RF路径交换网络,如下图所示。

这样,任何天线都可以通过控制引脚与EFR32连接。蓝牙堆栈的设计使得它可以在CTE接收期间驱动多达6个输出引脚来控制RF开关。借助这一解决方案,最多可处理64根天线。例如,在上图中,四个天线可以用以下地址寻址:

可以在Platform > Radio > RAIL Utility、AoX软件组件的配置文件中选择六个控制引脚。

天线切换模式,即寻址不同天线的顺序,可通过蓝牙API参考中所述的CTE接收器和CTE发射器蓝牙API进行设置。蓝牙堆栈根据定义的切换模式自动控制CTE的切换插槽中的天线切换引脚。切换模式可以具有1到35之间的任何长度。它在CTE时间周期内重复,换句话说,一旦到达模式的末端,它就重新开始,并且这被重复直到CTE信号的末端。请注意,第一次切换发生在参考周期之后,这意味着模式中的第一个天线将被采样8次。

考虑到所有这些,转换模式[4 3 2 1]产生了以下IQ样本:

其中索引表示天线的地址。注意,地址不一定必须是从0开始的连续值。地址可以是0到63之间的任何值,并且它们应该总是从RF交换网络获得。

3.3相位检索

IQ样本以uint8数组的形式传递给应用程序,每个I和Q样本占用1-1个字节。但是,请注意,I和Q样本是有符号整数,这意味着应用程序从蓝牙堆栈收到uint8值后,必须立即将其转换为int8值。使用uint8值只是BGAPI的一个限制。

I和Q样本代表信号的同相和正交分量,可以很容易地转换为幅度和相位:

注意,幅度不代表信号的绝对幅度,因为它是用AGC(自动增益控制)补偿的。要了解信号的绝对幅度,还必须考虑RSSI。测向算法通常不需要这样做,因为重要的是天线之间的相位差和幅度差。

3.4相位补偿

理想情况下,所有天线应同时采样,以便轻松计算它们之间的相位差。然而,这对于单个无线电来说是不可能的。对多个天线进行采样的唯一方法是时分,这也意味着采样在时间上发生偏移。

时移也意味着

【译】AN1297:使用Silicon Labs蓝牙协议栈的定制测向解决方案相关推荐

  1. 第一章 Silicon labs BLE 开发介绍

    Silicon labs BLE 开发人员指南 介绍 该文档涵盖了各个方面的发展,并且是对使用C开发的所有运行Bluetooth堆栈的Wireless Gecko产品的所有人的重要参考. 该文档涵盖以 ...

  2. Silicon Labs收购业界RTOS厂商

    Silicon Labs (芯科科技) 宣布收购物联网(IoT)即时作业系统(RTOS)软体供应商Micrium.此一策略性收购整合业界商业级嵌入式RTOS 与Silicon Labs在物联网的专业与 ...

  3. ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-2-02:资源包详解

    [源码.文档.软件.硬件.技术交流.技术支持,入口见文末] [所有相关IDE.SDK和例程源码均可从群文件免费获取,免安装,解压即用] 持续更新中,欢迎关注! 一.获取资源包 本教程使用的全部资源包, ...

  4. ZigBee Silicon Labs/Ember EFR32MG/EM357 1.1 总体框架

    开启ZigBee新篇章,陆续更新,欢迎关注~ 第一章 总体框架 (已发布 V1 20180201)ZigBee Silicon Labs/Ember EFR32MG/EM357 1.1 总体框架(&l ...

  5. ARM平台上蓝牙协议栈Bluez的移植使用和配置

    版权所有,转载请注明出处http://blog.csdn.net/gatieme/article/details/48751743 参考 http://blog.csdn.net/lizzywu/ar ...

  6. AliOS Things蓝牙协议栈及应用开发框架介绍

    摘要: AliOS Things从1.2.0版本开始支持蓝牙协议栈(BLE),及基于蓝牙协议栈的应用层开发框架.本文分为三部分对蓝牙组件进行介绍:蓝牙组件,蓝牙协议栈介绍及接口说明,和应用开发框架介绍 ...

  7. 连接蓝牙demo_【BTS001】开源蓝牙协议栈BTStack初体验

    BTStack是一款开源的蓝牙协议栈,它具有很高的可配置性和极小的内存占用量,非常适合小型的.资源有限的设备,例如8或16位嵌入式系统. 支持以下Protocols和Profiles: Protoco ...

  8. 蓝牙协议栈中的 OSAL

    蓝牙协议栈里的操作系统叫做 OSAL(操作系统抽象层).它并非一个真正意义上的操作系统,它只是实现了操作系统的一些功能,如任务切换.内存管理. OSAL 产生的根源:基于蓝牙协议栈开发的产品,实际上是 ...

  9. csr 蓝牙驱动_【BTS001】开源蓝牙协议栈BTStack初体验

    BTStack是一款开源的蓝牙协议栈,它具有很高的可配置性和极小的内存占用量,非常适合小型的.资源有限的设备,例如8或16位嵌入式系统. 支持以下Protocols和Profiles: Protoco ...

最新文章

  1. 7 OC 中class 类的结构
  2. Eval和Bind的区别
  3. userdel、usermod、newgrp、chown、chgrp、手动添加用户、umask
  4. 006-1MOS管工作原理精讲
  5. 第一行代码学习笔记第七章——探究内容提供器
  6. Win关闭开启软件时的弹窗
  7. 2008高考零分作文---大事与小事
  8. docker小实战和应用
  9. vue js xlsx 读取 本地 excel
  10. TPC-C中跑赢Oracle的OceanBase,最近有何惊艳?
  11. 9年120亿,美的数字化转型纪实
  12. Python3入门机器学习经典算法与应用 第3章 读取数据和简单的数据探索
  13. 【Android病毒分析报告】- 手机支付毒王“银行悍匪”的前世今生
  14. 如何在计算机管理设置开机密码,电脑怎么设置开机密码 开机密码设置步骤
  15. HTML5中多媒体标签之音频标签
  16. 从科技创新到产业落地
  17. ffmpeg 图片合成视频
  18. 【Linux系列文章】克隆虚拟机与常用问题
  19. c语言.jpg图片转成数组_jpg图片不仅能转成PDF文档格式,还可以一键合并!
  20. 成都远石:“无人机倾斜摄影+地面激光扫描”数据解决方案

热门文章

  1. Verilog基础知识总结02
  2. 单反常用的快门速度大概是多少
  3. Splunklive!2018北京站激情开场:合格的大数据处理平台到底是什么样子?
  4. Android自定义Drawable第十五式之啡常OK
  5. 97-things-every-programmer-should-know-1: 谨慎行事
  6. 移动端UI设计规范参考
  7. 多版本node安装相关知识
  8. 传说对决美服服务器维护,如何进入传说对决美服 | 手游网游页游攻略大全
  9. AD 绘图专题:无法切换中间层、无法中间层走线
  10. 网络购书挑战书业传统营销模式