BLE入门 14 蓝牙LL层连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BLE入门 14 蓝牙LL层连接相关的知识,希望对你有一定的参考价值。

参考技术A

TI的Btool是个非常好用的PC主机小工具,其部分界面如下所示,在iscover/Connect界面,可以配置不同的连接参数,选择扫描以及根据扫描到的广播设备有选择性的进行连接。
什么是whitelist?这个和微信公众号的白名单一样,是得到主机授权的从机设备,当选择只扫描whitelist的设备时(前提是已经在主机上添加了whitelist设备),主机只会扫描过滤在whitelist里面的设备。
从下图截获的控制数据包可以看到:
主机端在广播扫描之后发出一条CONNECT_REQ的指令,附带LL data,开启了主从设备连接的过程的第一步。

Interval 蓝牙连接间隔时间

ChM 跳频表,主机根据信道情况给出一张跳频表,约定和从机可用的信道(0-36信道),0表示该信道不可用,1表示该信道可用。
Hop 跳频阶跃,hop是一个5~16的值。
SCA 休眠时钟校正范围。

跳频算法

跳频算法用于数据连接时候,数据信道为37个,跳频公式如下: unmappedChannel = (lastUnmappedChannel + hopIncrement) mod 37

连接请求发出之后,开始进入连接状态,空中数据包如下所示,由绿色部分转变为黄色部分

可以发现该LL Data出现橙黄色部分,抓包工具对数据进行的解析,橙黄部分表示从机要求更新MTU的大小,然后和主机相互约束一个MTU的值,后面数据包的格式及按照新约定的MTU大小来传输数据。

所以要想连接一个蓝牙设备,主设备只需要做几个动作,自身初始化,扫描周边设备,对特点设备发出连接请求,开始交换数据。

到此低功耗蓝牙就相互连接上了,后面应用层数据交互和加密解密就要交给GAP层和GATT层,SM层来完成,我们后面讲解。

蓝牙BLE数据包格式汇总

以蓝牙4.0为例说明:

BLE包格式有:广播包、扫描包、初始化连接包、链路层控制包(LL层数据包)、逻辑链路控制和自适应协议数据包(即L2CAP数据包)等;

其中广播包又分为:定向广播包和非定向广播包;

逻辑链路控制和自适应协议数据包又分为:ATT指令包、信令指令包、SMP包;

1. 首先,所有的包都符合如下格式:

技术图片

2. 广播包:

技术图片

3. 非定向广播包:

技术图片

4. 定向广播包:

技术图片

5. 扫描包:

技术图片

6. 初始化连接包:

技术图片

7. 链路层数据包:

技术图片

8. 链路层控制包:

技术图片

9. L2CAP层数据包:

技术图片

10. 信令指令包:

技术图片

11. ATT指令包:

技术图片

12. SMP指令包:

SMP指令与ATT指令类似,只是channel ID为0x0006,数据格式如下:

技术图片

根据操作码不同,后面数据的格式不通同。

 

 

附:

L2CAP层的区分:

技术图片

以上是关于BLE入门 14 蓝牙LL层连接的主要内容,如果未能解决你的问题,请参考以下文章

ESP32学习笔记(32)——BLE GAP主机端连接

BLE4.2 简介

与华为手机的蓝牙低功耗(BLE)设备连接问题[关闭]

蓝牙BLE协议栈基础知识

BLE控制器之链路层

ESP32学习笔记(27)——BLE GAP主机端扫描