• 蓝牙专题(2)——初识BLE协议栈(物理层PHY)


    BLE的协议可分为Bluetooth Application和Bluetooth Core两大部分,而Bluetooth Core又包含BLE Controller和BLE Host两部分:
    为什么BLE协议栈要分层呢?
    这个和TCP/IP分层的原因基本一致。以流水线工厂为例,如果一个产品需要经过五个步骤最终成型,比如1.打螺丝;2.插线;3.设备上电;4.测试;5.封装。我们可以分派5个员工,每个人在流水线的固定位置做固定的事(这也是流水线常见的方式);当然,我们也可以叫一个人做完这5项工作,但是这个人就会很累,而且更容易出错。
    所以,可以很明显发现分层设计的优势:蓝牙内部整体的关联性减少,易于代码维护,如果某一层的协议改变,只用更改对应的层即可,也方便代码迭代;同时分为多层,按照标准协议,可以多人同时开发,提高了开发效率;而且由于每一层都有统一标准,也促进了标准化工作。
    我该如何让自己和读者更容易理解BLE每一层的功能作用呢?
    按照惯例,绝大多数网上和书本上的教程就要开始介绍几个英文单词,贴出中文,然后介绍一番。虽然这个步骤和过程是必须要经历的,可是,根据我的学习过程来看,这样的方式并不是一个值得推荐或者说并不是一个易于理解和掌握协议栈的方法。
    BLE协议栈的第一层:Physical Layer,物理层。由于BLE属于无线通信,则其通信介质是一定频率范围下的频带资源(Frequency Band);BLE的市场定位是个体和民用,因此使用免费的ISM频段(频率范围是2.400-2.4835 GHz);为了同时支持多个设备,将整个频带分为40份,每份的带宽为2MHz,称作RF Channel(射频信道)
    以下是core_4.2的原文:
    注:core_4.2和core_5.x指的是蓝牙核心协议规范,目前主要是4.2版本和5.x版本,就目前而言,最新的规范是5.2,版本4.x和5.x肯定是有较大的不同的,但是也是都需要掌握的,从学习编程语言的过程来看,先学习老的标准,再学习新的标准有更好的效果。
    问题:频率范围为2.4-2.4835GHZ,可是通过上图右边的公式算出来并不是这个范围啊,为什么呢?注意,RF Channels是中心频率,是一个范围的平均值,并非精确的,事实上我们也不太可能做到那么精确或者说做到那么精确的代价太大了。
    2.4G频段是大家都可以免费使用的,也就是说蓝牙必定会面临干扰,BLE采用跳频技术抗干扰,一共40个信道,其中三个为广播信道专用,其他的为数据信道。按理说,物理层了解这些就行了,并不影响后面的应用,但是,谁叫有的人就是在芯片原厂呢,所以,物理层的其他特性也需要了解,虽然,我们是软件工程师。(注意是了解,因为物理层的东西,还是射频相关的人员更为擅长,作为软件工程师,了解即可)
    BLE的发射器特性(TRANSMITTER CHARACTERISTICS)
    如果设备没有连接器,则假定参考天线具有0 dBi增益。
    注:

    首先,dB 是一个纯计数单位:对于功率,dB = 10*lg(A/B)。对于电压或电流,dB = 20*lg(A/B).dB的意义其实再简单不过了,就是把一个很大(后面跟一长串0的)或者很小(前面有一长串0的)的数比较简短地表示出来。如:

    X=1000000000000000 (共15个0)
    10lgX=150dB
    X=0.000000000000001
    10lgX=-150 dB
    dBm 定义的是miliwatt。0 dBm=10lg1mw;
    dBw 定义watt。0 dBw = 10lg1 W = 10lg1000 mw = 30 dBm。

    dB在缺省情况下总是定义功率单位,以10lg 为计。当然某些情况下可以用信号强度(Amplitude)来描述功和功率,这时候就用20lg 为计。不管是控制领域还是信号处理领域都是这样。比如有时候大家可以看到dBmV 的表达。

    注意基本概念

    在dB,dBm计算中,要注意基本概念。比如前面说的0dBw = 10lg1W = 10lg1000mw = 30dBm;又比如,用一个dBm 减另外一个dBm时,得到的结果是dB。如:30dBm - 0dBm = 30dB。

    dB和dB之间只有加减

    一般来讲,在工程中,dB和dB之间只有加减,没有乘除。而用得最多的是减法:dBm减dBm 实际上是两个功率相除,信号功率和噪声功率相除就是信噪比(SNR)。dBm 加dBm 实际上是两个功率相乘,这个已经不多见(我只知道在功率谱卷积计算中有这样的应用)。dBm 乘dBm 是什么,1mW的1mW 次方?除了同学们老给我写这样几乎可以和歌德巴赫猜想并驾齐驱的表达式外,我活了这么多年也没见过哪个工程领域玩这个。

    dBi和dBd是考征增益的值(功率增益),两者都是一个相对值,但参考基准不一样。dBi的参考基准为全方向性天线,dBd的参考基准为偶极子,所以两者略有不同。一般认为,表示同一个增益,用dBi表示出来比用dBd表示出来要大2. 15。

    通信中的调制(modulation),是对信号源的信息进行处理加到载波上,使其变为适合于信道传输的形式的过程。逆过程就是解调。通俗来讲,就是把低频信号搬移到高频信号的过程。

      为什么要调制?众所周知,平常我们所听到看到的信号,由于频率、带宽以及易受干扰等原因,不适合直接用天线发射,所以就使用一个高频信号作为载波,把需要传输的信号混入载波中。

      最基本的调制方法:AM(Amplitude Modulation,幅度调制)、FM(Frequency Modulation,频率调制)、PM(Phase modulation,相位调制)。

    BLE采用的调制方式是GFSK(Gaussian Frequency Shift Keying,高斯频移键控),BT(Bandwidth-Bit period Product,带宽位周期乘积)= 0.5。h(Modulation Index,调制指数) =[0.45,0.55]。 二进制1(binary one)应由正频率偏差表示,二进制0(binary zero)应由负频率偏差表示。BLE采用调制特性(Modulation Characteristics)中的11110000和10101010序列的频率偏移的峰值和均值来衡量其发射机调制性能。

    好吧,在看完core_4.2的vol 6,part A之后,发现果然物理层只是需要了解一下(对于非射频相关工作领域的软件工程师而言,物理层通常可以不关心),物理层特性还包括:

    RF发射相关的特性(Transmitter Characteristics),包括发射功率(Transmission power、调制方式(Modulation),高斯频移键控(Gaussian Frequency Shift Keying ,GFSK)、Spurious Emissions、Radio Frequency Tolerance等等。RF接收相关的特性(Receiver Characteristics),包括接收灵敏度等。这些东西,如果不是从事射频相关工作或者某些时候需要测试芯片参数,一般情况下,可以了解一下就行,并不影响后续蓝牙的学习。

    总结时刻:

                本节主要是了解物理层,对于软件工程师而言,物理层通常只需要了解即可,我们必须了解的是BLE通过跳频技术抗干扰,3个广播,37个数据信道。BLE协议栈分为多个层次,这样可以减小耦合并且具备更高的灵活性和扩展性,各层之间相对独立,但又有统一的标准协议约束。翻译成能听懂的话就是物理层的作用正是要尽可能的屏蔽掉不同传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异。

     

  • 相关阅读:
    范畴定义
    泛函编程(0)-什么是泛函编程
    函数式语言的特性
    理解函数式编程
    未阅归档
    monad-本质解释- a monad is a design pattern--monad与泛型相关
    打印管理系统
    函数式JS: 原来promise是这样的monad
    Promise是Monad吗?
    Scala和范畴论 -- 对Monad的一点认识
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/12704066.html
Copyright © 2020-2023  润新知