LE Audio 蓝牙协议规范--物理信道及PDU

Posted 菜鸡学长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LE Audio 蓝牙协议规范--物理信道及PDU相关的知识,希望对你有一定的参考价值。

第二篇


前言

上篇提到了LE的几种状态,是从宏观层面对ble 有个初步理解。这章主要看一下数据发送的载体 物理信道及其所用的数据包格式


如spec所规定,LE在2.4GHz频段定义了40个RF信道,这些信道又重新抽象到了四种LE 物理信道。分别是advertising, periodic, isochronous, and data。

1.Advertising

广播信道分为两类: primary 物理信道37,38,39, 其他的为secondary 物理信道。

广播信道通用格式

广播信道所有PDU



并不想大段截图Spec,这样不如自己去看spec,写起来也非常枯燥。
没有办法,为了内容的连贯性,有些必要的地方还是需要截图补充一下

重点ADV_EXT_IND PDU详解

尽管在advertising 信道有非常多的PDU,但是针对LE audio,有关PA 和 EA相关的PDU需要我们重点去理解。
在ADV PDUs中有一类特殊PDU,使用到 Common Extended Advertising Payload
Format,这部分增加到adv pdu中 playload中


Extended header Flags控制着后续七个栏位是否存在,针对每种PDU哪些栏位是否必须存在spec也做了规范。
例如:


阅读到此处,您可以先停下来,画一下完整的AUX_SYNC_IND PDU 格式 。
继续解读这些参数
AdvMode 表明connectable和scanable状态
extend header flags 整体表明后面七个栏位是否支持的情况
CTEinfo 跟方向定位有关,分为AOA和AOD两种模式

AdvDataInfo,ADI,包含两个参数SID和DID
SID一系列adv的编号,方便scanner区分
DID是每包数据的编号,防止重复,SID范围是大于DID

AuxPtr


非常重要的AuxPtr,这个栏位会引出Aux_Adv_Ind,在一个时钟偏移之后,Aux_Adv_Ind PDU会出现
Offset units设置两种aux offset 单位,30μs和300μs
这个偏移必须大于T_MAFS=300μs
延后误差保证在一个unit时间内,不能有提前误差,只有在小单位超过量程之后,才能改用大单位
总的偏移时间 = Aux offset * offset Units 单位
AUX PHY表明辅助广播包会在哪个PHY到达
CA=clock accuracy 时钟精度,有两个范围
如果这个Aux offset全部设置为零,表示后需要没有辅助广播包,也可以表明host数据被截断
channel index指LE 40个信道某一个,接下来辅助包会出现在哪个RF信道

syncInfo


另外一个非常重要的栏位 syncInfo,会引出周期广播队列AUX_SYNC_IND PDU
这个信息可以出现在ADV PDU也可以出现在LL_PERIODIC_SYNC_IND PDU
Sync Package offset跟上述aux offset 类似,表明后续AUX_SYNC_IND出现的时间,这个名称在core5.3 有bug,定义为offset base和syncPackageWindowOffset其实指的都是一个,后续可能会修复
offset unit 跟上面一样,分为两个单位30μs和300μs
interval单位是1.25ms,两个sync pdu之间的间隔,这个值必须大于6,interval 必须大于7.5ms,因为PA队列中,scanner会尝试监听连续的6个包,才能判断是否有sync 成功
chM是used和unused PHY channel
paEventCounter sync 包计数器,每间隔一个interval就+1,不论这个sync包是否有真正送出,大小在0000-ffff之间

ACAD

additional controller advertising data
额外的广播格式,不能被分割。
这个数据是被controller使用的,发送端或接收端controller,type和定义跟host定义的adv数据格式一致

BIGInfo在这个地方被controller所获取(Core Specification Supplement,PartA,Data Types Specification)
计算这个单元的长度是extend header 长度减去前面已知长度

AdvData

数据格式使用上图 的通用数据格式 AD Structure
没有被分割钱,最大1650字节,每包数据最大255字节,如果需要分割,第一包数据应该放在AUX_ADV_IND,
AUX_SYNC_IND or AUX_SCAN_RSP,剩下的放在AUX_CHAIN_IND PDU
如果分割之后,仍然无法全部发送,最后一包Aux offset要全部设置为0,表明数据被截断了,没有包再发送
这个位置存放的是host 送下来的ADV Data,与ACAD相对应

2.Periodic

周期广播队列使用的是广播信道,涉及到的PDU包括ADV_EXT_IND ,AUX_ADV_IND,AUX_SYNC_IND 。
会另起一篇 详细介绍一下PA ,EA

3.Isochronous

等时信道数据格式


分为connected (CIS)和 broadcast (BIS)两大类

CIS



LLID定义包类型,start 和 end 组合可以发送分割之后的包
Framed可以发送重新组合的之后包

BIS



LLID定义包类型,start 和 end 组合可以发送分割之后的包
Framed可以发送重新组合的之后包

4.Data

数据信道格式



具体又可以细分为下列三种类型

start 和 continuation 包配合可以发送分割之后的data
control PDU在playload 中还可以细分出通用格式

这个章节不是本文重点,点到为止

总结

重点详细介绍了 ADV信道及其对应的包,对包含Common Extended Advertising Payload
Format包各个栏位做了说明。记住重点一句话 :
Aurptr在第一广播信道发出,引出aux_adv_ind,后续接sync包或chain包 ;syncInfo 引出 AUX_SYNC_IND ;BIGInfo引出BIS

以上是关于LE Audio 蓝牙协议规范--物理信道及PDU的主要内容,如果未能解决你的问题,请参考以下文章

Bluetooth BR/EDR和BLE的区别.md

深入浅出蓝牙低功耗音频BLE Audio--4 ISO音频流

低功耗蓝牙通知间隔

BLE主机之L2CAP

Zigbee基础理论知识总结

Zigbee基础理论知识总结