1. BLE基础概念:什么是低功耗蓝牙、BLE与经典蓝牙的区别、BLE协议栈架构概览
各位同学,咱们今天聊聊BLE的基础。说实话,我刚开始接触蓝牙那会儿,也被一堆术语搞得晕头转向。什么BR、EDR、LE、4.0、5.0……后来做项目踩了坑,才慢慢理清楚。今天我就把这块掰开了讲,保证你听完心里有数。
1.1 什么是低功耗蓝牙
低功耗蓝牙,英文叫Bluetooth Low Energy,简称BLE。它不是什么新发明,而是蓝牙技术的一个分支。2010年蓝牙4.0标准发布时,BLE正式登场。
你想想看,传统蓝牙搞个耳机、传个文件,功耗动不动几十毫安。但智能牙刷呢?它只需要每天刷两次牙,每次发几个数据包告诉手机「我刷了2分钟」「刷毛该换了」。这种场景下,用传统蓝牙就像开大卡车去送快递——太浪费了。
BLE就是为这种场景设计的。它的核心思路就四个字:少发快断。平时不通信就深度睡眠,醒来发完数据立刻断连。我在做智能牙刷项目时测过,一颗CR2032纽扣电池,BLE方案能跑半年以上。换成经典蓝牙?两周就没电了。
核心要点:BLE不是蓝牙的升级版,而是针对低功耗场景重新设计的协议。它牺牲了部分数据传输速率,换来了极低的功耗。
1.2 BLE与经典蓝牙的区别
很多新手会问:BLE和经典蓝牙到底有啥不一样?我习惯从三个维度去理解:应用场景、功耗表现、通信方式。
| 对比项 | 经典蓝牙(BR/EDR) | 低功耗蓝牙(BLE) |
|---|---|---|
| 典型应用 | 耳机、音箱、文件传输 | 智能牙刷、手环、传感器 |
| 峰值功耗 | 约30-100mA | 约5-15mA |
| 待机功耗 | 较高,无法深度睡眠 | 极低,可进入休眠模式 |
| 数据传输速率 | 1-3 Mbps | 125 Kbps - 2 Mbps |
| 连接建立时间 | 约3-5秒 | 约3-5毫秒 |
| 数据包结构 | 连续流式传输 | 短数据包,间歇发送 |
嗯,这里要注意一个关键点:BLE的连接建立时间极短。经典蓝牙要配对、认证、建立链路,一套流程下来好几秒。而BLE的广播+扫描模式,3毫秒就能建立连接。我在智能牙刷项目里,用户拿起牙刷,BLE瞬间连上手机,体验非常好。
为什么会这样?因为BLE的物理层设计就不同。它用了40个信道(37个数据信道+3个广播信道),广播信道专门用来快速发现设备。经典蓝牙用的是79个信道,跳频方式也更复杂。
个人经验:如果你做的是需要持续传输音频或大文件的产品,老老实实用经典蓝牙。但如果是传感器数据、控制指令这种小数据量、低频率的场景,BLE是唯一正确的选择。我曾经见过有人用经典蓝牙做智能灯泡,结果电池三天一换,用户骂声一片。
1.3 BLE协议栈架构概览
BLE协议栈,说白了就是一套分层协议。我习惯把它分成三层来看:控制器层、主机层、应用层。每一层各司其职,就像公司里的不同部门。
1.3.1 控制器层(Controller)
这一层负责最底层的射频操作。包括物理层(PHY)和链路层(LL)。物理层管信号的发送接收,链路层管数据包的组装、重传、加密。嗯,这部分一般由芯片硬件实现,我们做应用开发很少直接碰它。
1.3.2 主机层(Host)
这一层是协议栈的核心。包括:
- L2CAP:逻辑链路控制与适配协议。负责把上层数据拆成小包,交给下层发送。
- ATT:属性协议。定义了设备间如何读写数据。
- GATT:通用属性协议。基于ATT,定义了服务(Service)和特征(Characteristic)的概念。你想想看,智能牙刷的「电池电量」「刷牙时长」这些数据,就是用GATT来组织的。
- SM:安全管理。负责配对和加密。
- GAP:通用访问协议。管设备的广播、扫描、连接建立。
我个人习惯把GATT和GAP分开理解:GAP管「怎么连」,GATT管「连上后干什么」。做智能牙刷时,GAP负责让手机发现牙刷,GATT负责传输刷牙数据。
1.3.3 应用层(Application)
这一层就是咱们写代码的地方。比如定义智能牙刷有哪些服务、怎么处理用户按键、怎么上报数据。说白了,就是调用主机层提供的API,实现产品功能。
避坑指南:我曾经在项目里犯过一个低级错误——把GATT服务和特征定义得太多太复杂。结果手机端扫描时,发现设备要花好几秒。后来我精简到只保留必要的服务和特征,连接速度明显提升。记住:BLE的设计哲学是「少即是多」。
1.4 小结
今天咱们聊了BLE的来龙去脉。它和经典蓝牙不是替代关系,而是互补关系。BLE的核心优势是低功耗、快速连接、短数据包。协议栈分三层,我们做应用开发主要关注GAP和GATT。
下一章,我会带大家深入GAP层,看看设备是怎么广播、扫描、建立连接的。到时候我会拿智能牙刷的广播包做例子,手把手教你分析。咱们下节课见。