从电流到蓝牙通信:BLE 与经典蓝牙的整体原理全解
很多开发者天天在写蓝牙代码,扫描、连接、发现服务、读写特征、做 OTA、分析 HCI 日志,看起来已经很熟了,但一旦往下追问,常常会卡在这些问题上:
-
电磁波到底是怎么产生出来的?
-
一根天线加高频电流,为什么就能把信息发出去?
-
蓝牙为什么能用“频率变化”表示 0 和 1?
-
为什么数据速率越高,需要的带宽越大?
-
BLE 单信道只有 2MHz,为什么还能传 1M、2M?
-
BLE 和经典蓝牙到底从哪里开始不一样?
-
GATT 只是 BLE 的上层模型,那经典蓝牙又是怎么通信的?
这篇文章的目标,不是只解释某一个知识点,而是想把蓝牙通信从底层到上层串成一条完整链路:
电流 → 电磁波 → 射频载波 → 调制 → 物理层 → 链路层 → 协议层 → 应用层
如果能把这条链路打通,那么以后无论是做 iOS BLE 开发、分析吞吐量、理解经典蓝牙,还是看 HCI 日志、设计 OTA、理解音频蓝牙,本质上都还是在同一个框架里。
一、电磁波是如何产生的
先从最底层开始。
1.1 静止电荷不会“发波”,变化的电荷才会
如果一个电荷静止在那里,它周围会有电场,但不会主动向远处“辐射信息”。
真正能产生电磁波的关键,不是“有电”,而是:
电荷的运动状态在变化
比如:
-
加速
-
减速
-
改变方向
-
来回振荡
只要电荷的运动发生变化,它就会扰动周围的电场和磁场,而这种扰动会以波的形式向外传播,这就是电磁波。
1.2 天线为什么能发射电磁波
蓝牙芯片本身不会直接“把信息扔到空气里”,真正和空气耦合的是天线。
天线做的事情,本质上是:
让高频交变电流流过导体结构,从而在空间中形成随时间变化的电场和磁场,并向外辐射。
所以从最简单的角度看,一个蓝牙发射器可以粗略理解成:
-
一段天线
-
一个高频电流源
-
一套把“信息”调制到高频上的机制
1.3 为什么一定是高频
如果电流变化太慢,产生的电磁波频率就太低,天线尺寸、传播效率、可用频谱都会出现问题。
蓝牙工作在 2.4GHz ISM 频段,意味着天线上的电流是在 GHz 级别快速振荡的。这个高频振荡构成了“载波”,真正要传的信息,再叠加到这个载波上。
二、蓝牙通信的共同底层模型
不管是 BLE 还是经典蓝牙,它们前半段其实非常相似。
2.1 它们都工作在 2.4GHz 频段
BLE 和经典蓝牙都属于 Bluetooth 标准体系,二者都工作在 2.4GHz ISM 频段附近。
这意味着它们共同拥有这些底层特征:
-
都是无线通信
-
都依赖天线发射/接收电磁波
-
都在 2.4GHz 附近组织频谱
-
都需要面对干扰、噪声、多设备共存问题
2.2 它们都不是“直接发送 0 和 1”
空气里传播的不是抽象的数字 0 和 1,而是连续变化的模拟电磁波。
所以通信系统要做的一件事是:
把数字信息映射到某种可发射的波形变化上
这个过程就是调制。
三、蓝牙是怎么用电磁波表达 0 和 1 的
3.1 最直观的理解:不是“发 0 和 1”,而是“改变波的某个属性”
一个无线信号通常有几个可操作的属性:
-
幅度
-
频率
-
相位
如果我们规定:
-
某种变化代表 0
-
另一种变化代表 1
那么接收端就能反推出数据。
3.2 BLE 常见直觉模型:用频率偏移表示 0 和 1
BLE 的物理层使用的是 GFSK,从非常直观的角度理解,可以把它近似想成:
-
频率偏高一些,表示一个比特状态
-
频率偏低一些,表示另一个比特状态
注意,这只是直觉化理解。更精确地说,BLE 并不是简单地“两个固定频点硬跳”,而是围绕中心载波附近进行平滑的频率偏移变化。
3.3 为什么不是固定的“两个点”那么简单
很多人第一次理解 GFSK 时,会形成这样的模型:
-
0 = 某个固定频率
-
1 = 某个固定频率
这个模型方便入门,但不够真实。
真实系统里:
-
信号存在过渡过程
-
频率变化是连续的
-
还会受到滤波、噪声、接收判决窗口等影响
所以更好的理解是:
在一个 symbol 时间内,信号整体表现为“偏高”或“偏低”的频率状态,而不是某一个理想数学点。
四、为什么变化越快,需要的带宽越大
这几乎是通信里最核心、也最容易卡住的一个问题。
4.1 低频负责轮廓,高频负责细节
如果一个信号变化很慢,它的波形很平滑,只需要低频成分就能描述。
如果一个信号变化很快,边缘很陡,细节很多,那么仅靠低频已经描述不出来了,必须引入更高频的成分。
所以可以记一句很重要的话:
低频负责整体轮廓,高频负责边缘和细节。
4.2 为什么“突变”一定意味着高频
理想方波、理想跳变,表面看只是“从 0 一下到 1”,但本质上是:
在极短时间内完成极大变化
变化越快,所需的高频成分越多;理想突变要求无限快变化,因此数学上需要无限高频成分。
这也是为什么现实中任何系统只要带宽有限,信号边缘就不可能无限陡。
4.3 变化越快,频谱越宽
把前两点合起来,就是通信中的一条核心规律:
时间上变化越快,频域上占的范围越宽。
所以:
-
速率越高
-
切换越快
-
频谱越宽
-
对带宽要求越高
五、BLE 单信道为什么是 2MHz,以及它如何限制速率
5.1 BLE 的信道划分
BLE 在 2.4GHz 频段上定义了 40 个信道:
-
3 个广播信道
-
37 个数据信道
每个信道宽度是 2MHz。
这意味着,在单个 BLE 信道上,系统可容纳的有效频谱范围是有限的。
5.2 2MHz 限制了什么
它限制的不是“你中心频率能不能乱跑”,而是:
围绕该信道中心频率展开的频谱宽度不能无限扩张。
如果调制变化太快,频谱就会向外扩展,泄漏到邻近信道,形成邻道干扰。
所以 2MHz 的含义不是“只能存在两个频点”,而是:
你的整个调制信号所形成的频谱,必须主要落在这个 2MHz 窗口内。
5.3 为什么 BLE 只能做到 1M / 2M 量级
因为在这种信道宽度下:
-
速率越高,频谱越宽
-
物理层必须控制在允许的频谱模板内
-
同时还要兼顾低功耗、抗干扰和便宜的硬件实现
因此 BLE 的设计目标不是追求极限吞吐,而是追求:
-
足够低功耗
-
足够稳定
-
足够简单
-
对 IoT 场景够用
六、BLE 和经典蓝牙的共同部分到哪里结束
讲到这里,可以说 BLE 和经典蓝牙的共同部分主要集中在这些层面:
6.1 共同部分
-
都基于电磁波传播
-
都依赖天线和高频交变电流
-
都工作在 2.4GHz 频段
-
都需要调制,把数字信息映射到波形上
-
都要考虑带宽、噪声、干扰、跳频等问题
6.2 从哪里开始分叉
真正开始分叉的地方,不是“有没有 GATT”,也不是“有多少信道”,而是:
从物理层(PHY)开始,整套设计思路就分叉了。
也就是说:
-
调制方式不同
-
信道组织方式不同
-
数据调度方式不同
-
链路行为不同
-
上层协议生态也不同
七、BLE 与经典蓝牙的真正区别,不只是“40 个信道”
很多初学者容易形成一个误解:
BLE 的本质区别,是用了 40 个信道;经典蓝牙不一样。
这不准确。
7.1 信道数量不是本质,设计目标才是本质
BLE 和经典蓝牙的真正分水岭在于:
BLE 的目标
-
低功耗
-
小数据量
-
间歇通信
-
适合传感器 / IoT
经典蓝牙的目标
-
更高吞吐
-
连续数据流
-
适合音频、串口、文件传输等场景
7.2 信道设计只是整体设计的一部分
BLE 采用:
-
40 个信道
-
2MHz/信道
-
3 广播 + 37 数据
经典蓝牙采用:
-
79 个信道
-
1MHz/信道
这些都是各自设计目标下的结果,而不是定义本质的唯一因素。
八、为什么经典蓝牙可以用更复杂的调制,而 BLE 不用
8.1 BLE:简单调制,优先低功耗与可靠性
BLE 主要采用 GFSK。它的优势是:
-
实现简单
-
接收判决相对稳
-
功耗低
-
对噪声更耐受
8.2 经典蓝牙:更高阶调制,换取更高数据速率
经典蓝牙中的 BR/EDR 可采用:
-
GFSK
-
π/4-DQPSK
-
8DPSK
这类调制方式可以让每个符号承载更多 bit,因此在相近带宽下得到更高吞吐。
8.3 为什么高阶调制需要更高信噪比
这个问题非常关键。
可以把调制状态想成平面上的点:
-
状态越少,点之间距离越大
-
状态越多,点之间距离越小
噪声本质上会把接收点往旁边推。
如果点之间距离很大,稍微推一下也不容易误判。
如果点之间距离很小,轻微偏移就可能掉进旁边状态的判决区域。
所以:
高阶调制本质上是在单位带宽内塞更多信息,但代价是状态更密,更容易受噪声影响,因此需要更高信噪比。
这也是为什么 BLE 不追求这些高阶调制:
-
它的目标不是极限吞吐
-
它更需要低功耗和高鲁棒性
九、从 Layer 角度分开看:BLE 与经典蓝牙
下面开始正式分层展开。
十、BLE 的 Layer 体系
10.1 PHY:低功耗、有限带宽、平滑频移
BLE 物理层的关键点:
-
工作在 2.4GHz
-
单信道 2MHz
-
使用 GFSK
-
强调控制频谱扩展
-
典型速率为 1M / 2M
这里最重要的理解是:
BLE 不是通过无限增大频偏来提速,而是在有限频宽里,尽量平衡速率、功耗和频谱。
10.2 Link Layer:BLE 的灵魂
如果说 PHY 决定“怎么发波”,那么 Link Layer 决定:
-
什么时候发
-
在哪个信道发
-
什么时候跳频
-
什么时候建立连接
-
一次通信持续多久
10.2.1 广播
BLE 设备可以先在 3 个广播信道上发广播包,让中心设备发现它。
10.2.2 扫描
中心设备在广播信道上监听。
可以是:
-
被动扫描:只听
-
主动扫描:听到后还会发 Scan Request
10.2.3 建立连接
中心设备在合适时机发连接请求,之后双方进入连接态。
10.2.4 Connection Event
BLE 的连接通信不是持续不断的,而是以“事件窗口”的方式进行。
例如:
-
每 30ms 打开一次通信窗口
-
在这个窗口内双方快速交换若干个包
-
窗口结束后双方休眠
这正是 BLE 低功耗的关键原因之一:
不是一直在线高频通信,而是“集中通信 + 长时间休眠”。
10.2.5 跳频
进入连接后,双方会在 37 个数据信道之间按规则跳频,以降低干扰、提升共存能力。
10.3 L2CAP / ATT / GATT
这是 iOS BLE 开发者最熟悉的部分。
10.3.1 L2CAP
负责承载更高层数据,多路复用、分段等。
10.3.2 ATT
Attribute Protocol,定义了属性的访问方式。
10.3.3 GATT
在 ATT 之上构建了 Service / Characteristic 模型。
所以 BLE 并不是“只有 GATT”,而是:
GATT 是 BLE 上最常用、最典型的应用数据模型。
10.4 BLE 的通信哲学
BLE 的数据模型本质上像什么?
像一个远程属性数据库。
你操作的不是“字节流管道”,而是:
-
某个 Service
-
某个 Characteristic
-
对它进行 Read / Write / Notify
所以可以用一句话总结:
BLE 是属性访问模型。
十一、经典蓝牙的 Layer 体系
11.1 PHY:更偏高速连续数据
经典蓝牙同样工作在 2.4GHz 频段,但它的 PHY 设计目标不同:
-
支持更高吞吐
-
支持连续流式通信
-
在 BR/EDR 中可使用更复杂调制方式
11.2 Link Layer:持续连接、时隙通信、快速跳频
经典蓝牙的 Link Layer 风格和 BLE 很不一样。
11.2.1 没有 BLE 那种“广播 + GATT”主导的使用方式
经典蓝牙更偏向先配对、建立连接,再持续传输数据。
11.2.2 时隙机制
经典蓝牙采用时隙组织通信,设备按照节奏轮流发包,形成持续的数据流。
11.2.3 快速跳频
在较多信道上持续跳频,以减少干扰影响。
11.2.4 面向流式传输
它更适合:
-
音频
-
串口替代
-
文件传输
而不是 BLE 那种“短属性读写”。
11.3 上层协议:不是 GATT,而是多协议生态
这也是经典蓝牙最容易让 BLE 开发者不适应的地方。
它没有一个“全世界都走 Service/Characteristic”的统一模型,而是根据用途分不同协议。
11.3.1 L2CAP
底层承载,多路复用。
11.3.2 RFCOMM
非常重要。可以把它理解为:
蓝牙上的虚拟串口
这也是很多蓝牙串口模块、MFi 附件的核心基础。
11.3.3 A2DP
用于高质量音频流传输。
11.3.4 HFP / HSP
用于通话耳机、车载通话等。
11.3.5 HID
用于键盘、鼠标等输入设备。
所以经典蓝牙的本质更像:
多种专用协议 + 流式通道模型
11.4 经典蓝牙的通信哲学
如果说 BLE 是“属性访问模型”,那么经典蓝牙更像什么?
更像:
-
串口
-
socket
-
持续数据流
你关心的不是某个 Characteristic,而是:
-
打开连接
-
建立通道
-
持续收发字节流
所以可以用一句话总结:
经典蓝牙是流式通信模型。
十二、BLE 与经典蓝牙的一个核心差别:属性模型 vs 数据流模型
这是对实际开发最有帮助的理解之一。
12.1 BLE
思维方式是:
-
有哪些服务
-
有哪些特征
-
这个特征能不能读
-
能不能写
-
能不能通知
它更像一个结构化的数据接口系统。
12.2 经典蓝牙
思维方式是:
-
有没有建立连接
-
有没有打开通道
-
我现在往里写多少字节
-
对方收到了什么字节流
它更像一个传输管道。
十三、从 iOS 开发者视角看,为什么会“觉得经典蓝牙不存在”
很多 iOS 开发者对经典蓝牙没感觉,原因很简单:
13.1 CoreBluetooth 只开放 BLE
iOS 开发中,绝大多数蓝牙功能都走 CoreBluetooth,而 CoreBluetooth 对应的是 BLE 世界。
13.2 经典蓝牙在 iOS 上通常不开放给第三方 App
普通 RFCOMM、A2DP、HFP 等经典蓝牙能力,并不像 BLE 那样直接开放给开发者自由使用。
13.3 但 MFi + ExternalAccessory 是经典蓝牙世界的一扇门
如果公司有 MFi 蓝牙模块,iOS 端通过 ExternalAccessory 通信,那它本质上就是经典蓝牙体系的一种受控接入方式。
可以粗略理解为:
-
iOS App
-
ExternalAccessory
-
iAP 协议
-
RFCOMM/经典蓝牙链路
-
蓝牙附件
所以 ExternalAccessory 这种通信方式,本质上更接近:
经典蓝牙上的流式串口模型
而不是 BLE 的 GATT 模型。
十四、HCI 日志是不是只针对 BLE
不是。
14.1 HCI 是 Host 和 Controller 之间的接口
HCI 的本质,是主机侧协议栈与蓝牙控制器之间的控制与数据接口。
因此:
-
BLE 走 HCI
-
经典蓝牙也走 HCI
14.2 为什么很多开发者只在日志里感受到 BLE
因为在 iOS 开发中,开发者主要接触的是 CoreBluetooth 体系,自然看到和分析最多的是 BLE 相关行为。
但从体系结构上讲:
HCI 并不是 BLE 专属。
十五、为什么 BLE 不做成像经典蓝牙那样的“流”
这也是一个很常见的问题。
15.1 流模型的优点
-
简单直接
-
连续数据方便
-
适合音频、串口、文件
15.2 BLE 为什么更偏 GATT
因为 BLE 的目标从一开始就不是“替代串口做大流量传输”,而是:
-
低功耗
-
小数据
-
结构化
-
易于互操作
对传感器、Beacon、配网、小控制命令来说,GATT 的模型非常合适。
15.3 BLE 真能不能做流
能做近似流,但它天然不是为这个而生。
所以在 BLE 上做大量数据传输、做 OTA、做高速双向收发时,经常会遇到这些现实限制:
-
MTU 限制
-
DLE 限制
-
Connection Event 限制
-
平台调度限制
-
吞吐不稳定
这不是你代码写得不够巧,而是它的体系设计决定了它不是原生流式协议。
十六、把 BLE 和经典蓝牙统一成一张总图
现在可以把整个体系统一成下面这种理解。
16.1 共同前半段
-
电流变化
-
电磁波产生
-
天线发射
-
2.4GHz 载波
-
调制数字信息
16.2 分叉点:PHY
从物理层开始,设计目标不同,走向不同。
BLE
-
简单调制
-
低功耗
-
小数据
-
短连接事件
-
属性模型
经典蓝牙
-
更高吞吐
-
连续流
-
多专用协议
-
更像串口/音频链路
十七、给开发者的一个最终理解框架
如果你是应用开发者,可以把这两套体系记成下面这样:
17.1 BLE
像一个低功耗、分层清晰、结构化的远程属性系统
你要思考的是:
-
广播
-
扫描
-
连接
-
Service
-
Characteristic
-
Notify
-
吞吐量受 Link Layer 约束
17.2 经典蓝牙
像一个更接近持续连接和字节流通道的无线传输系统
你要思考的是:
-
建立连接
-
打开通道
-
连续数据流
-
RFCOMM / A2DP / HFP 等不同协议用途
十八、结语:真正重要的不是“背协议名”,而是建立整体模型
对蓝牙的理解,如果只停留在:
-
BLE 有 Service / Characteristic
-
经典蓝牙能传音频
-
BLE 低功耗
其实是非常碎片化的。
真正有价值的理解,是把它们放回同一条主线里:
电流变化 → 电磁波 → 载波 → 调制 → 物理层 → 链路层 → 协议层 → 应用模型
当你这样看时,会发现:
-
BLE 和经典蓝牙并不是两个毫无关系的世界
-
它们前面共享同样的物理基础
-
只是从 PHY 开始,为了不同目标,走向了不同的设计路线
于是很多零散问题也都会自然串起来:
-
为什么 BLE 低功耗
-
为什么 BLE 吞吐有限
-
为什么经典蓝牙适合流式传输
-
为什么高阶调制更快但更脆弱
-
为什么 GATT 和 ExternalAccessory 完全不像同一套东西
它们其实都只是同一个大系统,在不同设计目标下的不同实现。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)