01-蓝牙协议栈介绍

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:查看短信。 【蓝牙短信访问协议】

蓝牙协议的简化架构图
01-蓝牙协议栈介绍_第1张图片

协议栈说明:
  1. Application(应用层)
    • 这是用户直接接触的部分,比如用蓝牙耳机听音乐、接电话。
    • 应用层通过调用协议层实现具体功能
  2. Profiles(协议层)
    • 协议层定义了具体的功能,比如HFP用于电话,A2DP用于音乐。
    • 每个协议对应一种特定的应用场景。
  3. Host Layer(主机层)
    • 主机层负责管理蓝牙设备的连接、数据传输和安全。
    • 包括GAP(通用访问配置)、GATT(通用属性协议)、ATT(属性协议)等。
  4. Controller(控制器层)
    • 控制器层负责蓝牙的底层通信,包括HCI(主机控制接口)、LL(链路层)、PHY(物理层)。
    • 这一层决定了蓝牙的通信方式(如广播、连接)。
  5. 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应用

你可能感兴趣的:(嵌入式+蓝牙音频,单片机,BLE蓝牙,蓝牙协议,嵌入式音频)