首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

BLE(3)—— 空口数据包组成

  • 24-03-03 17:21
  • 3457
  • 9676
blog.csdn.net

基于 BLE 5.1 协议 Core Spec。

BLE 在空中进行数据传送,在 Spec 中称之为 Air Interface packets,俗称空口包。既然是数据包,就一定要遵循一定的数据格式,本章来分析空口数据包的最基本的组成格式。

早在 BLE 4.2 的时代,仅仅支持 1M 的 symbol rate,随着蓝牙标准的发展,BLE 5.0 不仅仅支持了 1M PHY,同时引入了 2M PHY 和 Coded PHY(500kbps 和 125kbps)。这里分两组:

  • Uncoded PHY:1M、2M
  • Coded PHY: 500kbps、125kbps

SIG 宣称的 BLE 5.0 的 Rate X 2,指的就是引入了 2M PHY

Coded PHY 的数据传送,又称 Long Range,能够支持更远的数据传送(稍后分析原因)

 

1、Uncoded PHY 空口包格式

什么叫 Uncoded PHY 呢?指的就是传送数据的时候,数据实打实的,未经过额外的编码的。数据的格式如下所示:

• Preamble ----------------------------空口包的前导,PHY 层含义

• Access Address -------------------接入地址,用来标示接收者ID或者空中包身份

• PDU -----------------------------------protocol data unit 协议数据单元

• CRC ----------------------------------- PDU 的 24 bits CRC 计算值,用于校验数据正确性

• Constant Tone Extension --------- CTE 可选项,BLE 5.1 引入,后面会解释

 

1.1、 Preamble

Preamble 指的是前导的意思,他是 BLE 数据传送中,最先传输的部分。

Preamble 是 1010 的序列,到底是以 1010....开始呢,还是以 0101... 开始呢?这里主要是根据 Access Address (AA)的 LSB 来决定,AA 的 LSB 是1,则前导是 1010...,否则是 0101...

前导根据不同的 PHY 分为两类:

1M 的 Preamble

1M 的 Preamble 是 8 bits 的,当 AA 的 LSB 是 1 的时候 Preamble 是:

 

当 AA 的 LSB 是 0 的时候 Preamble 是:

 

2M 的 Preamble

2M 的 Preamble 是 16 bits 的

当 AA 的 LSB 是 1 的时候 Preamble 是:

当 AA 的 LSB 是 0 的时候 Preamble 是:

 

1.2、Access Address

Access Address 成为接入地址(与设备的 48 bits 地址不一样)。用来标示接收者ID或者空中包身份

根据 Access Address 的不同,又区分两种 Packet 类型:广播包和数据包:

  • 广播包Access Address 固定为0x8E89BED6,广播包只能在广播信道(channel)上传输,即只能在37/38/39信道上传输(注:从蓝牙5.0开始广播包可以在其它信道上传输)。广播包发送给附近所有的observer(扫描者)。
  • 数据包Access Address为一个32bit的随机值,由Initiator生成。数据包,其实是数据信道上的空中包的简称,数据包只在数据信道上传输,即除37/38/39之外的其余37信道(BLE总共占用40个信道)。每建立一次连接,重新生成一次Access address。数据包是给连接通信使用的,即用于master和slave之间通信的。

AA 又称同步字段,在 Connection 建立的时候,双方进行数据传送,如果未发现 AA 或者错误,则称为 Sync Error。

AA 对于 Connection ,是随机生成的 32 bits 数,但是要满足一些关系:

• It shall not be the Access Address for any existing Link Layer connection on this device.
• It shall not be the Access Address for any enabled periodic advertising train.
• It shall have no more than six consecutive zeros or ones. 
• It shall not be the advertising channel packets’ Access Address.
• It shall not be a sequence that differs from the advertising physical channel packets’ Access Address by only one bit.
• It shall not have all four octets equal.
• It shall have no more than 24 transitions. 
• It shall have a minimum of two transitions in the most significant six bits.

 

1.3、PDU

PDU(protocol data unit,协议数据单元)是 BLE 数据传送的基本单元,在不同的状态下 PDU 的组成也不尽相同,后面会描述不同状态下的 PDU 的组成,这里暂时先有一个概念即可:PDU 是数据组成的单元。

 

1.4、 CRC

所有的数据传送,都有数据正确性的校验,BLE 也一样,BLE 使用了 24bits 的CRC 来进行数据完整的说明。CRC 跟在 PDU 后, 计算包含 PDU 域的 CRC 24 的数据。

 

1.5、 Constant Tone Extension

这个域是 BLE 5.1 新增的,最主要的功能是 AoA/AoD (蓝牙定位)的应用,是一个可选的数据项,后面再分析 AoA/AoD (蓝牙定位)的时候,在详细分析。

 

2、Coded PHY 空口包格式

BLE 5.0 以后,便支持了 Long Range,支持 Long Range 的方式呢,主要是引入了 Coded PHY。Coded PHY 分为两种:

500kbps

125kbps

所谓 Coded PHY呢,就是将数据传送的时候,不光是 raw data,而是加上了一个 FEC 向前纠错编码,使得在降低传送速率的前提下,对数据进行编码(FEC),达到数据低错的目的。

它的包格式为:

分为了两种:

S=2       --------      500kbps

S=8       --------      125kbps

每个域的长度和时间:

说白了,就是以牺牲速度(低速)来换数据准确传送(通过 FEC 数据编码)。有兴趣的同学可以自行参考 Core Spec 5.1 中的 FEC 章节,看看这几部分是如何计算的。

 

注:本文转载自blog.csdn.net的爱洋葱的文章"https://blog.csdn.net/zhoutaopower/article/details/94676596"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top