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

BR/EDR PHY帧结构及其具体内容

BR/EDR(经典蓝牙)的 PHY 帧结构遵循严格的分层设计,用于在 2.4GHz 频段实现可靠数据传输,其结构可分为访问码(Access Code)、包头(包头)、有效载荷(Payload)和 CRC四个核心部分,具体内容和作用如下:

一、完整帧结构概览

BR/EDR PHY 帧的总长度可变(取决于有效载荷大小),各字段按顺序排列为:
访问码(72/68 位)→ 包头(54 位)→ 有效载荷(0~2712 位)→ CRC(16 位)

二、各字段详细解析

1. 访问码(Access Code)
  • 长度
    • 普通数据帧 / 控制帧:68 位
    • 特殊帧(如 ID 包、FHS 包):72 位(多 4 位同步前缀)
  • 组成与作用
    • 同步前缀(Sync Word):用于接收端的频率同步和帧同步,确保设备识别帧的起始位置。
    • 设备地址相关字段:由从设备的 BD_ADDR(MAC 地址)生成,用于区分不同微微网(Piconet),避免同频段干扰。
  • 类型
    • 广播访问码:用于设备发现阶段(如 Inquiry 过程)。
    • 连接访问码:每个连接唯一,由主设备基于从设备地址生成,仅主从设备知晓。
2. 包头(Header)
  • 长度:54 位(固定),包含 6 个 9 位字段(每个字段含 1 位校验位)。
  • 具体内容
    字段位数含义
    L_CH9逻辑信道号(0~79),标识数据所属的逻辑信道(如控制信道、用户数据信道)。
    TYPE9帧类型,区分数据帧(如 DH1、DM3)、控制帧(如 POLL、NULL)、同步帧(如 FHS)等。
    FLOW9流控制标志,指示接收端缓冲区状态(0:可接收,1:忙)。
    ARQN9自动重传请求标志,用于确认数据接收状态(0:未确认,1:已确认)。
    SEQN9序列号(0/1 交替),用于检测重复帧或丢帧。
    HEC9包头校验(Header Error Check),用于检测包头传输错误。
  • 核心作用:提供帧的控制信息,实现链路管理、流控制和重传机制。
3. 有效载荷(Payload)
  • 长度:0~2712 位(0~339 字节),随帧类型变化:
    • 控制帧(如 NULL、POLL): payload 长度为 0(无数据)。
    • 数据帧(如 DH5、3DH3): payload 长度最大 339 字节。
    • 同步帧(如 FHS):固定长度(如 FHS 包含 144 位设备信息)。
  • 内容
    • 数据帧:用户数据(如音频、文件数据)或高层协议消息(如 LMP、RFCOMM)。
    • FHS 帧:包含设备 BD_ADDR、时钟偏移、支持的功能等关键同步信息。
    • 控制帧:无实际数据,仅通过包头传递控制信号。
  • 编码
    • 基于帧类型采用不同编码(如 DH 系列无 FEC,DM 系列含 2/3 FEC 纠错码)。
4. CRC(循环冗余校验)
  • 长度:16 位。
  • 生成多项式x¹⁶ + x¹² + x⁵ + 1(蓝牙规范定义)。
  • 作用:对 “包头 + 有效载荷” 进行校验,接收端通过比对 CRC 值检测帧是否损坏,若错误则丢弃或请求重传。

三、典型帧类型示例

  1. DH1 帧(1 时隙数据帧):
    访问码(68 位) + 包头(54 位) + 有效载荷(240 位,30 字节) + CRC(16 位)。

  2. FHS 帧(频率跳变同步帧):
    访问码(72 位) + 包头(54 位) + 有效载荷(144 位,含设备地址和时钟) + CRC(16 位)。

  3. NULL 帧(无数据控制帧):
    访问码(68 位) + 包头(54 位) + 有效载荷(0 位) + CRC(16 位)。

总结

BR/EDR 的 PHY 帧结构通过访问码实现同步与设备识别包头提供控制与链路管理有效载荷传输实际数据CRC 保障完整性,兼顾了传输效率与可靠性。这种设计适配了经典蓝牙的高带宽需求(如音频传输),同时通过跳频和纠错机制应对 2.4GHz 频段的干扰。具体细节可参考蓝牙核心规范(Core Specification)中 “Baseband” 章节的帧结构定义。

http://www.dtcms.com/a/308252.html

相关文章:

  • Java高级用法之回调函数
  • PHP 核心特性全解析:从实战技巧到高级应用(2)
  • 财税企业经营管理秘籍(二):陌拜怎么做?
  • [Broken IOS] 配置CLI | 终端用户界面TUI
  • 如何利用 rowid 在OceanBase 中处理大表时提效
  • 【赵渝强老师】OceanBase租户的资源管理
  • TransportClient详细说一说
  • UI测试平台TestComplete如何实现从Git到Jenkins的持续测试
  • Odoo:免费开源的医疗器械行业解决方案
  • NPM打包时,报reason: getaddrinfo ENOTFOUND registry.nlark.com
  • JP3-3-MyClub后台后端(一)
  • Ubuntu 下配置 NVIDIA 驱动与 CUDA 环境(适配 RTX 4060Ti)
  • Unity残影效果实现全解析
  • 【AI应用】零售预测术:AI如何预判下一个“爆款”商品?
  • matlab画温度季节和年平均占比的三维柱状图
  • MySQL DDL数据定义的四个关键字
  • 39.MySQL索引
  • 【建模与仿真】二阶邻居节点信息驱动的节点重要性排序算法
  • Android 基础入门学习目录(持续更新)
  • 基于单片机恒温控制系统/温度控制系统/恒温箱设计
  • 学C笔记——更新于0731
  • T30_Keras示例(MINST)
  • 逻辑回归——银行贷款案例分析
  • 内存网格、KV存储和Redis的概念、使用场景及异同
  • 企业签名的多种形式
  • 【AI落地应用实战】基于 Amazon Bedrock + DeepSeek构建 GraphRAG 应用程序
  • 30. background-size 有哪些属性
  • IO流专题
  • socket编程-UDP(1)-设计echo server进行接口使用
  • FPGA实现AD9361采集转SRIO与DSP交互,FPGA+DSP多核异构信号处理架构,提供2套工程源码和技术支持