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

发布于:2023-01-04 ⋅ 阅读:(4816) ⋅ 点赞:(4)

目录

一.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信道选择算法的具体流程如下:

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

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

举例:

  1. 设fn=0, hop=7, 信道地图中的可用信道=[9, 10, 21, 22, 23, 33, 34, 35, 36],Channel Map指定。
  2. fn+1=(0 + 7) mod 37=7, 因为7为不可用信道,需要重新计算。
  3. fnew=7 mod 9 (可用频道数) = 7, 则fnew= 编号为7的可用信道=35。
  4. 下一次连接事件使用信道索引为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广播信道的数据大部分都干扰掉。

本文含有隐藏内容,请 开通VIP 后查看