1、蓝牙基础与协议栈概览
各位同学,咱们今天正式开讲蓝牙。说实话,蓝牙这东西,我入行那会儿还是个「玄学」——连上了叫运气,连不上叫常态。但现在不一样了,尤其是 BLE(低功耗蓝牙)出来之后,整个物联网的玩法都变了。
这一章,我会带你从蓝牙的「前世今生」开始,把协议栈的骨架搭起来。你不需要死记硬背,但得理解每一层是干嘛的。我当年调试一个 BLE 广播包,死活收不到数据,最后发现是 Controller 层的时序配置错了——嗯,这种坑,我希望你别踩。
1.1 蓝牙技术演进:经典蓝牙 vs BLE
蓝牙技术从 1994 年诞生到现在,其实分了两条路:
- 经典蓝牙(BR/EDR):主打高速率、持续连接。适合耳机、音箱、文件传输。功耗高,但吞吐量大。
- 低功耗蓝牙(BLE):主打间歇通信、极低功耗。适合传感器、信标、穿戴设备。一次广播才几 mA 的电流。
我刚开始做项目时,总觉得 BLE 就是经典蓝牙的「省电版」。后来发现,这俩的协议栈几乎完全不同。BLE 的 Controller 和 Host 是分开的,而经典蓝牙是揉在一起的。你想想看,这直接决定了调试方式的不同。
| 特性 | 经典蓝牙 (BR/EDR) | 低功耗蓝牙 (BLE) |
|---|---|---|
| 诞生时间 | 1999 年 | 2010 年(蓝牙 4.0) |
| 功耗 | 高(~30mA 持续) | 极低(~5mA 广播,~1μA 休眠) |
| 数据速率 | ~2 Mbps | ~1 Mbps(BLE 5 可达 2 Mbps) |
| 连接方式 | 持续连接 | 广播 + 事件驱动 |
| 典型应用 | 耳机、车载免提 | 传感器、信标、门锁 |
1.2 BLE 协议栈架构
BLE 协议栈分三层:Controller、Host、Application。我习惯把它比作一个快递系统:
- Controller:负责物理层的收发,相当于快递员和货车。它处理射频、调制解调、时序。
- Host:负责逻辑链路、安全管理、属性协议。相当于分拣中心和客服。
- Application:你的业务逻辑。相当于客户下单和签收。
为什么这么分?因为很多芯片把 Controller 和 Host 做在不同的芯片上。比如你用一个 Nordic nRF52832,它俩都在一颗芯片里。但如果你用 TI CC2540,Host 跑在 MCU 上,Controller 跑在射频芯片上——调试时就得两边抓。
1.3 BLE 角色
BLE 定义了四种角色。别被名字吓到,其实就两类:发广播的和收广播的,连上的和等连的。
- Broadcaster(广播者):只发广播,不连接。比如一个温度信标,每秒发一次温度值。
- Observer(观察者):只收广播,不连接。比如一个扫描器,收集周围所有信标的数据。
- Peripheral(外设):发广播,等待连接。比如一个心率带,广播自己,等手机连上来。
- Central(中心):扫描广播,发起连接。比如手机,扫描到手环后主动连上去。
我记得第一次做 BLE 项目,把 Peripheral 和 Broadcaster 搞混了。Peripheral 广播是为了让别人连,Broadcaster 广播完就完事了。你想想看,如果心率带只广播不连接,那手机怎么拿到实时数据?
| 角色 | 广播 | 扫描 | 连接 | 典型设备 |
|---|---|---|---|---|
| Broadcaster | ✓ | ✗ | ✗ | 信标、标签 |
| Observer | ✗ | ✓ | ✗ | 扫描器、网关 |
| Peripheral | ✓ | ✗ | ✓(被连) | 传感器、手环 |
| Central | ✗ | ✓ | ✓(主动连) | 手机、平板 |
1.4 BLE 通信流程
BLE 的通信流程,说白了就四步:广播 → 扫描 → 连接 → 数据传输。我画了一张图,你一看就明白。
具体每一步做什么?
- 广播:Peripheral 在三个广播信道(37/38/39)上发广播包。包里包含设备名称、服务 UUID、发射功率等。我习惯把广播包叫「名片」——你得让别人知道你是谁。
- 扫描:Central 在广播信道上监听。收到广播包后,可以发起扫描请求,获取更多信息。注意,扫描是有功耗代价的——一直开着扫描,电池扛不住。
- 连接:Central 发连接请求,Peripheral 接受。连接后,双方约定连接间隔(connection interval)。这个间隔很关键——间隔越短,延迟越低,但功耗越高。
- 数据传输:通过 GATT(通用属性协议)读写数据。GATT 把数据组织成 Service 和 Characteristic。比如一个温度传感器,有一个 Temperature Service,里面包含一个 Temperature Characteristic。
1.5 本章小结
这一章,我们把蓝牙的底裤扒开了:
- 经典蓝牙和 BLE 是两条路,别选错。
- 协议栈分 Controller、Host、Application,HCI 是调试的关键。
- 四种角色各司其职,Peripheral 和 Central 是连接的主力。
- 通信流程四步走:广播、扫描、连接、数据传输。