BLE协议、应用、功耗详解 -(嵌入式提升篇)

本文旨在说明根据BLE协议的相关知识,对应用,协议开发、功耗进行分析。了解清楚该文档,可以针对一些蓝牙应用开发问题和协议进行一定的定位排查。

图片有摘引,如有侵权,请联系删除。图片有私印,可以查找对应原文作者。

Written by: Zhai Xiufeng

目录

BLE协议、应用、功耗详解... 1

1.    概述... 1

2.    BLE协议... 1

2.1 协议包问题排查... 2

2.1.1 广播包抓包... 2

2.1.2 协议帧抓包... 3

3. BLE状态迁徙协议详解... 3

3.1 发起连接流程... 3

3.2 广播与扫描... 4

3.3 配对... 5

3.4 GATT属性... 7

3.5 L2CAP通道... 8

3.6 蓝牙发起连接业务... 11

4. 功耗详解... 12

4.1 影响功耗因素... 12

4.2 优化功耗方向... 13

参考资料... 13

  1. 概述

BLE即蓝牙低能耗(Bluetooth Low Energy)。本文将剖析BLE协议栈的结构,包括物理层、链路层、主从协议、GATT(Generic Attribute Profile)以及L2CAP(Logical Link Control and Adaptation Protocol)等关键组成部分。深入了解这些协议的交互过程有助于理解BLE在通信中的基本原理和解决应用、协议开发的问题。同步研究包括连接参数、广播机制、休眠模式以及硬件和软件层面的优化策略。介绍在实际应用中可以从哪些方面降低功耗,从而延长设备的电池寿命。

  1. 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:此为自定义类型,射频发射功率。

2.1.2 协议帧抓包

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值