BT 4.2 低功耗蓝牙LE linklayer层解析
来源:互联网 发布:条码检查软件系统 编辑:程序博客网 时间:2024/05/22 03:45
目录:
1、物理层
2、BLE device状态机
3、LE信道数据包
4、数据白化
5、目标设备过滤
BLE全程为bluetooth low energy低功耗蓝牙。
1 LE物理层
LE物理层的射频通道范围和经典蓝牙射频通道相同2.400~2.4835GHz,不同之处是经典蓝牙是f=2402+K*1MHz相邻通道之间相差1MHz;LE是f=2402+K*2MHz相邻通道间相差2MHz(通道编号略有不同)。广播信道分别分布于前中后三个不同的段,避免广播扫描过程中相邻信道干扰。
LE设备发射功率范围
2. BLE device状态机如下所示
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. 连接状态的链路层可能同时运行在master和slave角色(分别在两个不同的局域网中担任不同的角色)。
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 设备地址
如下图,
3. LE信道数据包
LE的数据包格式有两种,广播信道数据包和数据信道数据包。数据包格式如下
包头(preamble)一个字节,接入码(access address)是4个字节,广播信道的接入码为固定值:10001110100010011011111011010110b (0x8E89BED6)。
3.1 广播信道数据包PDU字段
序号
字段
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事件包格式如下:
transmitWindowSize =WinSize * 1.25 ms
transmitWindowOffset =WinOffset * 1.25 ms.
connInterval = Interval * 1.25 ms
connSlaveLatency =Latency
connSupervisionTimeout = Timeout * 10 ms(默认2S)
3.4 数据通道数据包
只有在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。
操作码
控制帧名称
解释
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~FF
Reserved for Future Use
保留未来使用
4. 数据白化
数据白化的目的是减少多个连续的0或1出现。由于连续的低电平或者高电平可能导致信号识别异常,因此采用白化方式处理数据减少空中传输过程中的数据异常。
5. 目标设备过滤白名单
由host配置白名单,填充目标设备的蓝牙地址,进行对应的广播扫描连接不同操作的过滤,不用频繁的唤醒host,即背景扫描,达到省电降功耗的目的。
- BT 4.2 低功耗蓝牙LE linklayer层解析
- 蓝牙5 低功耗蓝牙LE controller层分析
- Bluetooth LE(低功耗蓝牙) - 第一部分
- Bluetooth LE(低功耗蓝牙) - 第二部分
- Bluetooth LE(低功耗蓝牙) - 第三部分
- Bluetooth LE(低功耗蓝牙) - 第四部分
- Bluetooth LE(低功耗蓝牙) - 第五部分
- Bluetooth LE(低功耗蓝牙) - 第一部分
- Bluetooth LE(低功耗蓝牙) - 第二部分
- Bluetooth LE(低功耗蓝牙) - 第三部分
- Bluetooth LE(低功耗蓝牙) - 第四部分
- Bluetooth LE(低功耗蓝牙) - 第五部分
- Bluetooth LE(低功耗蓝牙) 系列
- Bluetooth LE(低功耗蓝牙) - 第六部分(完)
- Bluetooth LE(低功耗蓝牙) - 第六部分(完)
- LE gatt 第三方应用无法搜索到蓝牙低功耗设备
- TI_ble低功耗蓝牙
- 蓝牙设计 低功耗
- js原型链的形式实现类继承
- JavaScript核心参考手册.chm
- 计算机语言发展史的个人理解
- 17-JSCPC&&CCPC中南赛区 D-Super Resolution-字符串签到
- 函数句柄 Function Handle MATLAB
- BT 4.2 低功耗蓝牙LE linklayer层解析
- 袋鼠妈妈找孩子 2017 华东师范大学网赛
- spring事务(声明式和编程式)
- 两会花絮:上会外国记者也豁出去了
- 《JavaScript权威指南(第六版)》.(美)David.Flanagan.中文扫描版.pdf
- 统计学习方法
- PIMPL(private implementation或者pointer to implementation)
- 凤凰网、大公网等媒体争相报道汪国新委员:加强手机安全,保护公民信息
- python异常