目录
1,空口包的组成(Air Interface Packets)
6,前向纠错编码块:FEC Block1和FEC Block2
注:未经注明,本文讲述的均是蓝牙协议5.2。
1,空口包的组成(Air Interface Packets)
空口数据包有两种类型,一种是针对LE Uncoded PHY,另一种是针对LE Coded PHY。关于什么是Uncoded PHY,什么是Coded PHY,请参考本系列文章的物理层:
【原创】BLE的物理层_BoatOnMCU的博客-CSDN博客
注:上图均摘自《Bluetooth Core Specification》
接下来依次介绍空口数据包中的各个组成部分。
2,前导序列(Preamble)
Preamble是发送有用信号之前发送的一系列信号。Preamble的作用是提醒接收芯片,即将发送的是有效信号,注意接收,以免丢失有用信号。更具体一点就是协助接收芯片做频率同步、自动增益控制(AGC:Auto Gain Control)。BLE的Preamble就是一串01相间的固定长度的序列。对于不同的PHY, Preamble的长度是不一样。
LE 1M Uncoded PHY的Preamble是一个字节。
LE 2M Uncoded PHY的Preamble是两个字节。
LE Coded PHY的Preamble是80个字节。(发送十个00111100序列).
需要注意的是,不管PHY是Uncoded类型还是Coded类型,Preamble均是Uncoded。
3,接入地址(Access Address)
考虑到无线通信存在的噪音干扰和其他链路的干扰,就涉及了接入地址用来排除噪音和其他干扰数据包。接入地址是一个32位的地址,包含两种类型:
广播接入地址(广播数据,扫描或者发起连接)
数据接入地址(两个设备建立连接之后)
例如广播接入地址是一个固定值10001110100010011011111011010110b (0x8E89BED6) ,当接受到广播后验证接入地址正确后才认为他是个广播报文而不是噪音。而对于数据报文的接入地址则是在特定阶段随机产生的,不同的连接有不同的值,并且使用前,先通过PDU通知对端设备。
4,协议数据单元(PDU)和CRC
PDU包含的就是上层传给链接层的数据,CRC则是用于校验数据在传输过程中有没有错误。
BLE的空口包主要分成以下两大类型:
一类是广播信道PDU。这类PDU主要是用于广播信息、扫描及发起和建立连接。
另一类是数据信道PDU,这类PDU主要是用于承接链路层上层L2CAP的数据包,以及设置链路层的连接参数和控制连接关系的。
5,Constant Tone Extension
这个字段是可选字段,,是蓝牙5.1 新增的,最主要的功能是用于蓝牙方向测量。它的特点如下:
它是一个变长字段,它的时间长度是16us~160us。
它是LE Uncoded Phy特有的。
它不被CRC所覆盖。
它不能用于同步物理信道(Isochronous Physical Channel)的报文。
Constant Tone Externsion有两种类型AoA和AoD。这两种类型都是基于天线阵列来测量方位,其中AoA(Angle of Arrival)是到达角,AoD(angle of departure)是离开角。
AoD与AoA示意图
6,前向纠错编码块:FEC Block1和FEC Block2
6.1,FEC block1/2的构成和特点
前向纠错编码(FEC:Forward Error Correction)是专门针对Coded PHY的,其中FEC Block1包含Address code和CI及TERM1三个字段,FEC Block1固定的使用S=8的编码方式。FEC Block2则包含PDU、CRC和TERM2三个字段,编码方式由CI指定。(具体请看接下来的章节)
6.2,什么是FEC
FEC(forward error correction)就是前向纠错,网络数据传输时,难免出现数据包丢失等问题。数据传输出现丢包时,常用的传输方式有2种:丢包重传和前向纠错(FEC)。
丢包重传不必解释。FEC的处理方式是:发送方在发送数据时,在每个数据包中加一些冗余信息。这样即使有一定数据丢失,仍可根据冗余信息恢复出完整的有效数据。
7,编码指示(Coding Indicator)
这个字段是LE Coded PHY特有的,用来指示FEC Block 2的编码方式,是使用S=8,还是使用S=2。
注:上图摘自《Bluetooth Core Specification》
在S=2中,FEC编码使用卷积编码器,通过二分之一的码率输出数据位,即2个编码位代替原来一个数据位,这种编码方案下,理论有效数据传输速率降低为Uncoded方式的一半,在S=8中,通过卷积编码器以八分之一的码率输出数据,8个编码位代替原来一个数据位,理论有效数据传输速率为Uncoded的八分之一。
虽然Coded PHY的速度不及Uncoded PHY,但由于加强了纠错能力,提高了灵敏度,传输距离可以大大增加。
8,结束符TERM1和TERM2
TERM1和TERM2都是针对Coded PHY而言,它们分别是FEC Block1和FEC Block2的结束符。 每种结束符都有3bit。
版权声明
所有原创文章(未进行特殊标识的均属于原创) 的著作权属于本人
所有转载文章(标题注明[转]的所有文章) 的著作权属于原作者。
所有译文文章(标题注明[译]的所有文章) 的原文著作权属于原作者,译文著作权属于本人。
转载注意事项
除注明外,所有文章均采用 Creative Commons BY-NC-ND 4.0(自由转载-保持署名-非商用-禁止演绎)协议发布。
你可以在非商业的前提下免费转载,但同时你必须:
保持文章原文,不作修改。
明确署名,即至少注明 作者:BoatOnMCU 字样以及文章的原始链接,且不得使用 rel="nofollow" 标记。
商业用途请电话联系本人。
微信公众号转载一律不授权,除非联系本人并获得授权。