码迷,mamicode.com
首页 > 其他好文 > 详细

BLE的通道以及数据包结构

时间:2020-01-04 10:17:26      阅读:370      评论:0      收藏:0      [点我收藏+]

标签:pdu   prim   mamicode   fail   连接   lazy   结构   图片   orm   

 

技术图片

 

1. 通道(channel)

 

对于无线通信,数据是在某一频率上传输的,BLE采用频率是2.4GHz,频段范围是2.4000 GHz - 2.4835GHz,在这个范围内,又为40个通道,其中37,38,39通道是广播通道。其余37个通道是数据通道,如下图所示:

技术图片

 

从图中可以看到,40个通道并不是线性递增分布的,3个广播通道是分散的,BLE数据传输过程中采用跳频技术,而跳频的计算要就要考虑跳过广播通道,3个广播分散的另一个好处就是有利于避开干扰。

如下图所示,广播通道避开了部分802.11WIFI信道,其仍然有9个数据通道和802.11不重合。

 

技术图片

 

 

 

2. BLE设备之间交互的数据

 

在BLE设备建立连接之前,他们之间可以通过广播通道上(37,38,39 channel)交互数据,例如发送广播,扫描以及扫描回应,在建立连接之后,BLE设备之间在数据通道上交互数据。

BLE的数据可以概括为广播通道上传输的数据和数据通道上传输的数据:

  • 广播通道PDU:在广播通道上传送的数据。

  • 数据通道PDU:在数据通道上传送的数据。

     

 

3. BLE数据包结构

BLE规范中只有一个固定的包结构:

 

技术图片

 

每一个包都有四个部分组成:
  • 1-2字节的前导码preamble

  • 4个字节的接入地址Access Address,

  • 2-257个字节数据包PDU,

  • 3个字节的PDU校验码 CRC

 

Preamble:用于频率的同步,时间估计以及自动增益控制(AGC)等,对于广播通道的数据,前导码为:0xAA,对于数据通道,前导码为0xAA 或者0x55,当接入地址的最低位是1时,前导码是0x55,否则为0xAA.

当是1M PHY时,preamble是一个字节;

 当是2M PHY时,preamble是两个字节;

接入地址(Access Address):对于广播通道的数据,接入地址定义为0x8E89BED6,而对于数据通道的接入地址,每次设备建立连接时都不同,具体需要满足一定的规则,可以参考Version 4.2 [Vol 6, Part B] 2.1。接入地址和蓝牙地址是两个不同的概念,接入地址是为了同步用的,真正建立连接时使用的地址才是蓝牙地址。PDU: 分为两类:广播类型PDU (在广播通道上传送的PDU) 和数据类型PDU (在数据通道上传输的PDU) CRC: 是一个针对PDU校验的24位数据,CRC的算法定义可以参考PACKET FORMAT。

4. BLE的PDU分类

BLE的PDU分为两类,广播类型PDU和数据类型PDU,结构如下:

 

技术图片

 

PDU中前两个字节的是header,通过header的内容,就可展开PDU类型,分析具体的payload,在后面的章节中逐渐展开,例如,广播通道PDU进一步展开:

 

技术图片

 

 

技术图片

 

 

广播通道上的PDU数据总共有7个类型,分别为4 Advertising + 2 Scanning +1 Connect-request。

以此类推,就能分解出BLE所有的包。

 

我们先看看一个大的BLE PDU展开图:

 

技术图片

 

 

 

进一步的,要分析广播通道上的PDU,先分析这个包属于哪一类PDU,在找到该类型的PDU数据结构,进而解析具体含义。

 

 

技术图片

 

 
 
 

 

BLE的通道以及数据包结构

标签:pdu   prim   mamicode   fail   连接   lazy   结构   图片   orm   

原文地址:https://www.cnblogs.com/someone-device/p/12148055.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!