BLE控制器之链路层一

BLE 协议之链路层介绍

链路层是低功耗蓝牙体系里面最复杂的部分,它负责广播、扫描、建立和维护连接、以及确保数据包按照正确的方式组织、正确的计算校验值以及加密序列等。

链路层包含三个基本概念;信道、报文、过程

 

信道

首先来说信道,信道包含广播信道和数据信道。

低功耗蓝牙使用40个信道,所以其信道宽度比经典蓝牙的72个信道所使用信道宽度宽,为2MHz,而经典蓝牙信道宽度为1MHz。

广播信道

未建立连接的设备使用广播信道发送数据,总共3个,为37,38,39. 各个广播信道之间的频点相差至少24MHZ,这是为了提供抗干扰性而设计的。基本上和wifi等1,6,12等错开,

外设通过广播信道进行广播,通告自身为可连接或可发现的,并且执行扫描或者发起连接。

数据信道

连接后的设备则通过数据信道来进行数据传输。

跳频算法主要应用在数据信道中,跳频的简单理解为:

自适应调频能够将一个已知的坏信道映射到一个已知的好信道,从而减少其他设备对数据
报文传送的干扰,为了实现这一点,连接中的两个设备都要记录好、坏信道的映射关系,如
当前信道是一个好信道,则将其映射到好信道的集合中去。举例说明如下:
假设一个低功耗蓝牙设备处于使用wifi 1信道连续通信的wifi接入点和设备的干扰范围之内,
低功耗会将编号为0-8的链路层数据信道标记为坏信道。这意味着当两个设备通信的时候,它们
会循环切换这些坏信道,并将其映射到好信道之上。

自适应调频冲映射实例如下:

信道的重映射保证了低功耗蓝牙面对严重干扰时依然能够传输数据,这一机制能让设备迅速应对新的干扰。

在这两个信道上的数据发送均为小数据包,封装了发送者给接受者的少量数据,无论是广播信道还是数据信道,基本的数据包的格式相同,所不同的就是内容而已。每一个数据包包含有最少80比特的地址、报头和校验信息。

 

报文结构

 对报文结构进行解析一下。

1,传输顺序

传输时候是从低字节的低位开始传输的,比如:传输0x2513,其对应二进制为: 00100101     0001 0011, 则传输的时候是: 11001000 10100100,   即低字节3的低位开始。

2,前导字节

前导部分为01010101或者10101010 序列,取决于第一个bit是0还是1,用于接收者同步比特计时和设置自动增益控制。

接收机可以通过前导来检测信号强度以及0、1比特所使用的频率,从而确定自动增益控制来调整增益到一个合适的范围之内。

3,接入地址

32bit 接入地址在广播信道中为固定值:0x8e8dbed6, 而在数据信道数据包是完全随机的私有值。

广播接入地址主要在广播报文中使用。

为什么要选择0x8e8dbed6, 因为实际使用中发现其相关特性非常好,能够更大的抗干扰。

4,报头

8bit的包头字段描述数据包中的内容。包括报文类型,

对于广播报文来说,其类型有7种:

      

  • ADV_IND: 通用广播
  • ADV_DIRECT_IND 定向连接广播
  • ADV_NONCONN_IND 不可连接广播
  • SCAN_REQ 扫描请求
  • SCAN_RSP 扫描响应
  • CONNECT_REQ 连接请求
  • ADV_SCAN_IND 可扫描广播

数据报文的报头为:

广播报文和数据报文的长度域有所不同。这一设计的主要原因是,广播报文除了最多31个字节的数据外,还要包含6个字节的广播设备地址,6个字节加31个字节导致报文长度最多为37个字节,因此需要6bit的长度域,而数据报文长度不是那么关键,多数待传的数据只有几个字节,因此达到最大长度的报文很少用到。但是如果报文被加密,则需要包含4字节的消息完整性检查域,实际的净荷数据减少到最多27个字节,因此为了简化,即使不加密的报文净荷也不允许超过27个字节的限制。以减低链路层的复杂度。

 

5,长度

另一个8bit的长度的字段描述载荷的长度。要注意的是长度最大不超过37,所以8bit可以完全满足长度描述

数据部分就位变长的有效数据部分,包含了双方相互数据传输的有用信息。

可以发送的最短报文是空报文,时长为80us,满载时的最长报文时长376us。(因为物理层1us传输1个bit),大部分广播报文只有128us,而大部分数据报文时长为144us

 

posted @ 2017-12-06 19:58  云翔世界  阅读(727)  评论(0编辑  收藏  举报