ble协议栈从零开始二(physical layer 详细探讨)

SIG BLE MESH 视频 教程https://edu.csdn.net/course/detail/27321​​​​​​​

1.引言

本章节主要探讨蓝牙的物理层,物理层的协议栈的分析,以及实际芯片设计时候的原理。物理层作为协议栈的最底层,它的作业至关重要。

 

2.spec章节参考

上图表红圈是core_4.2关于物理层的介绍的地方,我们现在只看le的部分,不去看BR\EDR,AMP。le是低功耗的蓝牙,BR\EDR是传统的蓝牙,AMP是采用wifi的MAC和moderm的蓝牙。具体介绍可以参考上一篇博客的介绍。

 

 

3.physical layer

3.1.physical layer 概况

physical layer分为physical channelphysical link

3.1.1.physical channel ,在le蓝牙设备,2个设备如果想通信,就必须在同一时间切到相同的物理通道,当然一个设备作为发送端一个设备作为接收端,比如一个设备在发送adv,另一个设备在scan。

如上图物理通道分为40个通道,当K=0的时候 fmin  = 2402 当k = 39的时候 fmax = 2480。

问题1:物理层如何区分白噪声和蓝牙的报文呢?

问题2:物理层如何区分广播报文和数据报文呢?

问题3:物理层如何区分数据报文是不是自己的正在连接的数据报文呢?

要解释上面的问题,需要了解空中报文的格式:

先解释一下,数据报文指的是2个设备建立连接过后,采用调频序列的方式进行通信,广播报文就是一个设备在发送广播。大家可以理解成一个是tcp一个是udp。大家看上图蓝牙空中报文的格式,preamble是一个序列,广播报文是10101010,数据报文是10101010或者是01010101(如果access的最低位是1,preamble就是01010101,反之就是10101010)。access address是接入地址,PDU是数据正文。现在我们可以回答上面的问题了。

问题1:物理层如何区分白噪声和蓝牙的报文呢?

通过preamble,白噪声出现这么有规律的序列的概率很低。即使碰到相同的白噪声,还可以通过access code 来把关。

问题2:物理层如何区分广播报文和数据报文呢?

其实这个不用通过报文的内容进行区分,如果报文出现在广播的物理通道就是广播报文,出现在数据通道就是数据报文

广播的物理的RF_channel 是0 12 39(这3个通道避开的wifi的物理频率的干扰),对应的adv的索引是37,38,39。一般我们都是说adv的通道是37,38,39,其实对应的物理频率是均匀的展开在整个le的频谱上。剩下的37个通道就是数据通道了。

问题3:物理层如何区分数据报文是不是自己的正在连接的数据报文呢?

 

鉴于蓝牙的物理通道的有限,如果在同一空间有多对设备在进行通信,是有可能在同一时刻同一通道出现碰撞的。(虽然数据通道是采用调频序列的)。这时候access address就起作用了,广播的报文access address是固定值0x8E89BED6 ,数据报文是个随机值(当然这个随机值是有限制的),同一对连接的设备这个值在连接的时候就约定成一样的了,所以可以通过这个值区分,当前的数据报文是不是自己要通信的数据报文。

 

3.1.2.physical channel 分为 piconet channel 和 Advertisement broadcast channel

Advertisement broadcast channel :

一句话就是发送广播报文得的通道。

piconet channel:

一句话就是建立连接后的,双方设备通信所有的通道。建立连接的过程在后续的文章细致分析。简单的描述一下,建立连接过后的跳频的策略。假如2个设备是A和B,A和B都有一个相同的channel map(是可以用于通信的数据通道默认是37个),在发起连接的时候选择其中一个通道作为第一个起始点,然后使用相同的伪随机的序列进行跳频。抓包工具如果不知道第一个通道的起始点,就没办法进行抓包,因为抓包工具一般都不支持全频道扫描。具体的跳频的,会在后面的文章细致分析。

 

3.2.1.physical link

其实这个physical link就是个虚拟的概论,在协议栈并没用什么实际的含义。按照SPEC的说法,physical link
分为Active physical link  和 Advertising physical link 。Active physical link 就是连接点对点连接过后,在通信交互的时候呈现。Advertising physical link 就是 advertising 在 broadcast event的时候。因为physical link在整个协议栈不参与解析包文和组合包文,大家就不用纠结他了。
 

 

4.对应实际的芯片的接口

MAC + modem + RF

RF是模拟的部分,这个部分直接决定一个蓝牙芯片的功耗还有信号的质量。一般蓝牙发送报文的时候功耗在4ma到15ma,这个做的好,真的很厉害。一般评价一款芯片的RF的性能,从TX RX的功耗,灵敏度,RSSI等方面评估。

modem 是数字的部分,负责解析RF的数据,一般都是算法把数据进行漂白(这个设计到把基带数据搬移)。同时还进行一些过滤,比如对白噪声的过滤,对其他设备的数据过滤等,并且把数据同步给MAC。

MAC是数字的部分它是媒体访问控制层。MAC其实就是我们软件协议栈和物理层之间的中间层。它可以理解成蓝牙的灵魂,比如我们发送3个通道的ADV,start adv enable 从host - hci - link一层层传到 mac。如何发出下图的时序呢

这个37与38通道之前时间小与10ms,这个就是MAC做的。还是白名单,resolving address。等等

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 12
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XG_2013

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值