1、概念
蓝牙,是一种支持设备短距离通信(一般 10m 内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。
2、发展历程
- 蓝牙 1.0 (1999年)早期的蓝牙版本,有数据泄露风险,并没有被广泛应用;
- 蓝牙 1.2 蓝牙技术一直在迭代,发布于 2003 年的蓝牙 1.2 是蓝牙真正走向安全可用的标志;
- 蓝牙 2.0(2004 年)则着重提高多任务处理能力,同时支持双工模式,可以一边语音通讯,一边传输文件;
- 蓝牙 3.0(2009 年)引入高速传输,加大带宽,客观上挤占 WiFi 的位置,增加了功耗和成本;
- 蓝牙 4.0(2010 年)重新找准定位,引入 BLE 概念,即 Bluetooth Low Energy 低功耗蓝牙;
- 蓝牙 5.0(2016 年)让蓝牙在低功耗下具备更强大的传输能力,提高了安全性和可达性,逐渐成为目前主流。
- 蓝牙 5.2(2020 年)聚焦LE Audio,发布多个LE音频规范和全新的LC3高品质低延迟编码器,增强蓝牙音频体验。
所以蓝牙技术已经发展了很多个年头,蓝牙技术联盟分为经典蓝牙和低功耗蓝牙,为了区分所谓的低功耗蓝牙和经典蓝牙,蓝牙4.0发布之初,SIG还特意将Bluetooth low engery对外宣传为Bluetooth smart,而“Bluetooth”继续用来指代经典蓝牙,Bluetooth smart ready则用来表示双模蓝牙(即同时支持经典蓝牙和低功耗蓝牙)
3、蓝牙典型方案应用场景
蓝牙技术联盟(SIG)后续发布的蓝牙4.1/4.2/5.0/5.1/5.2,都是同时包含低功耗蓝牙和经典蓝牙的。所以大家开发蓝牙应用的时候,一定要搞清楚自己是要开发低功耗蓝牙应用还是经典蓝牙应用,两者的应用场景是不同的。一般而言,经典蓝牙因为蓝牙是为传输声音而设计的,是短距离音频传输的最佳选择,所以数据传输量会大一点。应用在蓝牙电话接听,蓝牙耳机,蓝牙音箱等场合,直线距离在10米左右。低功耗蓝牙简称BLE,指的是蓝牙4.0及以上版本的蓝牙模块,相较于经典蓝牙,低功耗使用跳频技术,所以数据传输量会小一点,但功耗低,传输距离远50米左右,具体应用在共享单车锁、蓝牙智能锁,可穿戴设备,IoT智能设备,健身设备,蓝牙鼠标键盘等电池供电场合。当然,经典蓝牙也可以用电池供电,但LE对电池的要求更低,一节电池或者是一颗纽扣电池都能使用数月甚至一年。
下图对经典蓝牙和低功耗蓝牙的典型应用场景进行了总结。
需要引起大家注意的是,经典蓝牙和低功耗蓝牙两者物理层调制解调方式是不一样的也就是他们链路控制以及基带都不一样的,所以**低功耗蓝牙设备和经典蓝牙设备两者之间是不能相互通信的,**选型的时候千万不要搞混,如果主设备是低功耗蓝牙设备,从设备也必须是低功耗蓝牙设备;同样,经典蓝牙的从设备也只能和经典蓝牙的主设备进行通信。不过市场上还有一种双模蓝牙设备,即同时支持低功耗蓝牙和经典蓝牙,比如我们天天用到的手机,手机可以和经典蓝牙设备通信,也可以和低功耗蓝牙设备通信,如前所述,这不代表低功耗蓝牙设备可以和经典蓝牙设备通信,其实手机使用了分时机制来达到同时和低功耗蓝牙设备以及经典蓝牙设备通信的目的,即手机让双模蓝牙芯片不断地在低功耗蓝牙模式和经典蓝牙模式之间进行切换,以同时支持低功耗蓝牙设备和经典蓝牙设备。
4、bluetooth协议栈框架
如上图所示,蓝牙协议栈主要分为两个部分:Host和Controller。Host主要包含链路层之上的整个蓝牙协议栈,包含传输层L2CAP以及在它之上的多种应用层协议(A2DP,A2RCP,HFP等),这些是蓝牙协议栈的核心部分。Controller就是HCI,LMP(链路管理协议)和基带组成,HCI里面主要是主要与硬件驱动打交道,偏底层。L2CAP是介于上层和底层(例如HCI)之间的一种数据交互的媒介。L2CAP以上部分协议通过使用SDU包进行数据交互,L2CAP以下就是和HCI部分通过PDU包进行数据交互。大多数蓝牙从业者,一般都是在Host层或者应用层,controller一般是Linux kernel写好了用的比较少。
5、蓝牙音频规范
组成蓝牙协议的基石是一个个规范(Profile),蓝牙标准里目前有二十多个规范,一个规范其实就是一种通讯的类型或者协议,不同规范覆盖不同的应用。
其中有三个规范聚焦于音频数据的传输。传统的A2DP和HFP以及最新LE Audio
5.1. HFP规范
其中HFP 基于SCO(Synchronous Connection Oriented)链路用于双向传输通话语音。SCO链路具有同步传输特性。
具体可以看下面这篇文章:
5.2 A2DP规范
A2DP(Advanced Audio Distribution Profile),蓝牙立体声音频传输规范。A2DP协议的音频数据在ACL Link上传输,这与SCO上传输的语音数据有本质区别。A2DP不包括远程控制的功能,远程控制的功能则依赖AVRCP协议规范。A2DP是建立在AVDTP协议之上的高层协议,AVDTP定义了蓝牙设备之间数据流句柄的参数协商,建立和传输过程以及相互交换的信令实体形式,该协议是A2DP框架的基础协议。蓝牙A2DP数据包基于AVDTP协议进行传输。
具体可以看下面这篇文章:
5.3 BLE Audio
LE Audio 核心框架如下
LE Audio是新一代蓝牙音频传输协议,基于低功耗蓝牙BLE无线通信,其主要特点有:
1、超低功耗,LE本身即为低功耗蓝牙,LE Audio更是首创每只耳机独立传输单通道数据,大幅缩减每只耳机的数据传输量,将传输和解码功耗降低。
2、全新高音质、低功耗音频解码器LC3(Low Complexity Communications Codec)
3、LE同步通道(ISOC:Low Energy Isochronous Channels)
4、支持多重串流音频(Multi-Stream Audio)
5、支持广播音频技术(Broadcast Audio)
LE Audio正是为了解决前文传统蓝牙音频的缺点:音质、延迟,以及双耳无线耳机和多连接问题而提出的下一代蓝牙音频方案。
6、硬件传输协议
蓝牙模组和CPU之间一般是通过UART或者USB接口进行收发数据 在kernel里l支持的UART接口通常是H4,H5,BCSP,支持USB接口通常走的是的H2等
总结
1、蓝牙协议栈由host和controller区分的,我们主要学习host
2、蓝牙模组的接口通常是USB或者UART实现数据的收发
3、BR/EDR和BLE的区别
3.1 按照协议版本划分
经典蓝牙(v1.1/1.2/2.0/2.1/3.0),低功耗蓝牙(v4.0/4.1/4.2/5.0/5.2)
经典蓝牙跟低功耗蓝牙是不能互通的!因此在硬件模组上又有单模蓝牙和双模蓝牙的区别
3.2、按模组化分为单模和双模
单模蓝牙:运行一种蓝牙协议栈的模块,只兼容经典蓝牙或低功耗蓝牙其中的一种
双模蓝牙:内置两个蓝牙版本,运行两套协议栈的蓝牙模块,是既可以兼容经典蓝牙又兼容低功耗蓝牙。手机蓝牙
EDR(经典蓝牙模式)特征:近距离、高功耗、传输数据量大 BLE(低功耗蓝牙模式)特征:远距离、低功耗、传输数据量小 双模运行的好处:
提供兼容性:为BLE与EDR不同模式之间的传输,提供兼容支持 降低项目成本:一款双模蓝牙包含BLE和EDR模式,降低项目成本
3.3、 按照工作模式可分为 主角色模式、从角色模式、主从一体模式、广播模式
beacon广播模式时,一般会被设置成了不可连接的状态,Beacon 会每隔一定的时间广播一个数据包到周围,作为独立的蓝牙主机在执行扫描动作时,会间隔地接收到 Beacon 广播出来的数据包,常见应用室内定位、商店咨询推送。
从机模式的低功耗蓝牙模块也处于广播状态,等待被扫描。和广播模式不同的是,从机模式的蓝牙模块是可以被连接的
主机模式时,无广播,可扫描周围广播设备