蓝牙5 低功耗蓝牙LE controller层分析

蓝牙5  LE controller

版本号: 1.0

项目:  通用

类型:  规范

Power By 计科嵌入

目录

PHY 3

基础概念 3

BT5 PHY特性 4

LinkLayer 5

状态角色 5

设备地址 6

广播信道 6

包格式 7

广播信道数据包 9

数据信道数据包 14

数据白化 15

白名单 16

消息处理过程 16

上电待机过程 16

广播过程 16

初始化过程 17

连接状态 18

 

 

 

 

 

 

 

PHY层

基础概念

LE从2402~2480MHz每2MHz一个信道,总共40个信道和BT4.2保持一致。

 

BT5.0的最大发射功率从10dB提高到20dB。

 蓝牙5 低功耗蓝牙LE controller层分析_第1张图片

并且设置如下3中power class

 蓝牙5 低功耗蓝牙LE controller层分析_第2张图片

误码率如下所示

 蓝牙5 低功耗蓝牙LE controller层分析_第3张图片

对应的三种不同的LE PHY灵敏度

 蓝牙5 低功耗蓝牙LE controller层分析_第4张图片

BT5 PHY特性

蓝牙5三个特性中的传输距离提高4倍,吞吐率提高2倍。

在4.2及以前的版本中蓝牙低功耗在信道传输中未使用纠错编码技术,标准规定的基准灵敏度为-70dBm. 蓝牙5引入了卷积前向纠错编码(Convolutional Forward Error Correction Coding) 技术,提高了接收机的抗干扰能力,将接收机的参考灵敏度分别提高到-75dBm (S=2编码)和-82dBm (S=4编码), 同时提高了接收机的载干比(载干比:C/I=载波信号强度/干扰信号强度)性能。根据无线电波在自由空间传输损耗公式计算得出在相同发射功率的情况下将接收灵敏度从-70dBm提高到-82dBm后传输距离正好提高约4倍:蓝牙5 低功耗蓝牙LE controller层分析_第5张图片

不同PHY类型的LE对应的吞吐率

类别

吞吐率

LE uncoded 1M PHY

1Mb/s

LE uncoded 2M PHY

2Mb/s

LE coded s=2 PHY

500Kb/s

LE coded s=8 PHY

150Kb/s

蓝牙5 低功耗蓝牙LE controller层分析_第6张图片

与经典蓝牙在EDR (Enhanced Data Rate)中采用改变有效载荷的调制方式(从GFSK改变为π/4-DQPSK和8DPSK)不同蓝牙5.0直接通过带宽拓展提高符号传输率 (从1Ms/s提高到2Ms/s):

LinkLayer层

状态角色

BLE device状态机5中状态,2个角色如下所示

 蓝牙5 低功耗蓝牙LE controller层分析_第7张图片

序号

名称

中文

解释

对应设备类型

1

Standby State

待机状态

设备开机无信号接收

外围/中心设备

2

Advertising State

广播状态

向外发送广播

外围设备

3

Scanning State

扫描状态

扫描周围设备

中心设备

4

Initiating State

初始化状态

向目标设备发起连接

中心设备

5

Connection State

连接状态

和目标设备建立连接

中心设备

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

l Slave Role(从设备)

状态和角色组合

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

 

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

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

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

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

组合A

组合B

初始化状态+状态C

连接状态+状态C

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

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

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

 

连接状态(slave)+状态C

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

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

设备地址

设备地址的生成按照下图进行,其中私有地址又分为可解析地址和不可解析地址。如下图,

 

蓝牙5 低功耗蓝牙LE controller层分析_第8张图片

 

 

 

广播信道

BT5中将广播信道在原有的基础上进行扩展,复用数据信道作为副广播信道(secondary)。

 蓝牙5 低功耗蓝牙LE controller层分析_第9张图片

包格式

1. 如图为非编码PHY的包格式。

 蓝牙5 低功耗蓝牙LE controller层分析_第10张图片

Linklayer层的数据包前导码对于2M信道增加为2个字节,其他字段保持不变。并且在BT5中,对于非编码LE PHY数据包的传输时间做了详细的规定,数据包的传输时间在44~2120μs之间。

 蓝牙5 低功耗蓝牙LE controller层分析_第11张图片蓝牙5 低功耗蓝牙LE controller层分析_第12张图片

 

2. 如图为编码PHY(coded PHY)的包格式。

 蓝牙5 低功耗蓝牙LE controller层分析_第13张图片

对于编码LE PHY的传输时间如下,其中数据包前导码字段不进行编码,发送数据包的时间范围为462~17040 µs。

 蓝牙5 低功耗蓝牙LE controller层分析_第14张图片

其中CI(coded indication)字段采用两种默认定义如下

 蓝牙5 低功耗蓝牙LE controller层分析_第15张图片

广播信道数据包

BT5中三大宣传点之间的广播帧长度增加8倍,对比图如下,有效长度参数length从6bit扩展到8bit;有效字节扩展8倍从37bytes到255bytes。

 蓝牙5 低功耗蓝牙LE controller层分析_第16张图片

1. 广播状态

BT4.0广播数据包payload字段的长度为37bytes,以ADV_IND数据包为例如下图(其他类型参考core5.0文档):

 蓝牙5 低功耗蓝牙LE controller层分析_第17张图片

序号

字段

Bit

中文

解释

1

PDU type

4

数据包类型

共7种类型

2

TxAdd

1

发送方地址类型

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

3

RxAdd

1

发送方地址类型

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

4

Length

6

指示有效字段长度

有效长度6~37字节

5

RFU

2

保留未来使用

 

蓝牙5.0中三种的不同的物理层对应的数据包以及信道信息如下

 蓝牙5 低功耗蓝牙LE controller层分析_第18张图片

广播帧在原来BT4.0中的基础上增加4种,并且原来数据包为了兼容之前蓝牙版本,格式大小保持不变。

• ADV_IND
• ADV_DIRECT_IND
• ADV_NONCONN_IND
• ADV_SCAN_IND

新增的4种:
• ADV_EXT_IND
• AUX_ADV_IND
• AUX_SYNC_IND
• AUX_CHAIN_IND

DV_EXT_IND类型数据帧使用原始的广播信道(37,38,39),但不包含Advdata字段。以AUX_ADV_IND为例,使用副信道按照如下格式进行向外广播。

 蓝牙5 低功耗蓝牙LE controller层分析_第19张图片

C4表示在LE 1M PHY可选其他模式保留,X保留未来使用,M强制选用,O可选项。

2. 扫描状态

如果广播设备收到AUX_SCAN_REQ后,就会回复AUX_SCAN_RSP数据包,格式如下:

 蓝牙5 低功耗蓝牙LE controller层分析_第20张图片

3. 初始化状态

连接请求数据包和BT4.0格式相同,兼容老版本。

CONNECT_REQ事件包格式如下:

 蓝牙5 低功耗蓝牙LE controller层分析_第21张图片

transmitWindowSize =WinSize * 1.25 ms

transmitWindowOffset =WinOffset * 1.25 ms.

connInterval = Interval * 1.25 ms

connSlaveLatency =Latency

connSupervisionTimeout = Timeout * 10 ms(默认2S)

收到initiater发来的AUX_CONNECT_REQ请求后,会回复AUX_CONNECT_RSP数据包。

 蓝牙5 低功耗蓝牙LE controller层分析_第22张图片

4. 新增加的数据包格式

 蓝牙5 低功耗蓝牙LE controller层分析_第23张图片蓝牙5 低功耗蓝牙LE controller层分析_第24张图片

 

Extended Header Flags字段,每个bit对应Extended Header中字段的使能位。

 蓝牙5 低功耗蓝牙LE controller层分析_第25张图片

AuxPtr字段中

 蓝牙5 低功耗蓝牙LE controller层分析_第26张图片

其中的AUX PHY字段表明使用的LE PHY类型。

 蓝牙5 低功耗蓝牙LE controller层分析_第27张图片

数据信道数据包

1. 数据通道数据包

 蓝牙5 低功耗蓝牙LE controller层分析_第28张图片

只有在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

是否还有后续帧

2. 控制数据包

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

蓝牙5 低功耗蓝牙LE controller层分析_第29张图片

操作码

控制帧名称

解释

0x00

LL_CONNECTION_UPDATE_REQ

更新连接参数

0x01

LL_CHANNEL_MAP_REQ

设置跳频范围(37、38、39保留)

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~251bytes、328~2120ms)

0x15

LL_LENGTH_RSP

0x16

LL_PHY_REQ

指定发送接收方的PHY类型

0x17

LL_PHY_RSP

指定发送接收方的PHY类型

0x18

LL_PHY_UPDATE_IND

Master和slave的PHY类型

0x19

LL_MIN_USED_CHANNELS_IND

设置使用的LE PHY类型和信道

0x1A~FF

Reserved for Future Use

保留未来使用

数据白化

 蓝牙5 低功耗蓝牙LE controller层分析_第30张图片

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

白名单

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

Linklayer层应该根据白名单中的设备地址信息,在扫描连接过程对目标设备进行过滤。

消息处理过程

上电待机过程

主要完成读取controller地址,缓冲区大小等工作。

 蓝牙5 低功耗蓝牙LE controller层分析_第31张图片

广播过程

设置广播PHY类型、设置广播帧类型以及填充广播数据。

 蓝牙5 低功耗蓝牙LE controller层分析_第32张图片

初始化过程

创建ACL链路,完成连接参数的协商。

 蓝牙5 低功耗蓝牙LE controller层分析_第33张图片

连接状态

 蓝牙5 低功耗蓝牙LE controller层分析_第34张图片

 

你可能感兴趣的:(IOT,Bluetooth)