当前位置: 首页 > backend >正文

蓝牙协议GAP(Generic Access Profile)

GAP(Generic Access Profile)是蓝牙协议栈中的基础控制层协议,定义了设备如何发现、连接、安全交互及管理广播行为。它适用于经典蓝牙(BR/EDR)和低功耗蓝牙(BLE),是蓝牙通信的"交通规则"。


1. GAP的核心功能

功能经典蓝牙(BR/EDR)低功耗蓝牙(BLE)
设备发现与可见性通过Inquiry Scan/Page Scan通过Advertising/Scanning
连接管理角色:Master/Slave角色:Central/Peripheral
安全模式定义Legacy Pairing/SSP流程定义LE Secure Connections
广播控制有限支持(如Classic AMP广播)核心功能(Advertising Packet)

2. GAP设备角色

(1) 经典蓝牙(BR/EDR)

角色职责
Master发起连接,控制时钟同步,管理最多7个Slave(Piconet)。
Slave响应Master的请求,被动同步时钟。

(2) 低功耗蓝牙(BLE)

角色职责
Central主动扫描并连接Peripheral(如手机连接手环)。
Peripheral广播自身存在,等待Central连接(如心率传感器)。
Broadcaster仅广播数据,不建立连接(如信标)。
Observer仅扫描广播数据,不发起连接(如扫码设备)。

3. GAP关键流程

(1) 设备发现(Discovery)

经典蓝牙(BR/EDR)
  • Inquiry:Master发送查询请求,发现周围设备。

  • Inquiry Scan:Slave监听查询请求并响应(包含BD_ADDR和Class of Device)。

  • EIR(Extended Inquiry Response):可选扩展信息(如设备名称)。

低功耗蓝牙(BLE)
  • Advertising:Peripheral发送广播包(含UUID、设备名等)。

  • Scanning:Central监听广播并决定是否连接。

(2) 连接建立(Connection)

经典蓝牙
  1. Paging:Master通过Slave的BD_ADDR发起连接。

  2. Page Scan:Slave必须处于可连接状态。

  3. LMP协商:建立ACL链路并配置参数(如加密、功率控制)。

低功耗蓝牙
  1. Connection Request:Central发送CONNECT_REQ包。

  2. 跳频同步:双方根据Connection Interval同步通信信道。

(3) 安全模式(Security)

模式经典蓝牙低功耗蓝牙
Mode 1 (Non-secure)无加密或认证无加密
Mode 2 (Service)连接后按服务要求安全认证类似(基于GATT属性权限)
Mode 3 (Link)连接前强制认证(Legacy Pairing)LE Legacy Pairing
Mode 4 (SSP/LE SC)Secure Simple Pairing (SSP)LE Secure Connections

4. GAP广播与连接参数

(1) BLE广播参数

参数说明
Adv Interval广播间隔(20ms ~ 10.24s),影响功耗与发现速度。
Adv TypeADV_IND(可连接)、ADV_NONCONN_IND(仅广播)、ADV_DIRECT_IND(定向广播)。
Adv Data包含设备名称、UUID、Tx Power等(最大31字节)。

(2) BLE连接参数

参数说明
Connection Interval通信间隔(7.5ms ~ 4s),短间隔低延迟但高功耗。
Slave Latency从设备可跳过的通信事件数(0~499),用于节能。
Supervision Timeout连接超时(100ms ~ 32s),超时未通信则断开。

5. GAP实际应用示例

场景1:手机连接蓝牙耳机(经典蓝牙)

  1. 耳机进入Discoverable Mode(Inquiry Scan)。

  2. 手机发起Inquiry,发现耳机并获取其BD_ADDR。

  3. 手机通过Paging建立ACL链路,触发配对(SSP)

  4. 配对成功后,手机作为Master控制音频流(A2DP)。

场景2:智能手环与APP连接(BLE)

  1. 手环作为Peripheral,广播ADV_IND包(含心率服务UUID)。

  2. 手机(Central)扫描到广播后,发送CONNECT_REQ

  3. 双方协商Connection Interval=15ms,Slave Latency=3。

  4. 连接建立后,手机通过GATT读取心率数据。


6. GAP安全机制对比

安全特性经典蓝牙(SSP)低功耗蓝牙(LE SC)
配对方式Just Works/Passkey Entry/Numeric ComparisonPasskey Entry/Numeric Comparison/OOB
加密算法E0/AES(BR/EDR)AES-CCM
密钥长度128-bit128-bit
MITM保护部分模式支持强制(LE Secure Connections)

7. 常见问题

Q1: 如何区分GAP和GATT?

  • GAP:管"谁可以连接我"(角色、可见性、安全)。

  • GATT:管"连接后能做什么"(服务/特征值交互)。

Q2: BLE广播包能携带多少数据?

  • 最大31字节(若需更多数据,可使用Scan Response补充)。

Q3: 经典蓝牙是否支持广播?

  • 传统BR/EDR不支持广播,但部分设备通过AMP(Alternate MAC/PHY)扩展实现类似功能。


8. 总结

  • GAP是蓝牙通信的基石,统一管理设备发现、连接、角色和安全策略。

  • 经典蓝牙:基于Master/Slave架构,依赖Inquiry/Paging。

  • 低功耗蓝牙:通过Advertising/Scanning优化功耗,支持灵活角色。

  • 安全分级:从无认证到强制加密,适应不同场景需求。

http://www.xdnf.cn/news/13924.html

相关文章:

  • 报表工具顶尖对决系列 — Echarts 展现与导出
  • CC工具箱使用指南:【断线连接】
  • Oracle OCP认证考试考点详解083系列18
  • 如何在SOLIDWORKS工程图中添加材料明细表?
  • 关于联咏(Novatek )自动曝光中Lv值的计算方式实现猜想
  • win11系统安装jdk11教程
  • day22
  • Python 实现一个带进度条的 URL 批量下载工具(含 GUI 界面)
  • 第三节 类型系统进阶-接口(interface)与类型别名(type)的区别
  • 算法导论第三章:数据结构艺术与高效实现
  • 【Mysql及各种关系型数据库全面对比与深度解析(2025版)】
  • 第六章网络互联设备
  • 前端八股文 - CSS 篇
  • GPU-CPU-FPGA三维异构计算统一内存架构实践:基于OpenCL的跨设备Kernel动态迁移方案(附内存一致性协议设计)
  • 深入剖析 Spring @Bean 注解:灵活定义与掌控你的 Bean
  • 权限管理设计思路
  • 土地利用遥感解译 ➕ CLUE未来预测 | 技术流分享!
  • STM32 Bootloader:使用文件头加载并启动应用程序
  • 2.监控领域中行业黑话知识学习指南
  • 基于深度学习的智能文本生成:从模型到应用
  • Vue3 Router 使用指南:从基础到高级用法
  • NVIDIA Container Toolkit 报错 Failed to initialize NVML: Unknown Error 的解决
  • Java8新特性 consumer
  • 访客预约到访填写表单如何制作?
  • C语言二级指针和void *应用
  • 质因数分解_java
  • 前端开发冷知识-requestIdleCallback优化主线程任务调度的API
  • 微服务集成seata分布式事务 at模式快速验证
  • 《模拟》题集
  • 图像处理 | 如何动态调整CLAHE算法中的ClipLimit参数