BT 4.2 低功耗蓝牙LE linklayer层解析

目录:

 1、物理层

2、BLE device状态机

3、LE信道数据包

4、数据白化

5、目标设备过滤

 

 

 

BLE全程为bluetooth low energy低功耗蓝牙。

 

1 LE物理层

 

LE物理层的射频通道范围和经典蓝牙射频通道相同2.400~2.4835GHz,不同之处是经典蓝牙是f=2402+K*1MHz相邻通道之间相差1MHzLEf=2402+K*2MHz相邻通道间相差2MHz(通道编号略有不同)。广播信道分别分布于前中后三个不同的段,避免广播扫描过程中相邻信道干扰。

 BT 4.2 低功耗蓝牙LE linklayer层解析_第1张图片

LE设备发射功率范围

 BT 4.2 低功耗蓝牙LE linklayer层解析_第2张图片

 

 

2. BLE device状态机如下所示

 BT 4.2 低功耗蓝牙LE linklayer层解析_第3张图片

2.1  5中状态,2个角色

 

序号

名称

中文

解释

对应设备类型

1

Standby State

待机状态

设备开机无信号接收

外围/中心设备

2

Advertising State

广播状态

向外发送广播

外围设备

3

Scanning State

扫描状态

扫描周围设备

中心设备

4

Initiating State

初始化状态

向目标设备发起连接

中心设备

5

Connection State

连接状态

和目标设备建立连接

中心设备

• Master Role(主设备)提供局域网中的clock时钟同步
• Slave Role(从设备)

状态和角色组合

1. 连接状态的链路层可能同时运行在masterslave角色(分别在两个不同的局域网中担任不同的角色)。

2.运行在slave角色和连接状态的链路层可能有多个连接。

3. 运行在master角色和连接状态的链路层可能有多个连接。

4. 连接状态下的连接层至少有建立一个连接。

如果支持左边组合A的状态,必须满足右边的状态组合B

组合A

组合B

初始化状态+C

连接状态+状态C

连接状态(master)+初始化状态+ 状态C

连接状态(master)和多个slave设备+状态C

可连接状态或者定向广播状态+状态C

连接状态(slave)+状态C

连接状态(slave)+可连接状态或者定向广播状态+状态C

连接状态(slave)连接多个设备+状态C

 

2.2  设备地址

如下图,

BT 4.2 低功耗蓝牙LE linklayer层解析_第4张图片

3. LE信道数据包

LE的数据包格式有两种,广播信道数据包和数据信道数据包。数据包格式如下

 BT 4.2 低功耗蓝牙LE linklayer层解析_第5张图片

包头(preamble)一个字节,接入码(access address)是4个字节,广播信道的接入码为固定值:10001110100010011011111011010110b (0x8E89BED6)。

3.1 广播信道数据包PDU字段

 BT 4.2 低功耗蓝牙LE linklayer层解析_第6张图片

 

序号

字段

Bit

中文

解释

1

PDU type

4

数据包类型

7种类型

2

TxAdd

1

发送方地址类型

0表示公共地址,1表示随机地址

3

RxAdd

1

发送方地址类型

0表示公共地址,1表示随机地址

4

Length

6

指示有效字段长度

有效长度6~37字节

5

RFU

2

保留未来使用

 

3.2 广播信道的数据包类型包含如下:

PDU Type

Packet Name

说明

所属状态机

0000

ADV_IND

可连接的不定向广播事件

广播状态

0001

ADV_DIRECT_IND

可连接的定向广播事件

广播状态

0010

ADV_NONCONN_IND

不可连接的不定向广播事件

广播状态

0011

SCAN_REQ

定向扫描请求

扫描状态

0100

SCAN_RSP

扫描回复

扫描状态

0101

CONNECT_REQ

连接请求

初始化状态

0110

ADV_SCAN_IND

可被扫描不可连接的不定向广播事件

广播状态

0111-1111

Reserved

 

 

 

3.3 CONNECT_REQ事件包格式如下:

 BT 4.2 低功耗蓝牙LE linklayer层解析_第7张图片

transmitWindowSize =WinSize * 1.25 ms

transmitWindowOffset =WinOffset * 1.25 ms.

connInterval = Interval * 1.25 ms

connSlaveLatency =Latency

connSupervisionTimeout = Timeout * 10 ms(默认2S

 

3.4  数据通道数据包

 BT 4.2 低功耗蓝牙LE linklayer层解析_第8张图片

只有在payload字段为非0的并且加密的数据通道数据包中,才使用MIC字段。

Field
name

Description

LLID

数据帧和控制帧都包含LLID字段。

00b = 保留
01b = LL Data PDU(数据帧): L2CAP帧的后续帧或者是空数据帧。

10b = LL Data PDU(数据帧): L2CAP包的开头或者完整的L2CAP

11b = LL Control PDU(控制帧)

NESN

下一个序列号

SN

序列号

MD

是否还有后续帧

3.4  控制数据包

控制帧的长度字段为固定的,设置为00000000b。

BT 4.2 低功耗蓝牙LE linklayer层解析_第9张图片

操作码

控制帧名称

解释

0x00

LL_CONNECTION_UPDATE_REQ

更新连接参数

0x01

LL_CHANNEL_MAP_REQ

设置跳频范围(373839保留)

0x02

LL_TERMINATE_IND

指示连接中断的原因

0x03

LL_ENC_REQ

加密请求

0x04

LL_ENC_RSP

加密回复

0x05

LL_START_ENC_REQ

加密请求

0x06

LL_START_ENC_RSP

加密回复

0x07

LL_UNKNOWN_RSP

未知操作码指示

0x08

LL_FEATURE_REQ

请求支持的特性

0x09

LL_FEATURE_RSP

回复支持的特性

0x0A

LL_PAUSE_ENC_REQ

暂停加密请求

0x0B

LL_PAUSE_ENC_RSP

暂停加密回复

0x0C

LL_VERSION_IND

指示controller版本和公司信息

0x0D

LL_REJECT_IND

拒绝控制命令指示

0x0E

LL_SLAVE_FEATURE_REQ

NA

0x0F

LL_CONNECTION_PARAM_REQ

连接参数请求

0x10

LL_CONNECTION_PARAM_RSP

连接参数回复

0x11

LL_REJECT_IND_EXT

扩展拒绝控制命令指示

0x12

LL_PING_REQ

握手包?

0x13

LL_PING_RSP

握手包?

0x14

LL_LENGTH_REQ

请求发送接收的字节和交互时间(27~251bytes328~2120ms

0x15

LL_LENGTH_RSP

0x16~FF

Reserved for Future Use

保留未来使用

 

 4.  数据白化

数据白化的目的是减少多个连续的01出现。由于连续的低电平或者高电平可能导致信号识别异常,因此采用白化方式处理数据减少空中传输过程中的数据异常。

 BT 4.2 低功耗蓝牙LE linklayer层解析_第10张图片


5. 目标设备过滤白名单

host配置白名单,填充目标设备的蓝牙地址,进行对应的广播扫描连接不同操作的过滤,不用频繁的唤醒host,即背景扫描,达到省电降功耗的目的。

 

 

 

 


你可能感兴趣的:(IOT)