蓝牙技术概览
摘要
本文对蓝牙硬件架构、协议栈、应用协议类型等进行概要描述,内容总结于蓝牙联盟官网蓝牙规范文件,本文只用于蓝牙技术扫盲,具体细节请参考官网(Bluetooth® Technology Website)
蓝牙概念
蓝牙名字来源于第十世纪一位英勇的丹麦王子—哈拉尔·蓝牙(Harald Bluetooth),他带领人民平定统一了当时周围几个动乱的国家,终结了当地纷乱的海盗时代,蓝牙一名在那时象征着统一与连接。
1996年,爱立信、诺基亚、东芝、IBM、英特尔几位电子通讯领域的巨头,希望能够开发出一种标准的短距离的无线传输技术,希望这门技术能像蓝牙王一样,将当时的无线通讯领域统一起来:
- 目的:提供一种低功耗、低成本的无线连接方式,主要用于个人区域网络(PAN),支持设备之间的短距离通信。
- 应用范围:包括耳机、键盘、鼠标、智能手机与电脑间的文件传输、物联网设备等。
- 工作频段:2.4 GHz ISM (I工业、S科学、M医学)频段,与 Wi-Fi 使用的频段相同,但两者使用不同的调制方式和协议来避免干扰。
主要版本及特性
版本 | 特性 |
---|---|
Bluetooth 1.x | 最初版本,奠定基础架构,数据传输速率低(721Kbps),单双工,功耗高,距离10米 |
Bluetooth 2.0 + EDR | 引入增强数据速率(EDR),传输速率提高到3Mbps,功耗降低,全双功,距离10米 |
Bluetooth 3.0 + HS | 引入高速模式,最高可达24Mbps,可以传输视频,距离100米 |
Bluetooth 4.0 | 包含了低功耗蓝牙(BLE),功耗低、延时低、成本低,AES-128加密,适合物联网设备,24Mbps,s距离100米 |
Bluetooth 5.x | 40Mbps,大广播包,支持mesh,智能家居场景更友好,内定定位误差1米,优化数据传输可靠性,可应用于医疗等可靠场景中,距离300米 |
蓝牙版本向下兼容
常见蓝牙技术方案
- SOC单芯片方案,NRF52xxx,乐鑫ESP32等,将蓝牙协议栈直接设计到芯片中,再配合芯片的串口、ADC等其他外设,就能完成产品需求的功能。
- SOC蓝牙+MCU方案,在SOC单芯片基础上,MCU和蓝牙模块之间通过串口等通讯方式,使用预定义的相关指令控制蓝牙进行工作。
- 主机+控制器方案,最复杂蓝牙方案,能实现最多的蓝牙功能,例如,手机、汽车或者功能复杂的蓝牙手表等。
系统架构
蓝牙的核心系统由一个主机(Host)和多个控制器(Controller)组成,两者靠HCI(主机控制接口 Host Controller Interface)接口连接,主机是蓝牙协议栈(逻辑实体),控制器是指蓝牙芯片(物理实体),芯片的模式包含传统蓝牙和低功耗蓝牙两种类型,根据芯片支持模式的数量可以分为:
- 单模蓝牙芯片:单一传统蓝牙、单一低功耗蓝牙
- 双模蓝牙芯片:同时支持传统蓝牙和低功耗蓝牙
主机和控制器之间的组合逻辑可为:
核心系统架构如图
控制器
射频器Radio
提供射频功能,负责物理通道的信息收发
链路控制器Link Controller
控制传输速率、传输功率等射频参数,对蓝牙数据包进行编码和解码
基带资源管理器Baseband Resource Manager
负责无线介质的所有访问,主要包含两个功能:通讯调度、协商接入合约。
通讯调度:蓝牙通讯是时分复用的,通讯被划分为很多时间槽,将基带资源分配好,确保不同应用可以有效共享无线资源。
协商接入合约:与通讯实体协商接入合约,合约就是约定的通讯服务质量(Qos),音频协议、文件传输、串口模拟等实体对带宽、延迟、数据速率等服务质量,有不同的要求。
等时适配层ISOAL Isochronous Adaptation Layer
对上下层数据包大小及传输间隔进行适配,等时性传输:在固定时间间隔内可靠传输完数据;数据包大小匹配:上层与下层数据包大小不同时,自动完成分片/重组、分段/重装
操作 | 说明 |
---|---|
分片 Fragmentation | 数据包过大时,拆分成各个小包 |
重组 Recombination | 将分散的各个小数据包重新组合成完整的数据包 |
分段 Segmentation | 类似分片,但更加强调按照逻辑边界切分数据,例如音频包 |
重装 Reassembly | 将多段数据按照顺序重新组装为原始数据流 |
信道探测模块 Channel Sounding
负责创建、修改、释放信道探测物理链路,提供距离估计和攻击检测功能,使用蓝牙实现高精度测距,例如数字汽车钥匙、室内导航等;监测是否存在中继攻击(按照距离是否跳变的原理)。
链接管理器 Linker Manager
蓝牙设备连接的总指挥官,负责建立和维护设备之间的连接关系,使用BR/EDR的链路管理协议LMP和LE中的链路管理协议LL,实现启用加密传输、调整物理链路发射功率、调整Qos合约。
设备管理器 Device Manager
控制设备级行为的中枢模块,控制设备发现、可被发现、可连接、发起连接、配对与绑定的管理,是“即插即用”和动态组网的关键组件。
HCI接口层
使用硬件接口UART/USB/SDIO实现主机与控制器的通讯,主要包含:
- H2 USB
- H4 UART
- CMMAND 主机协议栈发送给控制器的命令
- EVENT 控制器上报给主机协议栈的事件
- ACL 双向交互的上下交换的普通数据
- SCO 双向交互的音频数据
- ISO LE用的数据包
- H5 UART
- BCSP 串口
- SDIO 安全数字传输
主机和控制中都有对应的HCI各个通讯方式的驱动
主机
L2CAP资源管理器
位于主机的L2CAP层(Logical Link Control and Adaptation Protocol),负责在有限资源下保障服务质量,协调数据传输的优先级和合规性。
上层应用数据(SDU)会被L2CAP分段多个PDU数据,然后PDU数据通过接口发送到控制器上,控制器缓冲区和HCI接口带宽都有限,某个高带宽应用传输时可能会阻塞其他应用,此时需要L2CAP进行调度,使有Qos的通道能按时传输。
附带流量合规性监测,例如监测某通道实际是否符合Qos合约。但是该处只是定义应该调度,但没有明确调度的方法。
信道管理器Channel Manager
创建、管理和关闭 L2CAP 信道,将信道绑定到上层应用上,实现设备间端到端的连接,且满足Qos要求,实现蓝牙多服务并发。L2CAP信道是各主机之间端到端的逻辑通路,每个信道对应一个特定的服务或者数据流,例如有音频控制、音频流、文件传输、串口模拟等。
安全管理器协议SMP Security Manager Protocol
低功耗LE蓝牙通讯的安全中枢,使用专用信道与对端设备协商并管理加密密匙、身份密匙,实现身份认证、隐私保护,与底层LinkManager协作完成底层安全操作,建立完整的安全连接、配对、绑定、隐私保护的基础。
属性协议ATT Attribute Protocol
低功耗LE使用L2CAP固定信道,实现ATT客户端与ATT服务器之间的点对点的CS通讯模式,属性是什么:设备的各种数据,属性字段包含:
- 属性句柄 唯一16位编号,用于定位该属性
- 属性类型 心率、设备名称等等
- 正文 数据内容
- 权限 访问权限,RO WO RW等
通用属性协议GATT Generic Attribute Profile
低功耗蓝牙(LE)生态系统的“应用语言”,构建在ATT之上的应用层框架,ATT 负责“怎么传”,GATT 规定“传什么、怎么组织”。GATT定义了ATT服务器中 服务、特征、属性的层次结构:
概念 | 说明 |
---|---|
Service(服务) | 一组相关功能的集合,例如“心率服务”、“电池服务”。用 UUID 标识。 |
Characteristic(特征) | 服务中具体数据项,包含具体数值,例如心率值,并设置访问权限 |
Attribute(属性) | GATT 中的最小数据单元,每个服务和服务内的字段都以属性形式存在,由 Handle 唯一标识。 |
GATT使用标准接口:发现 读取 写入 通知 |
- 发现:查找远端设备提供哪些服务和特征
- 读取:获取某个特征的当前值
- 写入:设置某个特征的当前值
- 通知:接收服务器主动推送的数据
以上操作使用ATT实现,只是GATT将其封装成高级API。
服务发现协议SDP Service Discovery Protocol
经典蓝牙(BR/EDR)系统中实现服务发现的核心机制,使用固定信道,使客户端按照服务属性搜索所需服务。
服务属性:每个蓝牙服务在SDP中被描述为“服务记录(service record)”,属性中包含服务类、服务列表、服务名称、服务描述、服务提供者、端口号,可以使用这些属性字段进行精确查找。例如,搜索是否有音乐服务、是否支持文件传输。但SDP只负责发现服务,不定义发现后的访问方式,具体方式由具体服务决定。
串口仿真协议RFCOMM Serial Port Emulation
在传统经典蓝牙上模拟处RS-232的串口行为,底层是L2CAP
其他协议:
- 对象交换协议OBEX Object Exchange ,广泛用于在设备之间传输文件、同步数据或交换对象(如名片、日历事件、消息等)。
- 蓝牙免提协议 HFPHands-Free,将手机的通话转移到耳机、汽车上。
- A2DP (Advanced Audio Distribution Profile),高质量音频流从一个设备传输到另一个设备的标准方法,通常用于无线耳机或音箱与音源设备(如手机、电脑)之间的音频传输
- HID (Human Interface Device Profile),HID 允许蓝牙设备作为输入设备(如键盘、鼠标)工作,并且可以与操作系统或其他蓝牙设备进行交互。
- AVRCP (Audio/Video Remote Control Profile),AVRCP 用于控制多媒体播放设备(如音乐播放器),它允许遥控器发送命令给媒体播放器来执行播放、暂停、快进等操作。
- MAP (Message Access Profile) MAP 让设备能够访问短信和电子邮件消息。这对于车载系统特别有用,因为它可以让驾驶员安全地阅读和回复短信,无需手动操作手机。
收发数据流
经过面对主机、控制器的组成分析,可以清楚的了解数据是如何从上层逐渐到下层的,总体数据流示意图如下所示