蓝牙LE通道选择算法
这个例子向您展示了如何选择一个频道索引使用蓝牙核心规范中指定的通道选择算法(2使用蓝牙®工具箱)。
蓝牙LE渠道
蓝牙LE系统运行在2.4 GHz的ISM波段2400 - 2483.5 MHz。它使用40射频通道(每个通道宽2 MHz)。下图显示了频率和蓝牙之间的映射LE频道。这些射频通道分配一个独一无二的通道指数(图)贴上“通道”。
蓝牙LE分类这四十射频通道分成三个广告渠道(渠道指标:37、38、39)和37数据通道(通道指数:0 - 36)。注意广告渠道分布在2.4 GHz频段。这个宽间距的目的是为了避免干扰其他设备操作在同一光谱,如无线局域网。广告渠道主要用于传输广告包,扫描请求/响应数据包和连接指示数据包。数据通道主要用于数据包交换数据。
频道跳
频道跳蓝牙中用于减少干扰和提高吞吐量。切换频道的蓝牙标准定义了规则和算法执行时使用的通道跳跃。
使用未授权的2.4 ghz的ISM波段的几种无线技术会增加干扰和结果在收到数据包重发正确的错误。由于蓝牙勒是一个低能量的协议,它是更容易受到干扰。蓝牙LE使用频道跳对抗干扰的影响。当一个通道完全阻塞是由于干扰,设备仍然可以继续在其他渠道相互通信。
在蓝牙BR /功能,产品渠道跳跃仅限于1600跳/秒的频率。蓝牙勒,频道跳规范修正。不同的规则申请广告和连接设备,定义了两个通道选择算法。
广告设备传送广告包三个广告渠道以循环的方式(从通道指数37)。使用相同的程序扫描/启动设备,监听的三个广告渠道以循环的方式。
连接设备更改为每个连接事件到一个新的数据通道。事件是一个数据包序列连接两个连接设备之间的交流。定期连接事件发生的时间间隔称为连接时间间隔。连接事件中的所有数据包在传输相同的数据通道。一个新的连接事件使用新的数据通道。
两个可选蓝牙核心规范指定的通道选择算法(参见4.5.8 b部分,个2)可以用来选择为每个连接的数据通道事件:
算法# 1
算法2
两个通道选择算法避免渠道容易传输错误。一个通道地图中央和周边设备之间交换。这张地图显示了好的和坏的数据通道。好的和坏的分类数据通道是依赖于实现的,可以根据不同的参数,如信噪比(信噪比),每包错误率,只等。良好的数据用于设备之间的通信渠道。通道映射将由中央更新设备如果承认任何错误数据通道。两个通道选择算法使用通道地图来确定所选数据通道是良好的使用。如果所选数据通道是坏的,一个新的数据通道选择使用通道重新映射过程(参见4.5.8 b部分,个2),重新映射错误数据通道的一个良好的数据通道。每个算法都有一个自己的重新映射过程。
模拟算法# 1
您可以使用bleChannelSelection
系统对象来选择一个新的频道索引。这个系统所需的对象配置字段选择一个频道索引。
创建一个系统对象的算法# 1
选择一个频道索引,创建一个bleChannelSelection
系统对象算法
设置为1。
csa = bleChannelSelection (“算法”1);
配置字段。
的
HopIncrement
属性定义了跳增量计数。默认值是5。这个属性适用于“算法# 1”。的
UsedChannels
属性定义使用的列表(好)数据通道。
csa。HopIncrement = 8;csa。UsedChannels =[0、5、13日,9日,24日,36)
csa = bleChannelSelection属性:算法:1 HopIncrement: 8 UsedChannels: [0 5 9 13 24 36] ChannelIndex: 0 EventCounter: 0
ChannelIndex
是一个只读属性,显示当前正在使用的通道。EventCounter
是一个只读属性,显示连接事件发生的数量直到现在。增加每一个新的选择频道。
选择一个频道指数下一跳
调用对象csa
作为一个函数来确定下一个通道跳,选择一个新的通道为每个新连接的事件。
nextChannel = csa ();流(“选择渠道连接事件% d使用“算法# 1”:% d \ n ',csa。EventCounter nextChannel);
使用的算法选择渠道连接事件0 # 1”是:9
模拟算法# 2
您可以使用bleChannelSelection
系统对象来选择一个新的频道索引。这个系统所需的对象配置字段选择一个频道索引。
创建一个系统对象的算法# 2
选择一个频道索引,创建一个bleChannelSelection
系统对象算法
设置为2。
csa = bleChannelSelection (“算法”2);
配置字段。
的
AccessAddress
属性定义了32位独特的两个设备之间的连接地址。默认值是“8 e89bed6”。这个属性适用于“算法# 2”。的
UsedChannels
属性定义使用的列表(好)数据通道。
csa。AccessAddress =“E89BED68”;csa。UsedChannels =[9 10 21日,22日,23日,33岁,34岁,35岁,36)
csa = bleChannelSelection属性:算法:2 AccessAddress:“E89BED68”SubeventChannelSelection:假UsedChannels:[9 10 21日22日23日33 34 35 36]ChannelIndex: 0 EventCounter: 0
选择一个频道指数下一跳
调用对象csa
作为一个函数来确定下一个通道跳,选择一个新的通道为每个新连接的事件。
nextChannel = csa ();流(“选择渠道连接事件% d使用“算法# 2”:% d \ n ',csa。EventCounter nextChannel);
选定的通道连接事件0使用的算法# 2:22
GUI分析通道选择算法
这个函数helperBLEChannelHopSelectionUI提供了一个图形用户界面来生成所需的通道数量啤酒花分析算法。通道选择算法都可以使用这个GUI进行分析。它可以用来绘制通道跳跃模式算法的情节也相应的直方图。
helperBLEChannelHopSelectionUI ()
算法验证示例数据
提供样本数据来验证算法# 2(见第三节,6卷,一部分C [2])。然而,没有样本数据用于验证算法# 1。
样本数据1(37好的数据通道)
访问地址= 8 e89bed6
使用通道= [0:36]
使用上面的输入时,算法2号预计将选择以下渠道根据3.1节,b部分,个的2]
下面的代码选择三个通道为前三个连接事件。
%为“算法# 2”创建一个系统对象csa = bleChannelSelection (“算法”2);
配置字段# 1示例数据。
%连接访问地址csa。AccessAddress =“8 e89bed6”;%使用37个好的数据通道使用渠道根据样本数据csa。UsedChannels = (0:36);
选择通道指数为前4连接事件。验证所生成的输出与上面提到的表。
numConnectionEvents = 4;为i = 1: numConnectionEvents频道= csa ();流(“事件计数器:% d,所选频道:% d \ n ',csa。EventCounter、通道);结束
事件计数器:0,选择频道:25事件计数器:1,选择频道:20事件计数器:2,选择频道:6事件计数器:3,选择频道:21
样本数据2(9个好的数据通道)
访问地址= 8 e89bed6
使用频道=[9 10 21日,22日,23日,33岁,34岁,35岁,36)
使用上面的输入时,算法2号预计将选择以下渠道根据3.2节,b部分,个的2]。由于通道映射包含坏通道,通道重新映射过程中使用的算法也证实。
下面的代码选择八头八渠道连接事件。
%为“算法# 2”创建一个系统对象csa = bleChannelSelection (“算法”2);
配置字段# 2示例数据。
%连接访问地址csa。AccessAddress =“8 e89bed6”;%使用9好数据通道作为渠道根据样本数据csa。UsedChannels =[9 10 21日,22日,23日,33岁,34岁,35岁,36);
选择通道指数为1 - 9连接事件。验证所生成的输出与上面提到的表。
numConnectionEvents = 9;为i = 1: numConnectionEvents频道= csa ();流(“事件计数器:% d,所选频道:% d \ n ',csa。EventCounter、通道);结束
事件计数器:0,选择频道:35事件计数器:1,选择频道:9事件计数器:2,选择频道:33事件计数器:3,选择频道:21日事件计数器:4,选择频道:34事件计数器:5,选择频道:36事件计数器:6,选择频道:23事件计数器:7,选择频道:9事件计数器:8,选择频道:34
情节和分析跳跃模式——算法算法# 1和# 2
下面的代码选择频道指数第一几百连接使用“算法# 1”事件。选定的通道,相比“算法# 2”。
%通道选择算法对算法1的系统对象csa = bleChannelSelection;%生成频道跳序列为100连接事件numConnectionEvents = 100;numConnectionEvents hopSequence = 0 (1);为i = 1: numConnectionEvents hopSequence (i) = csa ();结束
的helperBLEPlotChannelHopSequence函数情节跳跃模式并输出所选频道的柱状图。
helperBLEPlotChannelHopSequence (csa, hopSequence);
下面的代码生成指数第一频道几百连接使用算法# 2的事件。选定的通道,相比“算法# 1”。
%通道选择算法系统对象为“算法# 2”csa = bleChannelSelection (“算法”2);%生成频道跳序列为100连接事件numConnectionEvents = 100;numConnectionEvents hopSequence = 0 (1);为i = 1: numConnectionEvents hopSequence (i) = csa ();结束
的helperBLEPlotChannelHopSequence函数情节跳跃模式并输出所选频道的柱状图。
helperBLEPlotChannelHopSequence (csa, hopSequence);
算法算法# 1和# 2
上面的情节显示两种算法之间的差异。
算法1是一个简单的增量算法,产生一系列统一的渠道。没有随机化过程中选择一个新的通道。
算法# 2是在版本5.0中引入的蓝牙核心规范。# 1算法相比,这是更复杂的,产生一个随机序列的通道。
结论
这个例子演示了通道选择算法的行为中指定的蓝牙核心规范(2]。
附录
本例使用这些助手:
helperBLEChannelHopSelectionUI:脚本helperBLEChannelHopSelectionUI图
helperBLEPlotChannelHopSequence:对于一个给定的频道跳频序列的算法
选定的参考书目
蓝牙技术的网站。“蓝牙技术网站|蓝牙技术的官方网站。”2021年11月25日通过。https://www.bluetooth.com。
蓝牙特别兴趣小组(团体)。“蓝牙核心规范。”Version 5.3.https://www.bluetooth.com/。