什么?低功耗蓝牙链路层如此简单!


Hello,我是无赖的猴子,一个蓝牙爱好者,分享蓝牙相关的知识,关注我,学习蓝牙:

蓝牙文章链接直达: 👇

1.profile层(待更新)

2.属性协议层(ATT)(待更新)

3.安全管理协议层(SMP)

4.通用访问协议层(GAP)(待更新)

5.通用属性协议层(GATT)(待更新)

6.逻辑链路控制和适配协议层(L2CAP)

7.主机控制器接口层(HCI)

8.链路层(LL)

9.低功耗蓝牙链路层数据格式汇总(一)

10.低功耗蓝牙链路层数据格式汇总(二)

11.蓝牙应用

在这里插入图片描述

低功耗蓝牙协议栈架构

LL层(LinkLayer)

今天我们要唠唠蓝牙协议栈的链路层(LinkLayer)。

  • 链路层描述位于蓝牙5.4核心协议卷6PartB。链路层处于协议栈的底部,在物理层之上,可以说它是数据包最后的裁判员,规定了数据在空中的传输格式。
  • 链路层总体主要包含状态机、空中数据包格式、以及数据包传输顺序及步骤等,总的来说就是负责与对端设备数据传输的首要接口(最下面的物理层负责射频相关)。

下面咱们来具体说说链路层的相关功能:

一、状态机

  • 链路层(Link Layer)在蓝牙协议栈中控制器(controller)中,处于物理层的上方,逻辑控制器接口的下方,统领空中数据格式。
  • 链路层中定义了最重要的状态机,共5种,分别为扫描态、就绪态、初始态、连接态、广播态。在这五种状态下面定义了各自的数据包格式,时序规范和接口协议,但是同一时间只允许处于一个状态。

例如设备处在扫描态时,就可发送扫描请求数据包,对方设备通过数据包的格式回应请求。

在这里插入图片描述

二、设备地址

  链路层规定了设备地址分为公共地址(Public device address)和随机地址(Random device address),随机地址又包含了静态地址(Static address)和私有地址( Private address),如下图所示:
在这里插入图片描述

  • 随机地址的出现是为了增加蓝牙设备的安全性能,像不可解析地址在蓝牙中使用对应IRK密匙解析(密匙在蓝牙SM层中会讲),增加安全性能。

三、信道

  链路层规定了1-39信道中37、38、39为主要广播信道,分别对应RF频率2402MHz、2426MHz、2480MHz,其余信道为次要信道,用于数据传输等(蓝牙5.4更新的带响应广播Pawr在次要信道广播)。

四、帧间隔

  在观察广播数据包中我们总是可以观察到一个150µs的间隔,这个在链路层中被定义,称为帧间隔,名为“T_IFS”。除此之外还规定了扩展广播数据包 (T_MAFS)间隔必须大于 300 µs。最小子事件间隔(T_MSS)也为150µs。这个最小子事件也属于Pawr,后面我们会讲到。

五、数据流

  数据流分为非编码型物理层和编码型物理层,编码型物理层的结构更加复杂。

5.1 非编码型物理层:

在这里插入图片描述

  • 数据发送过程如图所示,分别经过加密、生成CRC校验信息,最后发送出去。数据接收则是发送的反过程。
  • 数据白化(whitening)的目的是为了防止出现连续0或1,因为接收端长时间接收0或1会认为信号出现了频偏。
5.2 编码型物理层

在这里插入图片描述
编码型物理层的编码过程包含前向纠错编码(FEC)和模式映射(Pattern Mapper)两个子过程。

前向编码将原始数据做卷积处理,处理后1个比特原始数据变成2个比特。

模式映射的目的整理输出前向错误编码数据,对卷积结果进行展宽,展宽映射如下:

  最终,在P=1即(S=2)情况下保持输出不变,P=4即(S=8)情况下输出展宽为4个bit。冗余的比特可以用来自矫正,从而减少重传次数,间接的提升了接收灵敏度。蓝牙5.4中更新了关于这部分的描述,使得我们可以将广播数据设置为S=2或S=8的发送模式,来提高传输的距离,但缺点就是传输速率响应也会变低。(S=2,500 kb/s; S=8,125kb/s)。

六、特征支持

  链路层规定了一系列的特征来向对端设备表明自己支持哪些功能,这些特征会包含在一个LL_FEATURE_REQ的数据包中,并在连接成功后发向对方设备。

部分特征位定义如下:
在这里插入图片描述
关于这些特征功能的描述我们之后也会展开讲。

七、PDU

蓝牙核心协议链路层规定了空中协议广播信道与数据信道数据包的主要格式。

  • 蓝牙链路层数据包格式
    在这里插入图片描述
    数据包的具体格式含义我们在另一篇文章再详细讲。这里我们只需要有个整体的认识即可。
7.1 广播信道PDU
  • 根据数据包的不同,在数据包的pdu字段中又定义成了不同的格式:
    广播信道

广播PDU又分为以下几种:

7.1.1 普通广播PDU
PDU类型意义
ADV_IND普通广播
ADV_DIRECT_IND直连PDU,顾名思义根据指定地址连接
ADV_NONCONN_IND无连接PDU,即设备不可连接时广播的PDU
ADV_SCAN_IND扫描,从设备广播PDU,主设备扫描,从而进行连接过程
7.1.2 扩展广播PDU
PDU类型意义
ADV_EXT_IND扩展广播主信道PDU
AUX_ADV_IND扩展广播次要信道PDU
AUX_SCAN_RSP扩展广播扫描响应PDU
AUX_SYNC_IND周期广播使用
AUX_CHAIN_IND额外数据包,通常用于多广播包
AUX_CONNECT_RSP扩展广播连接响应PDU
AUX_SYNC_SUBEVENT_IND用于PAWR(带响应的周期广播)
AUX_SYNC_SUBEVENT_RSP用于PAWR(带响应的周期广播)
7.1.3 扫描PDU
PDU类型意义
SCAN_REQ扫描请求PDU
SCAN_RSP扫描响应PDU
AUX_SCAN_REQ扩展广播扫描请求PDU
AUX_SCAN_RSP扩展广播扫描响应PDU
7.1.4 连接PDU
PDU类型意义
CONNECT_IND连接请求PDU
AUX_CONNECT_REQ扩展广播连接请求PDU
AUX_CONNECT_RSP扩展广播连接响应PDU
7.2、数据信道PDU

数据信道PDU分为以下几种:

7.2.1控制命令PDU

主要用于链路层的一些控制命令,像加密、链路层特征通知、信道通知等。

PDU类型PDU类型
LL_CONNECTION_UDPATE连接参数更新
CHANNEL_MAP_IND信道图指示
LL_TERMINATE_IND终止连接指示
LL_ENC_REQ加密请求,用于SM层
LL_ENC_RSP加密响应,用于SM层
LL_REJECT_EXT_IND扩展包被拒绝,权限不足会发生
LL_START_ENC_REQ开始加密请求,用于SM层
LL_PING_REQ链路响应包,用于判断连接是否正常
LL_REJECT_IND数据包被拒绝,权限不足会发生
LL_UNKNOWN_RSP未知响应,由于操作码错误引起
LL_LENGTH_REQ最大/最小接收长度请求
LL FEATURE REQ链路层特征请求,请求告知有哪些功能
LL_PHY_REQ请求PHY调制速率,发送和传输:1M,2M,code_S2,code_S8
LL_PAUSE_ENC_REQ暂停加密请求,在连接建立后使用新密实会用到
LL_CONNECTION_PARAM_REQ连接参数请求

还有很多此处就不再扩展了,见蓝牙核心协议5.4_ p2716

7.2.2恒定音调扩展

恒定音调扩展是用于蓝牙的一个精细定位功能,AOA/AOD,此包通常位于链路层数据包尾处。
在这里插入图片描述

7.2.3 ISO(同步等时流)物理信道PDU

ISO(ISOCHRONOUS)PDU可用于LE AUDIO低功耗蓝牙音频。

PDU类型意义
ISO连接PDUConnected Isochronous PDU
ISO广播PDUBroadcast Isochronous PDU
BIG控制PDUBroadcast Isochronous Group

  此处为什么要介绍这些PDU,因为实际过程中相应的数据包都是以这些PDU格式在设备间进行交互的,所以我们在抓包的时候就会碰见这些PDU,为了了解发的什么数据,所以就把大部分PDU列出来了。具体的PDU格式会在后面的章节去描述。

八、隐私

8.1 隐私列表

  链路层定义了一个RESOLVING LIST的功能,用于存储己方与对方的IRK(Identity Reslove Key),可以用于过滤或者重连时快速连接,此处我们不需要深究IRK是什么,IRK会在SM(security manage)层介绍。我们只需了解RESOLVING LIST是为了保存密匙的作用。

8.2 可解析地址更新时间

链路层推荐可解析地址需要在15分钟更新一次,这个可解析地址也是SM相关的概念,此处不具体展开。

最后

以上就是蓝牙链路层的相关内容了,之后我会分享蓝牙协议栈的其他相关内容,各位看官老爷点个关注把!
(ps. 如有描述不清,还请多多指出!)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值