蓝牙核心规范(V5.2)9.1-深入详解之链路层规范
作者:互联网
1.链路层状态
链路状态主要包括:
链路状态 | 详细说明 |
待机状态 | 处于待机状态的链路层不传输或接收任何数据包。待机状态可以从任何其他状态输入。 |
广告状态 | 处于广告状态的链路层将进行广告物理传输通道数据包,并可能侦听和响应这些广告物理通道数据包触发。 |
扫描状态 | 处于扫描状态的链路层将监听来自正在做广告的设备的物理信道包。处于扫描状态的设备被称为扫描仪。扫描状态可以从待机状态中输入。 |
启动状态 | 处于启动状态的链接层将监听来自特定设备的物理信道包,并响应这些数据包,以启动与另一个设备的连接。处于启动状态的设备被称为启动器。启动状态可以从待机状态输入到启动状态。 |
连接状态 | 连接状态可以从启动状态或广告状态输入。处于连接状态的设备被称为处于连接状态。 |
同步状态 | 同步状态下的链接层将侦听形成特定周期性广告序列的周期性物理信道数据包,它们来自特定的传输周期性广告的设备。同步状态可以从待机状态中输入。在这种状态下,主机可以直接引导链路层监听来自正在传输广播等时组(BIG)的指定设备的等时数据包。一种处于同步状态并正在接收等时数据包的设备被称为同步接收器。 |
异步广播状态 | 在异步广播状态下的链路层将在等时物理信道上传输等时数据包。同步广播状态可以从备用状态输入。处于异步广播状态的设备被称为异步广播器。 |
关于连接状态角色定义为主机和从机:
当从启动状态输入时,连接状态应处于主机。当从广告状态输入时,连接状态应处于从机。
主机中的链路层将与从机中的设备进行通信,并定义传输的时间。
从机中的链接层将与主机中的单个设备进行通信。
设备地址
使用设备地址和地址类型来标识设备;地址类型表示公共设备地址或随机设备地址。公共设备地址和随机设备地址的长度均为48位。
设备应至少使用一种类型的设备地址,也可以同时包含这两种地址。
设备的身份地址是它在传输的数据包中使用的公共设备地址或随机静态设备地址。如果设备使用可解析专用地址,它还应有一个身份地址。
当比较两个设备地址时,比较应包括设备地址类型(即如果两个地址类型不同,即使两个48位地址相同,它们也不同)。
1.3.1 公共设备地址
公共设备地址应根据[Vol2]B部分第1.2节的规定创建,除非公共设备地址的限制不用于BR/EDR控制器,否则LAP值为BD_ADDR。
1.3.2 随机设备地址
地址[47:46] | 子类型 |
0b00 | 不可解析的私有地址 |
0b01 | 可解决的私有地址 |
0b10 | 预留供将来使用 |
0b11 | 静态设备地址 |
传输一个随机的设备地址是可选的。设备应接受从远程设备接收到的随机设备地址。
静态设备地址
静态地址是一个48位随机生成的地址,应满足以下要求:
- 地址的随机部分中的至少一点应为0
- 地址的随机部分中的至少一点应为1
设备可以选择在每个功率循环后将其静态地址初始化为一个新值。设备初始化后,设备不得改变其静态地址值。
注意:如果更改了设备的静态地址,则存储在对等设备中的地址将无效,使用旧地址重新连接的能力将丢失
私有设备地址的生成
私有地址可以是以下两种子类型之一:
- 不可解析的私有地址
- 可解决的私有地址
要生成不可解析的地址,设备应生成具有以下要求的48位地址:
- 地址的随机部分中的至少一点应为1
- 地址的随机部分中的至少一点应为0
- 地址不等于公众地址
要生成可解析的专用地址,设备必须具有本地身份解析密钥(IRK)或同行身份解析密钥(IRK)。可解析的专用地址应使用IRK和一个随机生成的24位数字来生成。随机数称为随机,应满足以下要求:
- prand的随机部分至少有一位应为0
- prand的随机部分至少有一位应为1
2 空中接口数据包
2.1 未编码的电话的包格式
先传输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节中进一步讨论。 |
2.2 LE编码PHY的数据包格式
以下数据包格式是为LE编码的PHY定义的,并用于所有物理通道上的数据包。
整个数据包通过1Msym/s的调制进行传输。
2.3 广告物理频道pdu
注意:尽管有名称,广告物理通道PDU也在周期性物理通道上使用。
广告物理通道PDU有一个16位的报头和一个可变大小的有效负载。其格式如图2.4所示。广告物理通道PDU的16位头字段如图2.5所示。
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
2.4 数据物理通道pdu
标头的CTEInfo PreSent(CP)字段指示数据物理通道PDU标头是否具有CTEInfo字段,因此数据物理通道数据包是否具有常音扩展。如果CP字段为0,则数据通道PDU头中没有CTEInfo字段,并且数据物理通道包中没有常数音调扩展。如果CP字段为1,则存在数据物理信道PDU头中的CTEInfo字段,并且数据物理信道包包含一个常音调扩展。
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。LL控制PDU不应将长度字段设置为0b00000000。
有效载荷由操作码和CtrData字段组成。
LL控制PDU中的CtrData字段由“操作码”字段指定,并在以下小节中定义。对于给定的操作码,CtrData字段的长度是固定的。
LL_CONNECTION_UPDATE_IND
LL_CHANNEL_MAP_IND
LL_TERMINATE_IND
LL_ENC_REQ
LL_ENC_RSP
LL_UNKNOWN_RSP
LL_FEATURE_REQ
LL_FEATURE_RSP
2.5 恒定tone扩展和IQ采样
2.5.1常音扩展结构和类型
2.5.2 CTEInfo字段
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)。
支持IQ采样的控制器应能够测量用于接收包主体的任何天线上接收包的RSSI(在两种情况下不包括任何持续音调扩展),并且能够接收和采样任何有效长度的持续音调扩展。
如果控制器没有足够的资源来对它接收到的所有常音扩展执行采样,它可能会在向主机报告至少一组IQ样本后停止采样。如果控制器停止采样,它应向主机报告,并应在下一个定期广告事件或连接事件开始时恢复采样。
2.6 异步物理通道pdu
2.6.1连接的异步PDU
2.6.2 异步PDU广播
广异步PDU(BISPDU)应为BIS数据PDU或BIG控制PDU。BIS数据PDU用于携带等时数据。大控制器PDU用于发送大控制器的控制信息。
广播等时PDU的等时物理信道PDU的报头字段如图2.60所示。
2.6.3 BIG控制PDU
BIG_CHANNEL_MAP_IND
BIG_TERMINATE_IND3.比特流处理
图3.1显示了LE未编码PHYs上的pdu的位流处理
图3.2显示了在LE编码的phy上的pdu的位流处理。
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(输出序列按传输顺序排列):
标签:状态,PDU,规范,地址,V5.2,物理,数据包,9.1,设备 来源: https://blog.csdn.net/dop102/article/details/120971772