Bluetooth Low Energy 低功耗蓝牙的一些记录
前言:本文可能会是一个系列,主要是加深对项目过程中遇到的知识点的理解,为了方便记忆和查找而写的一个文档,语言可能不是很精炼,逻辑层次也可能不是很清晰,有不对的地方呢,欢迎指出,相互学习相互进步共同成长吧。(只欢迎正能量的讨论,键盘侠杠精请绕道恕不奉陪)。
概述:本文将主要介绍Bluetooth Low Energy的相关性能,BLE和经典蓝牙的功耗对比,尤其是对BLE协议各层次的作用进行说明。
Bluetooth Low Energy:关于蓝牙的起源什么技术革新,时间节点就不一一列举了,目前觉得也没必要,想了解蓝牙历史的自行去百度吧。对百度百科将Bluetooth Low Energy翻译成蓝牙低能耗,总觉得怪怪的,别扭,因为从我接触这个技术开始就把它叫做低功耗蓝牙(可能先入为主了)。简称BLE。
BLE特点之低功耗:顾名思义低功耗蓝牙,肯定必不可少的就是功耗上的控制了,因为BLE特殊的睡眠工作机制,它的功耗控制地非常好,抛开外设等因素的影响,工作的平均电流是微安级别的(uA),而经典蓝牙基本都是在毫安(mA)。其实关于这个“非常好”暂时还没有想到怎么用图表来直观科学的对比和表示,主要原因是不同的厂家方案和技术本身就有差距,在工作的时候会有不同是正常现象;还有就是光对比这个两个纯技术上的功耗其实也不好整,更多的还是在实际的产品中做对比来的实在。这里列出了几个比较经典的产品,汇承HC05算是经典蓝牙中的代表作品了,根据其手册描述,工作期间平均电流是40mA;筋斗云的JDY30工作电流是19mA,JDY31工作电流是7.3mA,大夏龙雀的DX-BT04平均电流10.3mA,亿佰特E104-BT20平均电流20mA。那么我们再来看看BLE的电流呢,有人的WH-BLE102广播期间平均电流是200uA,亿佰特E104-BT51广播电流是29.93uA。当然这里边肯定会有除了蓝牙射频之外的外设的影响,但是这几个数据也可以看出BLE 和经典蓝牙的功耗差距是多大了,BLE号称可以在纽扣电池供电的情况下工作一年(反正我也没测试过,芯片厂商这么说的,根据情况来看应该没有扯谎)。
关于BLE为什么能做到如此之低的功耗呢,主要还是它的这个睡眠机制,大概阐述一下啊,就是BLE设备会关闭射频来降低功耗,会在某一个特殊时刻醒来,将数据收发完毕后继续关闭射频进入睡眠。下图就是其工作过程中的实际电流展示(从机广播)。关于其工作机制这部分后面有机会再细说。
BLE协议栈
先上个图吧,引用于TI的CC26xx的编程指导书。
两个部分:Host和Controller。有的可能会加入APP层,APP层可能会包含一些电池服务、心率服务之类的应用服务,也可以加入一些自定义服务。APP层主要是面向用户自己开发应用的,这里就不放进来做说明了。
Physical layer:物理层,PHY层。射频、电路等硬件部分都归它管。比如什么调试方式呀、通信频率呀、空中速率呀、接收灵敏度呀、功耗呀。
Link Layer:链路层,LL层。广播、扫描、连接这些行为都归它管。选择信道、时序、连接管理、数据传输等等。概括一下就是具体实施将数据发出去或者收回来的“工具层”。
Host controller interface:主机控制接口层,HCI。我更愿意叫它命令接口。一般来说BLE设备是两颗IC,一颗是主管蓝牙射频,一颗主管应用程序。HCI就是这两个部分的桥梁。
Logic link control and adaptation protocol:逻辑链路控制和适配层,L2CAP。对数据进行简单的封装。
Secure manager protocol:安全管理,SMP。管理BLE连接的加密和安全。比如配对秘钥分发。
Attribute protocol:属性协议层,ATT。属性可以理解成C语言中的一个数据结构实体。可以对它进行数据的各种操作。包含句柄、类型、权限和值。开发BLE产品的时候接触的最多还是它。
Generic attribute profile:通用属性配置文件,GATT。将ATT进行规范分类管理,实现互联互通。
Generic access profile:通用接入规范,GAP。管理设备类型(角色)、设备工作类型、参数的设置。其实是将Link Layer的一些操作开放出来给上层应用使用,比如广播类型、广播参数、连接间隙、扫描参数、安全加密的设置等等。
关于这个协议栈的结构说的可能还是比较抽象,不好理解,等我想个一个具体的模型再做详细解释。