建设多语言网站百度网站建设及推广
摘要(From AI):
这篇笔记详细讲解了蓝牙技术的分类、核心架构和通信流程,重点介绍了低功耗蓝牙(BLE)的协议栈、角色划分及连接机制,结合拓扑示例清晰阐述了蓝牙网络配置和操作过程
前言:本文档是本人在《ESP32-C3 物联网工程开发实战(乐鑫科技著)》进行学习时所做的学习笔记,可能存在疏漏和错误,如有发现,敬请指正。
文章目录
- Brief Introduction
- The classification of Bluetooth
- Bluetooth terminology
- Core Architecture
- Bluetooth Roles
- Bluetooth Network Configuration
- Bluetooth Connection Process
参考资料:
《ESP32-C3 物联网工程开发实战(乐鑫科技著)》
Brief Introduction
蓝牙是一种支持设备短距离通信的无线通信技术,能够实现在短距离范围内实现信息的自由分享和传输,具有安全性高、自由连接等特性,工作在 2.4GHz ISM(工业、科学、医学) 频段
蓝牙可分为经典蓝牙和低功耗蓝牙
The classification of Bluetooth
Classic Bluetooth
经典蓝牙(BR/EDR)泛指支持蓝牙协议在 4.0 以下的模块,一般用于大数据量的传输(如语音、音乐),其协议包含个人局域网的各种规范,如:
- Advanced Audio Distribution Profile (A2DP) 适用于音频
- Hands-Free Profiles/Hand-Set Profiles (HFP/HSP) 适用于免提设备
- Serial Port Profiles (SPP) 使用于文本串口透传(可用于蓝牙调试)
- HFP/HSP、HID 等
Bluetooth Low Energy
一种超低功耗无线通信技术,主要针对低成本、低复杂度的无线体域网和无线各域网设计
Bluetooth terminology
Core Architecture
蓝牙的核心系统
Host 主机实现各种业务场景需求,大部分的开发工作基于此Controller 控制器用于蓝牙报文的收发、蓝牙物理连接等功能,由芯片厂商负责实现Host Controller Interface(HCI) 主机控制接口Host 和 Controller 通过 HIC 进行通信
BLE 协议栈

Controller
Physical Layer(PHY) 物理层指定低功耗蓝牙所用的无线频段、调制解调方式等Link Layer(LL) 链路层负责数据发送和接收,但不负责数据解析,是蓝牙协议栈的核心
Host Controller Interface(HCI) 主机控制接口 Host 和 Controller 之间的通信接口,可以是物理形式的(UART、USB 等,常见于双芯片架构),也可以用 API 实现(常见于单芯片架构)
Host
Logical Link Control and Adaptation Protocol(L2CAP) 逻辑链路控制和适配协议向上层协议(协议复用、分段、重组操作)提供连接导向和无连接的数据服务,并按通道进行流量控制和重传Attribute Protocol(ATT) 属性协议用来定义用户命令以及命令操作的数据(如读取或写入);BLE 协议栈引入了 Attribute 概念,用于描述一条条的数据。ATT 除了定义数据,也定义该数据可以使用的 ATT 命令Security Manager Protocol(SMP) 安全管理器协议负责管理 BLE 连接的加密和安全,在保证连接安全的同时不影响用户的体验Generic Attribute Profile(GATT) 通用属性配置文件规范 Attribute 中的数据内容,并运用分组(Group)的概念对 Attribute 进行分类管理Generic Access Profile(GAP) 通用访问配置文件对 LL 的有效数据包进行了一些规范和定义,是解析 LL 负载数据最简单的一种方式,一次 GAP 的功能及其有限,主要用来进行广播、扫描和发起连接等
Bluetooth Roles
蓝牙的角色有以下几种:
- Advertise 广播者
- Scanner 扫描者
- Initiator 发起者
蓝牙通信是指两个或多个蓝牙设备之间的通信,通信双方必须一个是主机,另一个是从机,从机和从机之间不能直接通信,其中:
- Master 主机(主设备)从 Scanner 和 Initiator 转化而来
- Slave 从机(从设备)从 Advertise 转换而来
Master 工作在 Master 模式的设备,可以与一个 Slave 进行连接,在此模式下可以对周围的设备进行搜索并选择需要的 Slave 进行连接
- 一个具备蓝牙通信功能的设备,可以在 Master 和 Slave 之间进行切换,平时工作在 Slave 模式,等待其他 Master 的连接;在有需要时可以转换为 Master,向其他设备发起呼叫
- 一个设备以 Master 发起呼叫时,需要知道对方的蓝牙地址(Bluetooth Address(BD_ADDR))、配对密码(Pairing PIN)等信息,配对完成后可直接发起呼叫
Slave Slave 模式下的设备只能被 Master 搜索,不能主动搜索
Bluetooth Network Configuration
根据拓扑结构,蓝牙网络可分为:
- Piconet 微微网
- Scatternet 散射网
- Mesh
Piconet 微微网
每次简历的蓝牙无线链路,都处于微微网中,一个微微网由两个或更多占用相同物理信道的设备组成(表示这些设备是按照共用时钟和跳频序列进行同步的),其拓扑结构如下:
从机3// //从机1 -------------------- 主机\\\\从机2
拓扑结构(Topology Structure)是指系统中各个节点及其连接关系的组织方式或布局。它广泛应用于网络、工程、数学等领域,用来描述元素之间的连接模式,而不关注实际的物理位置或距离
Scatternet 散射网
如果多个网存在重叠的区域,就可以构成散射网。其中各个 Piconet仍然具有自己的主机,但一个 Piconet 的主机可以同时是另一个 Piconet 的从机,这样该设备就具有双重身份
如下图,此时左侧的主机同时也是右侧的从机
从机1.3 从机2.1/ // // // /
从机1.1 ---------- 主机/从机 ---------- 主机\ \\ \\ \\ \从机1.2 从机2.2
Mesh
蓝牙 4.0 之后诞生了蓝牙 Mesh,用于建立多对多设备通信的低能耗蓝牙网络,允许创建基于多个设备的大型网络,可以包含数十台、数百台甚至数千台蓝牙 Mesh 设备,设备之间可以相互进行数据传输
Bluetooth Connection Process
蓝牙首先需要通过广播或扫描发现周围设备,其次创建连接,最终组建网络传输数据
1. 从机端广播
在大部分情况下,外围设备 (Peripheral,从机) 通过广播自己来让中心设备 (Central,主机) 发现自己,并建立 GATT (通用属性配置文件)连接,从而进行更多的消息交换
也有些情况是不需要连接的,只需要外围设备(外设)广播自己的信息即可,这种方式的主要目的是让外设把自己的消息发送给多个中心设备
- Peripheral 在进行广播时不断发送广播包,每发送一次广播包称为广播事件;每一次发送之间有长度为 t 的广播间隔,也称为广播事件间隔,每次广播事件都会持续一段时间,只有在此期间蓝牙芯片才会打开射频模块发送广播包,功耗较高,其余时间都处于空闲待机状态
- 当广播事件时,每一个事件包含三个广播包,分别在 37、38、39 三个信道同事广播相同的消息
2. 主机端扫描
扫描是在一定范围内用来寻址其他 BLE 设备的过程,扫描者在扫描过程中会使用广播信道,但扫描并没有严格的时间定义和信道规则,其过程按照主机设定的扫描定时参数进行
被动扫描扫描者仅仅监听广播包,而不向广播者发送任何数据- 在扫描过程中,如果控制器接收到符合过滤策略或其他规则的的广播包, 则向主机发送一个报告时间,其中包括广播者的设备地址、、广播包中的数据、信号接收强度
主动扫描Central 在扫描捕获广播包的同时捕获扫描响应包,并作出区分
广播包和扫描响应包
广播包:主要用于设备发现和提供基本信息,适合所有设备接收
扫描响应包:用于增强广播包,满足需要获取更多信息的主动扫描设备需求
3. 主机端连接
连接过程如下
Peripheral(外设,外围设备)开始广播,在发送完一个广播包的T_IFS内,开启射频窗口接收来自中心设备的数据包
↓
Central 接收到广播,在接收后的 T_IFS 内如果开启了 Central 的扫描回复,则 Central 将向 Peripheral 发送回复
↓
Peripheral 收到中心设备的回复后,做好接收准备并返回 ACK 包
↓
如果 Peripheral 发送的 ACK 没有被中心设备接收到,则 Central 将一直发送回复知道超时为止,在此期间内只要外设返回过一次 ACK 就算连接成功
↓
开始建立通信,Central 以接收到外设广播的时间为原点,以连接间隔为周期向 Peripheral 数据包,数据包用于同步两个设备的时钟和建立主从模式的通信,其过程如下:
同步两个设备的时钟Peripheral 每收到 Central 发送的一个数据包,就会重新设置自己的书序原点,以便于 Central 同步- BLE 通信在建立成功后变成主从模式,Central 变成主机模式,Peripheral 变成从机,从机只能在 Central 向它发送一个数据包后才能在规定时间内把自己的数据回传给 Central
- 连接建立成功
- 外设自动停止广播,其他设备无法再查找到此外设
- 在中心设备发送数据包的间隔内,外设可以发送多个数据包
T_ISF 、 ACK 和同步时钟
T_ISF:Inter Frame Space 同一信道上连续传输包之间的时间间隔
ACK
ACK在通信中是接收方对发送方的反馈,用于确认数据包已成功接收。如果没有ACK,发送方无法知道数据是否到达目标,从而无法保障通信的可靠性。ACK机制还可检测数据错误并触发重传,确保数据传输完整无误
同步时钟
同步时钟在通信中用来协调双方的时间基准,确保数据的发送与接收按预期时序进行。如果没有同步时钟,数据可能因时序错乱而丢失或解析错误。在 BLE 中,同步时钟还能优化设备能耗,让设备在需要时准确唤醒,保持高效运行
断开连接
- 在需要断开连接时,只要 Central 停止连接(停止发送数据包)即可
重新连接
- 中心设备可以将外设的 MAC 地址写入 Flash 或是 SRAM 等存储器件,并保持监听此 MAC 地址,当再次收到 Peripheral 发送的广播包时就可以建立通信
- 从机为了省电,当一段时间没有数据要发送时,可以不在发送广播包,双方就会因为连接超时(Connection Timeout)而断开,此时需要 Central 启动监听
MAC地址(Media Access Control Address)是一个设备的唯一硬件地址,用于标识蓝牙设备。每个蓝牙设备在出厂时都会分配一个全球唯一的MAC地址,一个48位(6字节)的数字,通常用16进制表示,格式为
XX:XX:XX:XX:XX:XX,例如A1:B2:C3:D4:E5:F6
