第一章 BLE入门:蓝牙技术发展史、BLE与经典蓝牙的区别、BLE应用场景、BLE协议栈架构概览
大家好,欢迎来到《BLE入门到精通系统课》。我是你们这门课的主讲。
做嵌入式这么多年,我接触过不少无线通信技术。ZigBee、Wi-Fi、LoRa……但要说最接地气、出货量最大的,还得是蓝牙。尤其是低功耗蓝牙,也就是BLE。今天咱们就从零开始,把BLE的来龙去脉捋清楚。
1.1 蓝牙技术发展史:从“线缆替代”到“万物互联”
蓝牙这名字,其实来自一位丹麦国王——Harald Bluetooth。他统一了丹麦和挪威。用他的名字命名,寓意就是“统一通信标准”。
蓝牙技术从1994年由爱立信提出,到现在快30年了。我把它分成几个关键阶段:
- 蓝牙1.x/2.x(经典蓝牙BR/EDR):早期版本,主要替代RS232串口线。速率从1Mbps到3Mbps。那时候的蓝牙耳机,音质一般,功耗也不低。
- 蓝牙3.0 + HS:引入了高速通道,但实际用802.11(Wi-Fi)来传数据,有点“拼凑”的感觉。这个版本存在感不强。
- 蓝牙4.0(BLE诞生):2010年,这是革命性的一代。蓝牙技术联盟正式推出了低功耗蓝牙(BLE)。它和经典蓝牙是两套不同的协议栈,但共享射频前端。我记得当时第一次看到TI的CC2540,功耗数据让我很震惊——一颗纽扣电池能跑几个月甚至几年。
- 蓝牙4.1/4.2:优化了连接间隔、引入了LE Secure Connections和隐私保护。4.2版本还增加了LE Data Length Extension,把单包数据长度从27字节提升到251字节,这对IOT设备来说太重要了。
- 蓝牙5.0/5.1/5.2/5.3/5.4:2016年至今,BLE进入爆发期。5.0引入了2Mbps PHY、长距离编码(Coded PHY)、广播扩展。5.1加入了AoA/AoD测向。5.2引入了LE Audio。5.3/5.4则优化了连接更新、加密控制等细节。
核心观点:从4.0开始,BLE就不是经典蓝牙的“低功耗版本”,而是一套全新的协议。两者可以共存,但本质不同。
1.2 BLE与经典蓝牙的区别:一张表说清楚
很多初学者会问:“BLE和经典蓝牙到底有啥区别?” 说白了,它们的设计目标完全不同。
经典蓝牙(BR/EDR)是为持续的数据流设计的,比如语音通话、音频播放。它追求的是稳定的高吞吐量,功耗自然就高。
BLE是为间歇性、小数据量传输设计的,比如传感器读数、开关控制。它追求的是极低的待机功耗和快速连接。
我整理了一张对比表,大家一看就明白:
| 对比项 | 经典蓝牙 (BR/EDR) | 低功耗蓝牙 (BLE) |
|---|---|---|
| 设计目标 | 持续数据流,高吞吐 | 低功耗,间歇传输 |
| 信道数 | 79个(1MHz带宽) | 40个(2MHz带宽) |
| 调制方式 | GFSK | GFSK |
| 物理层速率 | 1-3 Mbps | 125 Kbps - 2 Mbps |
| 连接建立时间 | ~100ms | ~3ms |
| 峰值功耗 | ~30mA | ~15mA |
| 待机功耗 | ~10mA | ~1μA |
| 网络拓扑 | Piconet (星型) | 广播、连接、Mesh |
| 典型应用 | 耳机、音箱、车载 | 传感器、Beacon、穿戴 |
避坑指南:我曾经在一个项目里,想用BLE传音频流,结果发现BLE的带宽根本不够,而且实时性也差。后来换成了经典蓝牙。选型时一定要想清楚你的数据模型是“流”还是“包”。
1.3 BLE应用场景:它到底能干什么?
BLE的应用场景,我总结为三大类:
- 数据采集与监控:温度、湿度、气压、心率、步数……这些传感器数据,通过BLE定期上报到手机或网关。这是BLE最主流的用法。
- 设备控制与交互:智能灯、智能锁、智能窗帘、玩具……手机App发一个命令,BLE设备执行动作。要求响应快、功耗低。
- 位置服务与寻物:Beacon广播、室内定位、防丢器。利用BLE的广播包和RSSI(信号强度)来做距离估算。
你想想看,现在市面上那些几十块钱的智能手环、几块钱的防丢器,里面跑的都是BLE。为什么?因为一颗CR2032纽扣电池,能让它跑一年以上。经典蓝牙根本做不到。
注意:BLE不适合做大数据量传输(比如视频、高清音频),也不适合做远距离通信(空旷地也就100米左右)。选型时别拿BLE当Wi-Fi用。
1.4 BLE协议栈架构概览:分层拆解
BLE协议栈,说白了就是一套软件分层。每一层各司其职,上层调用下层,下层为上层服务。我习惯把它分成三大部分:
- Controller(控制器):负责物理层和链路层。处理射频收发、数据包组装、跳频、连接管理。这部分通常由芯片硬件或固件实现。
- Host(主机):负责逻辑链路控制、安全管理、属性协议、通用访问规范等。这部分通常是软件协议栈,跑在MCU上。
- Application(应用层):用户自己的业务逻辑。比如读取传感器、控制电机、上报数据。
下面这张图,是我自己画的BLE协议栈分层结构。大家先有个整体印象:
嗯,这里要注意。HCI(主机控制器接口)是Host和Controller之间的桥梁。如果Host和Controller在同一颗芯片上,HCI可以是内部API。如果分开(比如双芯片方案),HCI就是UART、USB或SPI上的标准协议。
再往下拆,链路层(LL)是BLE的核心。它负责:
- 设备状态机(待机、广播、扫描、发起、连接)
- 数据包格式与CRC校验
- 跳频算法
- 连接事件与连接间隔管理
物理层(PHY)则定义了无线信号的调制方式、频率、功率等。BLE工作在2.4GHz ISM频段,和Wi-Fi、ZigBee、微波炉共享这个频段。所以BLE设计了自适应跳频,来避开干扰。
个人经验:我调试过不少BLE连接不稳定的问题,最后发现都是链路层的连接间隔设置不合理。连接间隔设得太短,功耗高;设得太长,数据延迟大。这个平衡需要根据实际应用来调。
好了,第一章的内容就到这里。我们从蓝牙的发展史聊到了BLE的协议栈分层。这些是地基,后面的章节我们会一层一层地深入下去。