news 2026/10/21 5:26:55

经典蓝牙的协议介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
经典蓝牙的协议介绍

经典蓝牙(Classic Bluetooth)通常指BR/EDR(Basic Rate / Enhanced Data Rate)蓝牙,是蓝牙1.0到5.x规范中用于音频、串口通信等场景的传统蓝牙技术。

对于嵌入式开发,理解经典蓝牙协议栈比记协议名称更重要。你可以把它理解为:

应用 ↓ Profile ↓ RFCOMM ↓ L2CAP ↓ HCI ↓ LMP ↓ Baseband ↓ Radio(PHY)

1. 协议栈总体结构

+------------------+ | A2DP | | HFP | | AVRCP | | SPP | +------------------+ | RFCOMM | | SDP | +------------------+ | L2CAP | +------------------+ | HCI | +------------------+ | LMP | +------------------+ | Baseband | +------------------+ | Radio | +------------------+

2. Physical Layer(PHY)

最底层无线收发器。

工作频段:

2.402 GHz ~ 2.480 GHz

采用:

FHSS Frequency Hopping Spread Spectrum

特点:

79个信道 每个1MHz 1600 hops/s

例如:

Ch1 ↓ Ch20 ↓ Ch56 ↓ Ch10

不断跳频。


3. Baseband

基带层。

负责:

  • 数据包封装
  • 时隙管理
  • 跳频控制
  • ACL/SCO链路管理

时隙(Slot)

经典蓝牙采用:

625us

一个时隙。

Master Tx Slave Tx

主从交替发送。


ACL链路

Asynchronous Connection Less

用于:

文件传输 串口传输 数据通信

例如:

SPP FTP OBEX

都走ACL。


SCO链路

Synchronous Connection Oriented

用于:

语音 电话

例如:

HFP Headset

4. LMP(Link Manager Protocol)

链路管理协议。

负责管理连接。


功能

连接建立

Paging Connection Setup

Pairing

PIN SSP

Authentication

身份认证 ``

Encryption

加密开关

AFH

AFH就是由LMP控制:

Adaptive Frequency Hopping

动态避开干扰信道。


5. HCI(Host Controller Interface)

HCI是面试高频内容。


作用

Host和Controller之间的接口。

Application ↑ Host ↑ HCI ↓ Controller

例如:

应用层要连接设备:

HCI_Create_Connection

控制器返回:

Connection Complete

常见传输方式:

UART USB SDIO PCIe

很多蓝牙芯片接MCU:

MCU <----UART----> BT Chip

就是HCI接口。


6. L2CAP

Logical Link Control and Adaptation Protocol

L2CAP非常重要。

相当于蓝牙的传输层。


功能

数据复用

多个协议共享ACL链路:

RFCOMM SDP OBEX

同时运行。


分包重组

如果应用发送:

1000 Bytes

而链路每次只能传:

339 Bytes

L2CAP负责:

Segmentation Reassembly

QoS管理

支持:

优先级 流量控制

7. SDP(Service Discovery Protocol)

服务发现协议。

作用:

发现对方支持什么服务

流程:

Connect ↓ SDP Query ↓ Service List

例如:

SPP A2DP HFP AVRCP

手机连接耳机时:

先通过SDP知道:

耳机支持: A2DP AVRCP HFP

然后建立对应连接。


8. RFCOMM

嵌入式开发最常见协议。

RFCOMM模拟串口。


原理

UART ↓ RFCOMM ↓ L2CAP ↓ Bluetooth

对于上层来说:

和串口几乎一样

SPP

Serial Port Profile

建立在RFCOMM之上。

SPP ↓ RFCOMM ↓ L2CAP

很多蓝牙模块:

HC-05 HC-06 BC417

实际上就是:

SPP透传

开发体验:

send("hello")

另一端直接:

receive("hello")

非常像UART。


9. 常见Profile

Profile(配置文件)定义应用行为。


SPP

串口透传

SPP ↓ RFCOMM ↓ L2CAP

适用:

  • MCU通信
  • 工业设备
  • 调试工具

A2DP

Advanced Audio Distribution Profile

音乐传输。

Phone ↓ SBC/AAC ↓ A2DP ↓ Headset

例如:

蓝牙耳机听歌 ``

AVRCP

Audio Video Remote Control Profile

控制音乐播放。

支持:

Play Pause Next Volume

HFP

Hands-Free Profile

蓝牙通话。

接电话 挂电话 语音传输

车载蓝牙大量使用。


HID

Human Interface Device

键盘鼠标。

Bluetooth Keyboard Bluetooth Mouse

OPP

Object Push Profile

文件传输。

例如老手机时代:

传照片 传联系人

10. 经典蓝牙连接过程对应协议

Inquiry ↓ Page ↓ ACL Connection ↓ LMP ↓ Authentication ↓ Encryption ↓ SDP ↓ Profile建立 ↓ RFCOMM/A2DP/HFP ↓ Data Transfer

例如手机连接蓝牙串口模块:

Inquiry ↓ 发现HC05 ↓ Page ↓ ACL ↓ Pairing ↓ SDP ↓ 发现SPP服务 ↓ RFCOMM建立 ↓ UART数据透传

11. 面试常问

Q1:RFCOMM和SPP是什么关系?

SPP = Profile RFCOMM = Protocol ``

关系:

SPP ↓ RFCOMM ↓ L2CAP

Q2:为什么RFCOMM像串口?

因为RFCOMM实现了:

RS232串口模拟

上层看到的是:

COM Port

Q3:ACL和SCO区别?

ACL:

数据 可重传 可靠

SCO:

语音 不重传 实时性高

Q4:经典蓝牙和BLE最大的协议区别?

经典蓝牙:

SDP RFCOMM SPP A2DP HFP

BLE:

ATT GATT Service Characteristic

经典蓝牙主要围绕RFCOMM/SPP/A2DP/HFP构建;BLE主要围绕GATT服务和Characteristic属性构建,这是两套完全不同的上层协议体系。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 5:25:29

RAG+LangChain实战:从私有知识库问答到大模型落地

现在很多做实际业务的人一看到“大模型”三个字&#xff0c;第一反应都是“我能不能拿它来问答我的私有文档”。真把这个需求做一遍就会发现&#xff0c;直接丢给大模型硬答&#xff0c;结果基本不能看——要么胡说八道&#xff0c;要么答非所问&#xff0c;要么就是“我不知道…

作者头像 李华
网站建设 2026/10/21 5:25:26

加密课程设计实战:AES、RSA与数字签名代码全解析

简介&#xff1a;这是面向高校网络安全课程设计的一套加密技术资料包&#xff0c;主要服务于网络工程、信息安全、计算机等专业需要完成“加密技术”相关课题的本科生。资源以RSA加密算法为核心&#xff0c;既提供了完整的课程设计报告&#xff0c;又附带了对应的C语言源程序&a…

作者头像 李华
网站建设 2026/10/21 5:25:07

深入理解Containerd:容器运行时架构、实操与Kubernetes实践

1. 为什么Containerd值得单独拎出来讲很多刚接触云原生的人&#xff0c;一上来就被Kubernetes、Docker、Containerd、CRI-O这一堆名词绕晕。我见过不少项目里的同事&#xff0c;明明宿主机上装着Docker&#xff0c;结果发现Kubernetes集群用的运行时根本不是它&#xff0c;而是…

作者头像 李华
网站建设 2026/10/21 5:24:55

A2A协议实战:从最小示例到多Agent协作避坑指南

上篇我们把 A2A 协议的基本定位、AgentCard 的作用、Task 状态机的雏形都过了一遍。今天这篇换一个角度&#xff0c;不再停留在“A2A 是什么、为什么需要它”&#xff0c;而是直接聊“怎么把它跑起来”。我会用一个最小可运行的示例把整个通信链路打通&#xff0c;再拆解任务状…

作者头像 李华