提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文章目录

  • 前言
  • 一、广播信道
  • 为什么要选择37,38,39做广播通道呢?
  • 二、广播数据包格式
  • 三、广播间隔



前言

蓝牙广播内容字段是包含在蓝牙广播数据包中的信息块,用于标识广播设备、提供有关设备的信息以及支持各种应用。


一、广播信道

  BLE设备共40个信道,频段范围从2402MHz到2480MHz,其中37,38,39是广播信道,其余37个作为数据信道或辅助广播信道。

Android 蓝牙解析广播包 蓝牙广播数据格式_帮助文档

Android 蓝牙解析广播包 蓝牙广播数据格式_自动生成_02

为什么要选择37,38,39做广播通道呢?

我们可以看看wifi传输信道情况,这样设计可能是为了最大程度避开wifi传输信道的干扰,影响广播扫描配对。配对成功后,蓝牙传输支持channel hop功能来做抗干扰。

Android 蓝牙解析广播包 蓝牙广播数据格式_数据_03

二、广播数据包格式

  蓝牙广播数据包的主要格式:一个广播包是由若干个广播单元AD Structure构成的。每个广播单元的组成是:第一个字节是长度值 length,表示接下来的 length个字节是数据部分;数据部分的第一个字节表示数据的类型AD Type,决定了AD Data的数据代表的是什么以及怎么解析,广播数据最长31字节。

  广播内容和扫描回复内容的格式定义是通用的。都是长度+数据的方式,其中数据又分成类型+实际数据,如下图:

Android 蓝牙解析广播包 蓝牙广播数据格式_数据_04

上图可能不够直观,这里再简单列个例子:

Android 蓝牙解析广播包 蓝牙广播数据格式_自动生成_05

三、广播间隔

  设备每次广播时,会在3个广播信道发送相同的报文。这些报文报文的动作被称为一个广播事件。除了定向广播外,其他广播事件均可以选择20ms-10.28s不等的间隔。通常,一个广播中的设备会每一秒广播一次。两个相邻的广播事件之间的时间被称为“广播间隔”。

  广播间隔的取值范围是20ms ~ 10.24ms之间,单位为0.625;

  advInterval链路层会再每个广播事件期间产生一个随机广播延迟时间(0ms and 10ms),这个延迟是会被加在广播中间中,这样来避免多个设备之间数据碰撞。
  两个相邻的广播事件之间的时间间隔T_advEvent为:

T_AdvEvent = advInterval + advDelay

Android 蓝牙解析广播包 蓝牙广播数据格式_帮助文档_06


Android 蓝牙解析广播包 蓝牙广播数据格式_数据_07