本文旨在说明根据BLE协议的相关知识,对应用,协议开发、功耗进行分析。了解清楚该文档,可以针对一些蓝牙应用开发问题和协议进行一定的定位排查。
图片有摘引,如有侵权,请联系删除。图片有私印,可以查找对应原文作者。
Written by: Zhai Xiufeng
目录
BLE即蓝牙低能耗(Bluetooth Low Energy)。本文将剖析BLE协议栈的结构,包括物理层、链路层、主从协议、GATT(Generic Attribute Profile)以及L2CAP(Logical Link Control and Adaptation Protocol)等关键组成部分。深入了解这些协议的交互过程有助于理解BLE在通信中的基本原理和解决应用、协议开发的问题。同步研究包括连接参数、广播机制、休眠模式以及硬件和软件层面的优化策略。介绍在实际应用中可以从哪些方面降低功耗,从而延长设备的电池寿命。
BLE协议栈的框架如下图所示:
PHY层(Physical layer物理层):
PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。
LL层(Link Layer链路层):
LL层是整个BLE协议栈的核心,执行一些基带协议,底层的数据包管理协议。
HCI(Host controller interface):
主机控制接口层,可以理解为蓝牙modem的射频的驱动。但是相对广泛,例如:如果蓝牙芯片内不包含协议栈,那么HCI就为通信协议(UART/SPI/IIC等)和蓝牙芯片与搭载协议栈芯片的数据解析交互接口的集合。
GAP层(Generic access profile):
GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种,而且是最简单的那一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP目前主要用来进行广播,扫描和发起连接等。
L2CAP(逻辑链路于适配器协议层):
L2CAP对LL进行了一次简单封装,LL只关心传输的数据本身,L2CAP就要区分是加密通道还是普通通道,同时还要对连接间隔进行管理。
SMP(Secure manager protocol):
SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要考虑的工作。
ATT(Attribute protocol):
generic attribute profile(GATT)(属性协议层)
2.1 协议包问题排查
协议包问题排查需要抓包对协议进行比较分析,手机抓包工具推荐BLE调试助手。
2.1.1 广播包抓包
首先开启模组的广播,广播出一包蓝牙名字为:Lelouch的广播包0x08094C656C6F756368020A01。如下图。
数据包分析:
0x08094C656C6F756368020A01
08:广播数据长度,不包含08本身。最大是1e。(0x1e即30长度,加上1e字节,总共31字节,对应广播数据长度31字节。)
09:广播数据类型,09,表示广播中的名称
4C656C6F756368:十六进制字符串,ASCII码对应的是Lelouch
02:此为自定义类型,广播数据长度。
0A:此为自定义类型,广播数据类型,0A,广播射频发射功率。
01:此为自定义类型,射频发射功率。