一 蓝牙低功耗(BLE)协议栈 之 PHY层

一 2.4GHz

物理层相对于软件工作者来说是最简单的一层,几乎不用关心,但是这一层却非常重要,直接体现出蓝牙芯片的好坏。

蓝牙工作在2.4GHz的频段,具体的频段范围是2400MHz到2483.5MHz,频段宽度为83.5MHz。BLE将这83.5MHz的宽度分成了0到39共40个通道,每一个通道宽度为2MHz。

一 蓝牙低功耗(BLE)协议栈 之 PHY层

其中广播通道为37/38/39,对应的中心频率分别为2402MHz、2426MHz、2480MHz。BLE在广播的时候会轮流使用这3个通道进行广播。

从图中可以看出BLE的3个广播通道并不是连在一起的,从上图可以看出wifi使用的也是2.4G的频段,如果在有wifi信号的情况会对BLE的广播造成干扰从而导致不能有效的进行广播。所以BLE的设计者将三个广播通道设计成这样。

虽然广播通道的频段是不连续的,但是编号却是连续的。这样设计的目的是为了保证数据通道编号的连续性,跳频算法方便计算。跳频算法我将在后面的文章再做介绍。

二 BLE调制原理

一 蓝牙低功耗(BLE)协议栈 之 PHY层
低功耗蓝牙采用了高斯频移键控。高斯滤波器通过增加从一个值到另一个值得频率转换时间,优化了一个符号到下一个符号的转换。如果没有高斯滤波器,频率转换会非常快,从而导致很大的噪声。高斯滤波器的引入,意味着从比特0到比特1的转换迅速而高效。

低功耗蓝牙的物理层比特率为1Mbit/s(或记为1Mbps),每个符号1bite。调制指数约为0.5,也就是说非常接近最优的最小频移键控。实际的调制指数可以在0.45 ~ 0.55之间,意味着低功耗蓝牙不是严格意义上的最小频移键控,但它具有最小频移键控的大多数特点,比如减少了边带发射功率,这意味着无需复杂的滤波器就能满足频谱监管的要求。

负频偏代表了比特0,正频偏代表了比特1.最小的频偏约为180KHz。也即是说,如果中心频率选取了2402MHz,比特0意味着传输2401.820MHz,比特1意味着传输2402.180MHz。

在传输报文的时候中心频率并不是严格的2402MHz,会受到一些因素的影响。比如晶振存在误差,或者存在频率漂移。

晶振的误差
由于晶振本身存在一定的误差,一个蓝牙芯片的频率是经过晶振倍频而来,所以晶振的误差也被放大。比如一个16MHz的晶振,需要放大150倍才能得到2400MHz的频率。如果晶振的实际频率为16.0001MHz,则中心频率将偏移150KHz,我们称这个晶振的误差为62ppm也就是百万分之62。通常晶振的误差越小价格就越昂贵,只要误差在我们容忍的范围之内就可以了。

由于晶振不精准导致的频率偏移就是通常所说的频偏。

频率漂移
漂移是指芯片在工作的时候由于芯片内部发热,导致频率轻微发生漂移,在BLE的报文发送过程中漂移不允许超过50kHz。