蓝牙协议栈分层

蓝牙协议栈分层

更详细的蓝牙协议栈可参考文章:“深入浅出低功耗蓝牙(BLE)协议栈”!
谷雨物联网文档中心/NRF52832DK


蓝牙协议栈的分层, 所有 Profile (配置文件层)和应用都建构在GAP或GATT之上。

  • PHY——物理层(Physical Layer):1Mbps自适应跳频GFSK(高斯频移键控调制),运行在免征的2.4GHz ISM(工业、科学、医疗)频段。
  • LL——链路层(Link Layer):此层为RF控制器,用于控制设备的射频状态,控制设备会处于5种状态之一:standby(准备)、advertising(广播)、scanning(监听/扫描), initiating(发起连接)、connected(已连接) 。五种状态的切换描述为:advertising(广播)不需要连接就可以发送数据(告诉所有人,我来了);
    scanning(监听/扫描)来自广播的数据;initiator(发起人)将携带 connection request(连接请求)来响应广播者,如advertiser(广播者)同意该请求, 那么广播这和发起者都会进入已连接状态, 发起连接的设备变为 master(主机),接收连接请求的设备变为 slave(从机)。
  • HCI——主机控制接口层(Host Controller Interface):为主机和控制器之间提供一个标准通信接口。这一层可以通过软件API或硬件接口实现,例如 UART、SPI、USB。
  • L2CAP——逻辑链路控制及自适应协议层(Logical link Control and Adaptation Protocol):相当于快递,将数据打包,为上层提供数据封装服务,允许逻辑上的点对多点数据通信。
  • SM——安全管理层(Security Manager):定义了配对和密钥分配方式。并为协议栈的其它层和其它设备之间的安全连接和交换数据提供服务。
  • GAP——通用访问配置文件层(Generic Access Profile):是直接与应用程序或配置文件 (profiles)通信的接口,处理设备发现和连接相关服务,另外还处理安全特性的初始化。对上级提供应用程序接口,对下级管理各级智能部门,尤其是指示LL层控制器5种状态切换。GAP目前主要用来进行广播,扫描和发起连接等。
  • ATT——属性协议层(Attribute Protocol):允许设备向其它设备展示一块特定的数据,称之为“属性(attribute)”。在ATT环境中,展示“属性”的设备称之为服务器,与之配对的设备称之为客户端。链路层状态(主机和从机)与设备的ATT角色是相互独立的。例如,主机设备既可以是ATT服务器,也可以是ATT客户端。从机设备可以是ATT客户端,也可以是ATT服务端。
  • GATT——通用属性配置文件层(Generic Attribute Profile):定义了使用ATT的服务框架。GATT规定了配置文件(profiles)的结构。在BLE中,所有被profile或服务器用到的数据块都称之为“特征(characteristic)”。两个建立连接的设备之间的所有数据通信都是通过GATT子程序处理。应用程序和profiles直接使用GATT层。GATT负责处理向上与应用打交道,其关键工作是为检索工作提供合适的profile结构,而profile由检索关键词(characteristics)组成。
    在这里插入图片描述

在 Bluetooth-LE中有四种设备类型:Central主机、Peripheral从机、Observer观察者、Broadcaster广播者。
GATT有Service和Client之分,对一般情况下,Central 作为Client,GATT Client提供 ,Peripheral 作为 Service ,所以主机 Central会调read/write 接口来和作为Service端的 Peripheral从机通信, 而Peripheral 需要通过notify的方式调用GATT_Notification 发起和主机的通信,一般Peripheral notify的方式速度要比直接读写的速度要慢。

<think>好的,用户想要查找蓝牙协议栈的架构图,可能是为了学习或设计蓝牙相关系统。我需要先回忆一下蓝牙协议栈的基本结构,然后结合提供的引用内容来组织回答。 首先,根据引用[1],蓝牙Profile是使用核心协议实现的,所以架构图里应该包含这些核心协议层。经典蓝牙和低功耗蓝牙(BLE)的协议栈有所不同,可能需要分别说明。 引用[2]提到了不同的开源协议栈,比如Zephyr和btstack,它们的架构可能有差异。用户可能需要了解通用架构以及具体实现的不同之处。 引用[3]提到ESP32的GAP层使用API和事件机制,这说明在架构图中,GAP属于协议栈的一部分,并且涉及应用层与协议栈的交互。 接下来,我需要分层次描述协议栈的结构,从底层射频到高层Profile。注意区分经典蓝牙和BLE的不同,比如BLE没有像SPP这样的传统协议,而是使用GATT。 用户可能需要架构图的文字描述,因为没有图片,所以需要用文字详细说明各层,并举例说明常见的协议和Profile,如HCI、L2CAP、GATT、GAP等。同时,结合引用中的例子,比如SPP和GAP的组合使用。 还需要考虑系统设计时的要点,比如选择双模协议栈、协议栈类型(开源或商业)、API设计等,引用[2]中的信息可以帮助说明这些考虑因素。 最后,生成相关问题,帮助用户深入理解架构和应用场景。确保问题覆盖性能分析、协议选择、开源方案比较等方向。</think>### 蓝牙协议栈架构及系统设计要点 #### 1. **蓝牙协议栈分层架构(通用模型)** 蓝牙协议栈采用分层设计,以下是核心分层结构(以双模蓝牙为例): $$ \begin{array}{|c|c|} \hline \text{应用层} & \text{Profile层(SPP/HFP/A2DP/GATT等)} \\ \hline \text{高层协议} & \text{RFCOMM/SDP/AVDTP/AVCTP/ATT/GATT} \\ \hline \text{逻辑链路控制} & \text{L2CAP} \\ \hline \text{主机控制器接口} & \text{HCI(Host-Controller Interface)} \\ \hline \text{控制器层} & \text{Link Layer(BLE)/ Baseband(经典蓝牙)} \\ \hline \text{物理层} & \text{RF射频(2.4GHz ISM频段)} \\ \hline \end{array} $$ #### 2. **经典蓝牙与BLE协议栈差异** - **经典蓝牙** 侧重语音/数据传输,包含以下核心协议: - $RFCOMM$(串口仿真协议) - $SDP$(服务发现协议) - $AVDTP$(音视频传输协议)[^1] - **低功耗蓝牙(BLE)** 面向低功耗设备,核心协议简化: - $ATT$(属性协议) - $GATT$(通用属性协议) - 扁平化的$L2CAP$层[^3] #### 3. **关键协议层功能说明** 1. **HCI层** 主机(Host)与控制器(Controller)的通信桥梁,通过$HCI Command/Event$机制传输数据包[^2]。 2. **L2CAP层** 提供逻辑信道复用和分段重组功能,协议信道标识公式: $$CID = \text{0x0001} \sim \text{0xFFFF}$$ 例如:$CID=0x0004$为ATT信道[^3]。 3. **GAP/GATT(BLE核心)** - $GAP$:定义设备角色(广播者/观察者/外围设备/中心设备) - $GATT$:基于属性的数据交互模型,服务定义公式: $$Service = \{UUID, Characteristics\}$$[^3] #### 4. **系统设计要点** 1. **协议栈选择** - 双模需求:需支持$BR/EDR+BLE$协议(如Zephyr部分支持[^2]) - 开源方案对比: $$Bluedroid \supset BlueZ \supset Zephyr \text{(API友好)} \supset btstack \text{(无OS依赖)}$$[^2] 2. **Profile实现** - 标准Profile直接复用(如$HID$) - 自定义Profile需组合协议接口,例如: ```c // Zephyr中注册心率服务 BT_GATT_SERVICE_DEFINE(heart_svc, BT_GATT_PRIMARY_SERVICE(BT_UUID_HRS), BT_GATT_CHARACTERISTIC(BT_UUID_HRS_MEASUREMENT, BT_GATT_CHRC_NOTIFY,...) ); ``` 3. **事件驱动机制** BLE设备需实现事件回调函数处理协议栈响应: $$on\_event = f(evt\_type, evt\_data)$$ 例如ESP32的GAP事件处理流程[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值