我是靠谱客的博主 务实皮皮虾,最近开发中收集的这篇文章主要介绍蓝牙基础知识进阶——Physical channel,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

从本篇文章开始,晓东将会和大家一起来学习一些蓝牙的比较高阶的基础知识。

二、物理通道

   物理通道是piconet区分的标准,它是蓝牙系统结构层次中的最底层了。

    Q1:物理通道有哪些类型

    物理通道通常可以分为四种类型:

    1basicpiconet channel

    2adaptedpiconet channel

      这两种channel是两个已经连接设备之间通信使用的。也就是说他们和特定的微微网之间是相关联的。

    3inquiry scanchannel:用于discovering蓝牙设备

    4page scanchannel:用于连接蓝牙设备。

Basic Piconet Channel

    Q2Basicpiconet channel是如何工作的

    在Basic piconetchannel中,它会把通道分为以625μs为单位的时间长度(slot),使用的是TDD的策略进行传输,可以理解为TXRX是时分双工的。需要注意的是packet的开始和slot的开始需要是对齐的。从目前的packet type来看,最长会占用5time slot。多packetslot传输情况见下图四。

图四 多slot packet的传输示意图

     Q3:为什么都是占奇数个slot啊,有偶数个的么?

    从目前来看,各种packet type所占的slot只有三种,分别占1,3,5slot,暂未有偶数个的slotpacket出现。另外,需要注意的是mastertx需要在奇数个的slot开始,rx必须在偶数个的slot开始。

    packet的平均漂移和625μs相比,不能超过20ppm。瞬时的时间和平均时间偏差不能超过1μs

    Q4:既然有时间的偏差,那么rx的时候是否有对应的机制

    是的,在rx的时候,我们是用一个windows来监听的,而不是说就在625μs那个点去监听。目前的监听window的大小是20μs,也就是说允许的误差是+-10μs,这样的误差容忍度还是很高的。图五是以单packet为例来介绍的正常情况下的TX/RX示意图。


图五 masterTX/RX示意图

    同样的windows也发生在slaverx过程中,不详细介绍。

    Q5:既然时间的要求如此严格,masterslave是如何同步时钟的

    就使用的时钟而言,master就是使用的它的native的时钟,而slave则是在它的native时钟上加上对应的offset得到和master同步的时钟。这个offset是在inquiry过程中交互得到的。为了防止时钟的偏移,slave在每次收到masterpacket的时候都需要刷新offset。时钟的得到方法见下图六。其中六-a)是master中时钟的产生,六-b)是slave时钟的产生。


图六 masterslave的时钟产生示意图

Adapted piconet channel

   Q6: adapted piconetchannel有何特别之处

    adapted piconetchannel是用于连接支持AFHAdapter Frequency Hopping)的设备时使用的。和Basic相比,他的最大不同之处在于它可能没有使用全部的79个频点,但是它使用频点的数目最小值是20。也就是说若是环境很差,79个频点只有不到20个频点是干净可用的,那么AFH机制将无法运行,也就没有所谓的自适应调频了,表现到最终的用户体验上你看到的就是音乐的卡顿啊,或者打电话的断音等等。

Page scan physical channel

   Q7masterslave的角色是在连接过程中才确定的,在page scan这个过程中是否也有masterslvae之分

    这个问题是一个看起来很简单,其实很专业的问题了。一般来说,在masterslave还没有确定之前,我们称执行page的那个设备为master,而page scan(也就是等待page)的那个设备为slave。需要注意的是这个masterslave和最终建立连接之后的masterslave并不是对应的,这之间有可能发生role switch等一系列的操作。后面的inqiry scan也是类似的,就不多说了。

   Q8page时所使用的时钟就是nativeclk

   为了更好更快地page到对方,在真正page的时候并没有使用nativeclk,而是采用了一个预测的clk,希望能够尽量和slaveclk相接近。这之间有一个offset的偏移,这个偏移一般使用inquiry的信息中的偏移,在Android中只有10分钟之内的inquiry信息才会被使用,毕竟这个clk也是会变化的,时间过长这种inquiry到的clk offset就没有什么实际意义了。page过程中使用的clk如下图七所示。


图七 page时的clk示意图

Q9Page scanbasicpiconet channe有什么差别

    总得来说,各种机制都是差不多的。一个比较大的差别在于时间上,因为pagepacket很小(也是固定的),所以为了更好地利用时间,他不是625μs才发送一次,而是在625μs中发送了两次,也就是312.5μs发送一次,这也是蓝牙clk最小的时间间隔了。于是从master的角度来看,我们可以看到的内容就如下图八所示了。


图八 page scan过程mastertx rx时序图

    如上所说,可以很清晰地看到一个slot中发送了两个packet。同时在rx的时候也在两个时间点前后进行了监听。这样就可以响应slave在两个时间点发送的response

    这样的机制对slave而言就会有两种可能,一种是它在master发送第一个packet的时候slave就收到了,这种情况和625μs发送一次是一样的,就不再多说了。另外一种情况则是slavemaster发送第二次packet的时候才收到,那么他会在收到之后625μs回应,master收到这个回应之后就不再等待625μs了,而是在下一个slot开始就是回应了。具体看图九所示。


图九 slavemaster第二次发送后收到的时序图

    这样看起来还是比较清晰的,蓝色的packet就是真正收到的packet

Inquiry scan physicalchannel

          Q10inquiry scanbasic有何差别

    其实inquiryscanpage scan比较类似,他也是312.5μs发送一次,比较大的差别在于他的slave的回应比较长,超过了312.5μs,这样假如它的回应是在第二次就会出现slave占用master to slave slot的情况,如图中红色圈圈所示,这是允许的。见下图十。

图十 inquiryscan在第二次受到inquiry packet后的时序图


    关于物理通路或者蓝牙其它方面,你还有任何问题都可以在下面留言提出,我会及时解答的。谢谢~~




最后

以上就是务实皮皮虾为你收集整理的蓝牙基础知识进阶——Physical channel的全部内容,希望文章能够帮你解决蓝牙基础知识进阶——Physical channel所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部