01-蓝牙协议栈介绍
三种方案对比:方案单芯片方案蓝牙+MCU方案Host+Controller方案适用场景蓝牙音响、蓝牙耳机智能手环、智能手表手机、平板等复杂设备功能复杂度功能固定,较简单功能中等,需要额外处理能力功能复杂,需要高性能处理开发难度低中等高成本低中等高功耗低中等高蓝牙协议栈位置集成在单芯片中蓝牙芯片负责通信,MCU负责逻辑处理蓝牙协议栈在主芯片中,蓝牙芯片负责底层通信。
01 蓝牙入门-蓝牙协议栈介绍
一、蓝牙类型
| 特性 | 经典蓝牙(BR,EDR) | 低功耗蓝牙(BLE) | 备注 |
|---|---|---|---|
| 全称 | Basic Rate / Enhanced Data Rate | Bluetooth Low Energy | 经典蓝牙在嵌入式领域基本被放弃使用,现在着重使用低功耗蓝牙 |
| 主要用途 | 音频传输 | 低功耗设备 | 经典蓝牙适合大数据传输,BLE适合小数据、低功耗场景 |
| 传输速度 | 1-3 Mbps | 1 Mbps | |
| 功耗 | 高 | 极低 | BLE的功耗是经典蓝牙的1/10到1/100,适合电池供电设备 |
| 连接时间 | 较长(通常需要几秒) | 极短(毫秒级) | BLE连接快,适合频繁连接和断开的场景 |
| 兼容性 | 仅支持经典蓝牙 | 仅支持BLE的蓝牙 | 双模蓝牙设备可以同时支持经典蓝牙和BLE,兼容性更强 |
说明:
- 这两种协议都包括 搜索管理,连接管理等机制,但他们底层是相互独立,不能互通的技术
- 厂家如果只实现了一种,那么只能与同样实现该技术的设备互通,如果厂家需要所有的蓝牙设备互通,那么就必须同时实现两种技术,而不去管是否真的需要
二、方案介绍
三种方案对比:
| 方案 | 单芯片方案 | 蓝牙+MCU方案 | Host+Controller方案 |
|---|---|---|---|
| 适用场景 | 蓝牙音响、蓝牙耳机 | 智能手环、智能手表 | 手机、平板等复杂设备 |
| 功能复杂度 | 功能固定,较简单 | 功能中等,需要额外处理能力 | 功能复杂,需要高性能处理 |
| 开发难度 | 低 | 中等 | 高 |
| 成本 | 低 | 中等 | 高 |
| 功耗 | 低 | 中等 | 高 |
| 蓝牙协议栈位置 | 集成在单芯片中 | 蓝牙芯片负责通信,MCU负责逻辑处理 | 蓝牙协议栈在主芯片中,蓝牙芯片负责底层通信 |
三、蓝牙协议栈
- HFP:接电话、挂电话。 【蓝牙电话协议】
- A2DP:听音乐。 【蓝牙音频传输协议】
- AVRCP:切歌、调音量。 【蓝牙音视频远程控制协议】
- PBAP:同步联系人。 【蓝牙电话本访问协议】
- MAP:查看短信。 【蓝牙短信访问协议】
蓝牙协议的简化架构图
协议栈说明:
- Application(应用层):
- 这是用户直接接触的部分,比如用蓝牙耳机听音乐、接电话。
- 应用层通过调用协议层实现具体功能
- Profiles(协议层):
- 协议层定义了具体的功能,比如HFP用于电话,A2DP用于音乐。
- 每个协议对应一种特定的应用场景。
- Host Layer(主机层):
- 主机层负责管理蓝牙设备的连接、数据传输和安全。
- 包括GAP(通用访问配置)、GATT(通用属性协议)、ATT(属性协议)等。
- Controller(控制器层):
- 控制器层负责蓝牙的底层通信,包括HCI(主机控制接口)、LL(链路层)、PHY(物理层)。
- 这一层决定了蓝牙的通信方式(如广播、连接)。
- Hardware(硬件层):
- 硬件层是蓝牙芯片和射频模块,负责实际的信号发送和接收。
架构的核心部分
蓝牙协议架构分为两部分:Host(主机)**和**Controller(控制器)。这两部分通过**HCI(主机控制接口)**连接在一起,负责传递指令和数据。上层是逻辑实现,接近应用层,主要负责实现某些具体功能。下层是链路层,负责在数据通信时通过蓝牙协议进行传输。【蓝牙协议的主要修改通常集中在BT Controller这一层】
Host负责逻辑功能,决定设备做什么。它处理高层的协议和应用逻辑,比如GAP、GATT、ATT等,确保设备能够执行特定的任务,如数据传输、设备发现、连接管理等。
Controller负责底层通信,决定设备怎么做。它管理物理层和链路层的操作,包括射频信号的发送与接收、数据包的封装与解析、链路的建立与维护等。Controller是蓝牙通信的“执行者”,确保数据能够准确、高效地在设备之间传输。
HCI是连接Host和Controller的桥梁,确保它们能够协同工作。HCI通过标准化的接口传递指令和数据,使得Host和Controller可以独立开发,但又能无缝配合。HCI可以通过硬件接口(如UART、SPI、USB)或软件API实现。
在蓝牙芯片的选择上,有单模芯片和双模芯片两种。单模芯片只支持一种蓝牙技术,功能相对单一,通常用于低功耗蓝牙(BLE)应用。双模芯片则支持两种蓝牙技术,既能支持经典蓝牙(BR/EDR),也能支持低功耗蓝牙(BLE),功能更强大,兼容性更好,适合需要同时支持多种蓝牙应用的场景。
协议栈是蓝牙设备的“操作手册”,定义了设备如何完成任务。它包含了从物理层到应用层的所有协议和规范,确保设备能够按照统一的标准进行通信。协议栈的实现通常由芯片厂商提供,开发者只需要在其基础上开发应用即可。
总结来说,蓝牙协议架构的核心在于Host和Controller的分工协作,HCI作为两者的桥梁,确保指令和数据的顺畅传递。单模芯片和双模芯片的选择取决于应用需求,而协议栈则是蓝牙设备能够正常工作的基础。理解这些层次和模块的作用,能够帮助我们更好地开发和优化蓝牙应用
官方文档说明
蓝牙协议栈极其复杂,官方文档有800多页,是由几家大型的公司联合起来,各自负责自己擅长的领域,最终实现的。初学者研究这个东西,不利于快速的上手学习和实用产品的开发,除非在蓝牙领域有十多二十年了,想成为蓝牙方面的专家,那你去彻底的把蓝牙协议吃透,那是可以的,作为初学者只需要简单了解,芯片的厂家一般会把蓝牙协议栈封装好,去做在芯片里面,我们直接使用就可以
快速上手应用开发
要实现一个BLE应用,首先得有个支持BLE射频的芯片,还得有个配套的BLE协议栈,最后在协议栈上开发自己的应用。通常这些都已经封装在芯片里了,我们只需要在此基础上开发应用即可。协议栈的作用就是对应用数据进行层层封包,生成一个符合BLE协议的空中数据包。简单来说,就是把应用数据包在一系列的帧头和帧尾里。
物理层(PHY)主要负责在物理信道上发送和接收数据包。BLE使用了40个射频信道,频率范围在2.4GHz(用来发送0和1)。链路层(LL)主要负责创建、修改和释放链路。它控制链路层状态机处于五种状态之一:准备、广播、扫描、发起连接、已连接。主机控制接口层(HCI)为主机和控制器提供了一个标准化的接口。这层可以通过软件API实现,或者使用硬件接口如UART、SPI、USB来控制。
HOST层包括几个关键部分。通用访问配置层(GAP)代表了所有蓝牙设备通用的基本功能,比如设备发现、链接模式、安全、身份验证等。GAP服务包括设备的发现、链接模式、安全、身份验证、关联模块和服务发现。通信方式有两种:一种是单独开辟的信道用来配对链接,另一种是核心的信道用来发送数据。L2CAP层负责数据的分段重组和发送。不管是通过GAP和SMP进行数据配对,还是GATT和ATT进行数据传输,最后都要通过L2CAP进行数据的中转操作。安全管理层(SMP)是和GAP配套的,当你进行配对连接时,会用到SM层。这里会生成加密密钥和身份密钥,并管理它们的存储。SMP还负责生成随机地址,并将随机地址解析为已知设备身份。通用属性配置文件(GATT)用于配置属性文件,表述属性服务可选的客户端功能。不同的特征表示不同的操作,比如有的特征是写,有的是读。属性协议层(ATT)是封装了的数据传输协议。
了解到这里就足够了。后续使用蓝牙时,上面这些内容通常都被厂家直接封装在芯片里,我们不需要过多关注。学习的重心应该放在如何使用蓝牙芯片上。
在BLE中,设备可以划分为主机和从机。从机负责广播,主机可以发起连接。通常设备作为从机,而主机往往是手机。GATT角色中,设备可以分为服务端和客户端。主机和从机都可以作为服务端或客户端。在配对连接时,需要一个编码来识别蓝牙设备,类似于身份证号码。公共地址是48位,商业收费,具有全球唯一性。随机地址是厂家免费使用,提高了隐私和数据安全性。
总结来说,BLE的应用开发,核心在于理解如何使用蓝牙芯片,而不是深入协议栈的底层细节。掌握GAP、GATT、ATT等高层协议的使用,能够帮助我们快速实现BLE应用。
使用,提高了隐私和数据安全性。
总结来说,BLE的应用开发,核心在于理解如何使用蓝牙芯片,而不是深入协议栈的底层细节。掌握GAP、GATT、ATT等高层协议的使用,能够帮助我们快速实现BLE应用
更多推荐



所有评论(0)