蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

   蓝牙篇之蓝牙核心规范(V5.2)深入详解汇总


蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

1.链路层状态

 链路状态主要包括:

链路状态 详细说明
待机状态 处于待机状态的链路层不传输或接收任何数据包。待机状态可以从任何其他状态输入。
广告状态 处于广告状态的链路层将进行广告物理传输通道数据包,并可能侦听和响应这些广告物理通道数据包触发。
扫描状态 处于扫描状态的链路层将监听来自正在做广告的设备的物理信道包。处于扫描状态的设备被称为扫描仪。扫描状态可以从待机状态中输入。
启动状态 处于启动状态的链接层将监听来自特定设备的物理信道包,并响应这些数据包,以启动与另一个设备的连接。处于启动状态的设备被称为启动器。启动状态可以从待机状态输入到启动状态。
连接状态 连接状态可以从启动状态或广告状态输入。处于连接状态的设备被称为处于连接状态。
同步状态 同步状态下的链接层将侦听形成特定周期性广告序列的周期性物理信道数据包,它们来自特定的传输周期性广告的设备。同步状态可以从待机状态中输入。在这种状态下,主机可以直接引导链路层监听来自正在传输广播等时组(BIG)的指定设备的等时数据包。一种处于同步状态并正在接收等时数据包的设备被称为同步接收器。
异步广播状态 在异步广播状态下的链路层将在等时物理信道上传输等时数据包。同步广播状态可以从备用状态输入。处于异步广播状态的设备被称为异步广播器。

 关于连接状态角色定义为主机和从机:

当从启动状态输入时,连接状态应处于主机。当从广告状态输入时,连接状态应处于从机。

 主机中的链路层将与从机中的设备进行通信,并定义传输的时间。

 从机中的链接层将与主机中的单个设备进行通信。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
链路层状态机的状态图

 

 设备地址

使用设备地址和地址类型来标识设备;地址类型表示公共设备地址或随机设备地址。公共设备地址和随机设备地址的长度均为48位。

设备应至少使用一种类型的设备地址,也可以同时包含这两种地址。

设备的身份地址是它在传输的数据包中使用的公共设备地址或随机静态设备地址。如果设备使用可解析专用地址,它还应有一个身份地址。

当比较两个设备地址时,比较应包括设备地址类型(即如果两个地址类型不同,即使两个48位地址相同,它们也不同)。

1.3.1 公共设备地址

公共设备地址应根据[Vol2]B部分第1.2节的规定创建,除非公共设备地址的限制不用于BR/EDR控制器,否则LAP值为BD_ADDR。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 1.3.2 随机设备地址

地址[47:46] 子类型
0b00 不可解析的私有地址
0b01 可解决的私有地址
0b10 预留供将来使用
0b11 静态设备地址

传输一个随机的设备地址是可选的。设备应接受从远程设备接收到的随机设备地址。

 静态设备地址

静态地址是一个48位随机生成的地址,应满足以下要求:

  • 地址的随机部分中的至少一点应为0
  • 地址的随机部分中的至少一点应为1

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 设备可以选择在每个功率循环后将其静态地址初始化为一个新值。设备初始化后,设备不得改变其静态地址值。

注意:如果更改了设备的静态地址,则存储在对等设备中的地址将无效,使用旧地址重新连接的能力将丢失

 私有设备地址的生成

私有地址可以是以下两种子类型之一:

  • 不可解析的私有地址
  • 可解决的私有地址

 要生成不可解析的地址,设备应生成具有以下要求的48位地址:

  • 地址的随机部分中的至少一点应为1
  • 地址的随机部分中的至少一点应为0
  • 地址不等于公众地址
蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
不可解析的专用地址的格式

 要生成可解析的专用地址,设备必须具有本地身份解析密钥(IRK)或同行身份解析密钥(IRK)。可解析的专用地址应使用IRK和一个随机生成的24位数字来生成。随机数称为随机,应满足以下要求:

  • prand的随机部分至少有一位应为0
  • prand的随机部分至少有一位应为1
蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
可解析的私有地址的格式

  2 空中接口数据包

 2.1 未编码的电话的包格式

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
LE未编码PHY的链接层数据包格式

 

 先传输preamble,然后按该顺序传输访问地址、PDU、CRC和Constant tone extension(如果存在)。整个分组以相同的符号速率传输(1Msym/s或2Msym/s调制)。

 数据包(不包括Constant Tone Extension)需要在44到2128µs之间进行传输。

当存在Constant Tone Extension时,Constant Tone Extension持续时间在16到160µs之间,如图2.1所示。

数据包说明:

数据包内容 说明
Preamble 所有链路层数据包都有一个前置码,用于执行频率同步、符号定时估计和自动增益控制(AGC)训练。前缀是一个由0位和1位交替组成的固定序列。对于在LE1MPHY上传输的数据包,序言为8位;对于在LE2MPHY上传输的数据包,序言为16位。序言的第一位(按传输顺序排列)应与接入地址的LSB相同。序言如图2.2所示。
Access-Address 访问地址应为32位值。每次需要一个新的访问地址(广播等时流(BIS)除外)时,链接层应生成一个新的随机值。
PDU 序言和访问地址后面是一个PDU。当数据包在主或次广告物理频道或周期物理通道上传输时,PDU应为第2.3节定义的广告物理频道PDU。当数据包在数据物理信道上传输时,PDU应为第2.4节中定义的数据物理信道PDU。当数据包在等时物理信道上传输时,PDU应为第2.6节中定义的等时物理信道PDU之一。
CRC PDU后面是一个24位的CRC。它应通过PDU进行计算。CRC多项式定义于第3.1.1节。
Constant Tone Extension CRC之后是一个可选的常音扩展,它由一个不断调制的一系列未白度的1s组成。常音扩展不包含在CRC或MIC计算中。常音扩展字段不应出现在等时物理信道上发送的数据包中。常音扩展将在第2.5节中进一步讨论。
蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
图2.2:序言

 2.2 LE编码PHY的数据包格式

 以下数据包格式是为LE编码的PHY定义的,并用于所有物理通道上的数据包。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
为LE编码的PHY的链接层数据包格式

         整个数据包通过1Msym/s的调制进行传输。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
表2.1:LE编码的PHY字段大小和持续时间,单位为微秒

 

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 2.3 广告物理频道pdu

 注意:尽管有名称,广告物理通道PDU也在周期性物理通道上使用。

 广告物理通道PDU有一个16位的报头和一个可变大小的有效负载。其格式如图2.4所示。广告物理通道PDU的16位头字段如图2.5所示。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 2.3.1 广告pdu

以下广告物理频道PDU类型称为广告PDU:

  •  ADV_IND
  •  ADV_DIRECT_IND
  • ADV_NONCONN_IND
  • ADV_SCAN_IND
  • ADV_EXT_IND
  • AUX_ADV_IND
  • AUX_SYNC_IND
  • AUX_CHAIN_IND

 2.3.2 扫描pdu

以下广告物理信道PDU类型称为扫描PDU。

  • SCAN_REQ
  •  SCAN_RSP
  • AUX_SCAN_REQ
  • AUX_SCAN_RSP

 SCAN_REQ和AUX_SCAN_REQpdu被称为扫描请求pdu。SCAN_RSP和AUX_SCAN_RSPpdu被称为扫描响应pdu。

如果这些PDU用于回复可扫描的广告,则它们使用的PHY应与它们回复的PDU使用的PHY相同。

2.3.3 启动pdu

以下广告物理通道PDU类型称为启动PDU:

  • CONNECT_IND
  • AUX_CONNECT_REQ
  • AUX_CONNECT_RSP

CONNECT_IND和AUX_CONNECT_REQpdu由初始状态下的链接层发送,并由广告状态下的链接层接收。AUX_CONNECT_RSPPDU由处于广告状态的链接层发送,并由处于初始状态的链接层接收。

用于这些PDU中的PHY应与它们回复的PDU中使用的PHY相同。

2.3.4 常见的扩展广告有效载荷格式

以下扩展广告物理频道pdu共享相同的广告物理频道PDU有效负载格式,在规范中称为“通用扩展广告有效负载格式”:

• ADV_EXT_IND • AUX_ADV_IND • AUX_SCAN_RSP • AUX_SYNC_IND • AUX_CHAIN_IND • AUX_CONNECT_RSP 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

2.4 数据物理通道pdu

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 标头的CTEInfo PreSent(CP)字段指示数据物理通道PDU标头是否具有CTEInfo字段,因此数据物理通道数据包是否具有常音扩展。如果CP字段为0,则数据通道PDU头中没有CTEInfo字段,并且数据物理通道包中没有常数音调扩展。如果CP字段为1,则存在数据物理信道PDU头中的CTEInfo字段,并且数据物理信道包包含一个常音调扩展。

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 2.4.1 LL Data PDU

LL数据PDU是一种用于发送L2CAP数据的数据信道PDU。标题中的LLID字段应设置为0b01或0b10。

一个LLDataPDU,头中的LLID字段设置为0b01,长度字段设置为0b000000000,被称为空PDU。主链路层可以向从端发送一个空的PDU,以允许从端使用任何数据物理通道PDU进行响应,包括一个空的PDU。

标题中LLID字段设置为0b10的LL数据PDU的“长度”字段不应设置为0b00000000。

注意:如果链接层接收到Data_Total_Length等于0b000000000(即开始片段),则链接层不能简单地通过空中传输片段,而必须将其与以下一个或多个继续片段组合,形成LLID设置为0b10和非零长度的PDU。

2.4.2 LL Control PDU

LL控制PDU是一种用于控制链路层连接的数据物理信路PDU。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

LL控制PDU不应将长度字段设置为0b00000000。

有效载荷由操作码和CtrData字段组成。

LL控制PDU中的CtrData字段由“操作码”字段指定,并在以下小节中定义。对于给定的操作码,CtrData字段的长度是固定的。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 LL_CONNECTION_UPDATE_IND蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 LL_CHANNEL_MAP_IND

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 LL_TERMINATE_IND

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

LL_ENC_REQ

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 LL_ENC_RSP

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 LL_UNKNOWN_RSP

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 LL_FEATURE_REQ

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 LL_FEATURE_RSP

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

2.5 恒定tone扩展和IQ采样 

 2.5.1常音扩展结构和类型

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 2.5.2 CTEInfo字段

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范 

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 2.5.3传输恒定音调扩展

当传输包含AoA常音扩展的数据包时,发射器不得切换天线。当传输包含AOD常音扩展的数据包时,发射机应按照主机配置的切换模式进行天线切换。支持传输恒音调扩展的装置应能够传输至少16µs长的恒音调扩展。

2.5.4 IQ采样

当主机要求时,接收器在接收包含常音扩展的有效包时应该执行IQ采样,在接收包含常音扩展但不正确CRC的包时可以执行IQ采样。本节的其余部分适用于接收器对包进行智商采样。

当接收到包含AOD常音扩展的数据包时,接收器不需要切换天线。当接收到包含AoA常音扩展的数据包时,接收器应按照主机配置的切换模式进行天线切换。在这两种情况下,接收者应在参考期间每微秒取一个智商样本,每个样本槽有一个智商样本(因此将有8个参考智商样本,1到37个2µs槽,2到74个1µs槽的智商样本,即总共9到82个样本)。控制器应向主机报告IQ样本。接收器采样整个恒定音调扩展,无论长度如何,除非这与其他活动相冲突。

注:为了获得优质的角度估计数据,应在每个IQ采样窗口的同一点进行智商采样,从开始后0.125µs开始,到每微秒周期结束前0.125µs结束(见图2.56)。如果使用2个µs样槽,应在后一微秒内进行采样(见图2.57)。 

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
图2.56:1个µs采样插槽的IQ采样窗口

 

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
图2.57:2个µs采样插槽的IQ采样窗口

 支持IQ采样的控制器应能够测量用于接收包主体的任何天线上接收包的RSSI(在两种情况下不包括任何持续音调扩展),并且能够接收和采样任何有效长度的持续音调扩展。

如果控制器没有足够的资源来对它接收到的所有常音扩展执行采样,它可能会在向主机报告至少一组IQ样本后停止采样。如果控制器停止采样,它应向主机报告,并应在下一个定期广告事件或连接事件开始时恢复采样。

2.6 异步物理通道pdu

2.6.1连接的异步PDU

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

  2.6.2 异步PDU广播

 广异步PDU(BISPDU)应为BIS数据PDU或BIG控制PDU。BIS数据PDU用于携带等时数据。大控制器PDU用于发送大控制器的控制信息。

 广播等时PDU的等时物理信道PDU的报头字段如图2.60所示。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 2.6.3 BIG控制PDU

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 BIG_CHANNEL_MAP_IND

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

BIG_TERMINATE_IND 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 3.比特流处理

 图3.1显示了LE未编码PHYs上的pdu的位流处理

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 图3.2显示了在LE编码的phy上的pdu的位流处理。

蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 3.1 错误检查

在接收数据包时,应首先检查访问地址。如果访问地址不正确,则应拒绝该包,否则应视为已接收到该包。如果CRC不正确,应拒绝包,否则应认为包已成功接收,因此有效。只有在包被认为有效的情况下才应处理包,但即使CRC不正确,接收方也可以进行IQ采样。具有不正确CRC的数据包可能会导致连接事件继续发生。

3.2 DATA WHITENING

 数据增白用于避免数据位流中的0或1的长序列,例如,0b000000000或0b1111111。美白应应用于所有链路层数据包的PDU和CRC上,并在发射机中生成CRC后进行。数据包的其他部分都没有变成白色。在CRC检查接收机之前进行去美白。

3.3 编码

编码仅适用于LE编码的方法。

编码包括两个过程。数据首先由第3.3.1节中定义的前向误差校正(FEC)卷积编码器进行编码,然后由第3.3.2节中定义的模式映射器进行传播。

3.3.1 前向纠错编码器

卷积FEC编码器使用了一个非系统的、非递归率的½码,约束长度为K=4。

3.3.2 模式映射器

模式映射器将卷积FEC编码器中的每个位转换为P符号,其中P的值取决于正在使用的编码方案,根据表3.1(输出序列按传输顺序排列): 蓝牙核心规范(V5.2)9.1-深入详解之链路层规范

 

上一篇:R与RStudio的安装


下一篇:1069 微博转发抽奖 (20 分)