深入理解蓝牙BLE之“信道管理”

原文地址::深入理解蓝牙BLE之“信道管理”_GuoFeng.Wan的博客-CSDN博客_ble 信道

相关文章

1、低功耗蓝牙(BLE)的信道划分及跳频机制 #理论与现实#----低功耗蓝牙(BLE)的信道划分及跳频机制 #理论与现实# - 知乎 

目录

一.BLE的调制解调:

二.BLE的信道:

三.BLE的广播信道:

四.BLE的数据信道:

五.BLE信道管理:

5.1广播信道的随机延时:

5.2数据信道的调频算法:

跳频算法1:

跳频算法2:

自适应跳频:

六.BLE与WiFi的射频干扰:

一.BLE的调制解调:
低功耗蓝牙采用了高斯频移键控2GFSK-BT0.5的调制方式。

二.BLE的信道:
BLE频段范围是2.4000 GHz - 2.4835GHz,在这个范围内,又划分为40个channel,频段带宽是2MHz,其中37,38,39通道是广播通道。其余37个通道是数据通道,如下图所示:

注意:37,38,39信道并不是挨着的,而是分散在数据信道之中。

BLE数据传输过程中采用跳频技术,一个好处就是有利于避开干扰。

BLE有12个channel与wifi的常用信道(1,6,11)不重合,其中3个是广播channel(37,38,39),广播通道避开了部分802.11WIFI信道,如下图所示:

三.BLE的广播信道:
广播信道指的是37,38,39三个信道,这三个信道上只可以发送广播包。

四.BLE的数据信道:
数据信道指的是0~39信道中除去挂广播信道的剩余所有信道。

数据信道在4.2版本及其之前的版本,只可用来发送数据包,不能发送广播包;

数据信道在5.0版本及以后,也可以用来发送广播包,这37个信道在发送广播数据时叫做“次要广播信道”,主要广播信道还是在37,38,39三个信道上。

五.BLE信道管理:
5.1广播信道的随机延时:
广播信道是所有BLE设备共用的三个信道,每包广播数据,都会在三个信道上发送一次。

这三个信道是所有BLE设备共用的,为了避免广播信道上的数据产生冲突,广播信道发包策略约定如下:

1.每一个广播包实际发送的adv interval,均会+10ms以内的随机延时,避免和其他设备产生冲撞。这意味着即使两个设备广播间隔相同,并在相同的信道及时间点上发送造成了冲突,它们发送下一个广播事件时也很可能不再冲突。

2.广播信道不允许发送超过37字节的数据,减少广播信道的payload。

3.广播信道发送的adv interval分为:

high duty:主要针对定向广播,adv interval可以设置为最小3.75ms,但是最多仅允许发送1.28s以上的广播时间。

low duty:非定向广播之外的其他广播,adv interva最小可以支持20ms,最大10.28s(0.625ms的倍数),每次发送再加上10ms的随机延时,也就是20ms~30ms的adv interval。其中不可连接广播包最小100ms,但是vendor一般都没有这个限制,mesh消息就是一种不可链接的广播包。

vendor定制:芯片原厂可以针对用户需求,调整low duty的adv interval,将它调整为小于20ms,但是会牺牲掉其他功能(以mtk为例,可以发送密集的mesh包,但是这个期间无法接收,发送独占了天线,接收轮不到调度)。

4.广播信道不支持5.0协议的2M PHY的传输速率。

5.2数据信道的调频算法:
AFH(advance frequence hopping)跳频算法仅适用于数据信道的选择(除去37,38,39信道的剩余37个信道),在两个设备建立连接的时候,在CONNECT_IND消息中(connect request)会带着hop值和Channel Map(一共37个bit,为1表示对应的channel可用,为0表示对应的channel不可用)。

跳频算法1:
F(n+1) = (F(n)+hop)mod37

F(n)为初始信道,初始为0,F(n+1)为下一个跳频的信道,其中hop为5~16范围内的值,

低功耗蓝牙#1信道选择算法的具体流程如下:

基本跳频算法: fn+1 = (fn + hop) mod 37,fn为上一次连接事件使用的信道索引(初始连接时此值为0);fn+1为首次计算得到的下一次连接事件使用的信道索引;hop为跳频参数值,取值范围为5到16,由中心设备决定并在发起连接时通知与其连接的周边设备;mod为求余运算符。
根据以上基本跳频算法计算后当fn+1为信道地图中的可用信道时则直接使用。
根据以上跳频算法计算后当fn+1为信道地图中的不可用信道时则按以下重新计算算法进行计算。
重新计算算法: fnew = (fn+1) * mod N, fnew为重新计算得到的下一次连接事件使用的信道编号(信道地图中的可用信道从0开始升序编号), N指可用信道数量。
低功耗蓝牙(BLE)的信道划分及跳频机制 #理论与现实# - 知乎 (zhihu.com)

举例:

设fn=0, hop=7, 信道地图中的可用信道=[9, 10, 21, 22, 23, 33, 34, 35, 36],Channel Map指定。
fn+1=(0 + 7) mod 37=7, 因为7为不可用信道,需要重新计算。
fnew=7 mod 9 (可用频道数) = 7, 则fnew= 编号为7的可用信道=35。
下一次连接事件使用信道索引为35的信道,即2476MHz。
跳频算法2:
跳频的信道选择算法#2(CSA#2)是更复杂和更难跟踪用于获得下一个连接事件的信道索引的算法,功耗更低,跳频#2和跳频#1一样的地方是都有一张约定的跳频表;不一样的是跳频阶跃的值,跳频算法1的跳频阶跃值是固定的,也即是hop是一个固定的值,跳频算法2的跳频阶跃是通过算法计算出来的,也就是hop不是一个固定值。

 The 6-bit input N is the number of channels classified as Used channels.

The 16-bit input channelIdentifier is fixed for any given connection or

periodic advertising train; it is calculated from the Access Address by:

channelIdentifier = (Access Address31-16) XOR (Access Address15-0)

另外一个不一样的是跳频#2可以用在广播信道和连接信道,跳频#1只适用于连接信道。

自适应跳频:
1.大多数蓝牙控制器能够进行被动式频段扫描,在无需主机任何帮助的情况下,确定干扰的范围和程度,这个功能叫做电磁环境评估侦测。SIG规范没有规定如何识别不良信道,这一过程通常被称为“信道评估”,因此AFH算法工程师面临着为每个特定解决方案选择最合适方法的任务。目前,有两种主要的方法用于执行具有自适应跳频的信道评估:RSSI(接收信号强度指示)和PER(分组错误率)。

2.主设备通过信道图请求报文LL_CHANNEL_MAP_REQ向从设备发送自适应跳频更新信息,其中包含下面两个参数:

新的信道图:channel Map

瞬时:设备双方使用新的channel Map的切换时间。

3.更新channel Map的动作,只有由主设备发起。

六.BLE与WiFi的射频干扰:
经过经验实测,WiFi的Channel 4,对BLE的广播干扰最大(例如蓝牙mesh消息),因为WiFi的channel 4的中心频点是2427,与蓝牙BLE的38信道的中心频点2426高度重合,因此会把38广播信道的数据大部分都干扰掉。


————————————————
版权声明:本文为CSDN博主「GuoFeng.Wan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wanguofeng8023/article/details/126608988

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝牙低功耗(BLE)是一种低能耗的无线通信技术,广泛应用于物联网设备和智能手机等设备之间的数据传输。Qt是一种跨平台应用程序框架,提供了各种功能库和工具,可以方便地进行程序开发。 在GitHub上,有一些与Qt蓝牙BLE编程相关的示例代码。这些示例代码展示了如何使用Qt框架来开发和管理BLE设备的连接和数据交互。这些示例代码通常包含了与BLE设备进行通信的基本步骤和函数。 在Qt的BLE编程示例中,通常会包含以下几个关键步骤: 1. 初始化BLE适配器:通过调用适配器初始化函数,初始化系统的蓝牙适配器,并确保其处于可用状态。 2. 搜索BLE设备:使用适配器的搜索函数,扫描周围的BLE设备,并获取设备的名称、MAC地址等信息。 3. 连接到BLE设备:使用适配器的连接函数,与目标BLE设备建立连接。 4. 发送和接收数据:使用适配器提供的接口函数,向BLE设备发送数据并获取设备返回的数据。 5. 断开BLE设备连接:使用适配器的断开连接函数,与BLE设备断开连接。 这些示例代码通常会提供详细的注释和说明,以帮助开发者理解每个步骤的具体实现和原理。开发者可以根据自己的需求,参考这些示例代码进行二次开发,完成特定的功能需求。 总而言之,Qt的蓝牙BLE编程示例代码提供了开发者一个快速入门的指南,帮助他们利用Qt框架开发和管理蓝牙BLE设备的连接和数据交互。通过这些示例代码,开发者可以更好地理解和应用BLE技术,实现各种物联网和智能设备的相关功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值