这是一个BLE开发的系列文章,首先讲一下蓝牙的核心规格(主要内容来源Bluetooth SIG官网)。附上链接:https://www.bluetooth.com/zh-cn/specifications/bluetooth-core-specification
蓝牙核心规格
蓝牙设备的构成组件。
蓝牙核心规格定义各种技术构成组件,开发人员可以用它们来创建构成繁荣的蓝牙生态系统的互操作性设备。蓝牙规格由蓝牙技术联盟 (SIG) 负责监督,并由Bluetooth SIG 工作组
定期更新和补充,以满足不断发展的技术和市场要求。
蓝牙的两种类型
部署最为普遍的两种规格为蓝牙基础率/增强数据率 (BR/EDR)(采用版本为 2.0/2.1)和低耗能 (LE) 蓝牙(采用版本为 4.0/4.1/4.2)。每项部署都有不同的用例,同时采用不同的芯片以满足基本硬件要求。双模芯片也适用于包含两种用例的应用。
存在哪些差异?
-
蓝牙 BR/EDR—可建立相对较短距离的持续无线连接,因此非常适用于流式音频等应用
-
蓝牙 LE—可建立短时间的长距离无线电连接,非常适用于无需持续连接但依赖电池具有较长寿命的的物联网 (IoT) 应用
-
双模 —双模芯片可支持需要连接 BR/EDR 设备(例如音频耳机)以及 LE 设备(例如穿戴设备或零售信标)的单一设备(例如智能手机或平板电脑)
核心系统结构
尽管每项部署都有具体要求(详见蓝牙规格),但蓝牙核心系统结构有许多统一要素。该系统包含射频收发器、基带和协议栈,支持设备连接和交换各类数据。
蓝牙设备交换根据蓝牙规格协议信号。核心系统协议包括射频 (RF) 协议、链路控制 (LC) 协议、链路管理器 (LM) 协议以及逻辑链路控制和适配协议 (L2CAP),蓝牙规格详细定义了这些协议。
最低的三个系统层—射频、链路控制和链路管理器协议—通常被归属于称为蓝牙控制器的子系统。这是一种采用可选标准接口—主机控制器接口 (HCI)—的通用部署,支持与蓝牙系统的其他设备(即蓝牙主机)进行双向通信。
主控制器可能是以下配置之一,具体取决于用例:
- BR/EDR 控制器,包括射频、基带、链路管理器和可选 HCI
- LE 控制器,包括 LE PHY、链路层和可选 HCI
- BR/EDR 组合控制器和 LE 控制器,组合控制器共享一个蓝牙设备地址
蓝牙规格通过定义等效层之间交换的协议信息来实现系统之间的互操作性。它还通过定义蓝牙控制器和蓝牙主机之间的公用接口来实现独立蓝牙子系统之间的互操作性。
BluetoothProtocol.png物理 (PHY) 层
通过蓝牙通信信道控制 2.4Ghz 射频的传输/接收。BR/EDR 提供的信道较多但带宽较窄,而 LE 使用的信道较少但带宽较宽。
链路层
定义数据包结构/信道、发现/连接程序以及发送/接收数据。
直接测试模式
允许测试人员向 PHY 层发出指令以传输或接收给定数据包序列,通过 HCI 或 2 线 UART 接口提交命令。
主机控制器接口 (HCI)
蓝牙控制器子系统(底部三层)和蓝牙主机之间的可选标准接口。
逻辑链路控制和适配协议 (L2CAP) 层
基于数据包的协议,可将数据包传输至 HCI 或直接传输到无主机系统中的链路管理器。支持更高级别的协议多路复用、数据包分割和重组,以及将服务质量信息传输到更高层。
属性协议 (ATT)
在建立连接之后定义数据交换客户端/服务器协议。使用通用属性配置文件 (GATT) 将属性分类为有意义的服务。ATT 主要用于 LE 部署,偶尔也会用于 BR/EDR 部署。
安全管理器
定义管理蓝牙设备之间配对完整性、身份验证以及加密的协议和操作,提供安全功能工具箱,其他组件可利用该工具箱支持不同应用所需的各种安全级别。
通用属性配置文件 (GATT)
使用属性协议,GATT 对封装设备组件性能的服务进行分组,并描述基于 GATT 功能的用例、角色和一般性能。其服务框架定义服务规程和格式及其特性,其中包括发现、读取、写入、通知以及指示特性以及配置特性广播。GATT 仅用于蓝牙 LE 部署。 详细了解 GATT 信息。
通用访问配置文件(GAP)
可与蓝牙 LE 部署中的 GATT 配合使用,以定义与发现蓝牙设备和共享信息相关的规程和角色,以及连接蓝牙设备的链路管理内容。
对于应用开发者来说,需要用到的主要是GAT、GATT和ATT。大部分应用开发都是根据系统或者MCU的SDK提供的API对这三个层进行操作。
网友评论