今天晓东和大家一起来看看蓝牙相关的几个基础知识,这样大家在看具体的代码的时候能够做到“手里有枪,心中不慌”。
一、基本概念
微微网——Piconet
Q1:蓝牙的网络结构是怎么样的?
蓝牙是一个点对点或者点对多点的拓扑结构,他们的交互都是基于一个物理通道(Physical Channel)上的。也就是说点对点之间有一条物理通道,点对多点共享一条物理通道。我们把这些共用一个物理通道的集合称之为微微网(piconet)。
在一个微微网中只有一个设备能称之为Master,其余的设备都是Slave。需要注意的是活跃的slave最多只能是7个,当然我们可以连接更多的slave,但是在同一时间,除了7个活跃的slave外别的slave不能处于活跃的状态。我们把他们称之为parked的slave,也就是说他们是在睡大觉。若是piconet中活跃的设备不足7个,他们就可以随时醒来,而且不需要再进行任何connection建立的过程。具体的可参见下图一,其中绿色的为Master,黑色的为Slave。
图一 piconet示意图
这个你不禁会要问:
Q2:piconet是否有可能交叉呢?
这是一个很好的问题,是的piconet是有可能交叉的,也就是说一个piconet中的master有可能在别的piconet中它只是一个slave,反之一个piconet中的slave他有可能在另外一个piconet中扮演master的角色。当然一个piconet中的slave也是有可能在另外一个piconet中仍然是slave,但是一个piconet中的master是不可能在另外一个piconet中扮演master的,这个道理应该还是很简单吧。这里我们提出一个新的概念,就是有同样设备的piconet组成的网络我们称之为scatternet。
图二 Scatternet示意图
如图二所示,每一个piconet都是只有一个master,而一个piconet中的master在另外一个piconet中可以是一个slave,如图二中设备1,他在以2为master的piconet中就是slave。同样的设备2在以1为master的piconet中也是slave。反过来看,一个piconet中的slave在另外一个piconet中可以为master,比如设备1和2。当然也是可以在另外一个piconet中仍然作为slave,如设备4在以3为master的piconet中就是仍然是slave。需要注意的是,一个piconet中的master在另外一个piconet中是不能够作为master的。否则要么出现一个piconet中有两个master或者这就不是两个piconet的问题。
传输速率
Q3:蓝牙的传输速率怎么样?
蓝牙是在空气中进行传输的,他有两种传输模式:
2、Enhanced Data Rate:a)初级调制模式:2Mbps;b)二级调制模式:3Mbps。
时钟相关
Q4:蓝牙有内部时钟吗?
答案是肯定的,蓝牙内部有native的clock。和外部的真实时间是没有关系的。它最低能表示的单元必须是312.5μs,就是半个slot。也就是说时钟的频率需要是3.2kHz。有四个周期在蓝牙中是很重要的,他们分别是312.5μs,625μs,1.25ms以及1.28s。他们对应的就是我们俗称的CLK0,CLK1,CLK2和CLK12。
Q5:蓝牙能容忍的时钟偏差是多少啊?
这是一个很好的问题。在spec上规定,正常情况下native的clock的偏差允许范围是+/-20ppm,当然在一些底功耗的模式下,比如park,sniff,hold等模式下,这个偏差的范围有所扩大,可以到+/-250ppm。
蓝牙地址
Q6:蓝牙地址就是我们看到的那一堆随机数吗?
Spec中对蓝牙地址的格式是有很严格的规定的。他主要分为两个区域三个部分。
1、company_assigned:这个部分主要是LAP,就是Low Address Part,需要注意的是在这个部分0X9E8B00~0X9E8B3F的值是不能使用的。这部分的值是用于设备的特殊类型值的搜索的,除了这个部分,其余的值都是可以使用的。
2、company_id:包含UAP(Upper Address Part)和NAP(None significant Address Part)。他们可以使用任何的值,只不过只有UAP是有意义的,NAP是没有意义的。
这两者的组成部分见下图:
图三 BD_ADDR的结构
工作频段
Q7:蓝牙工作的频段是在哪个区间
这是个很好的问题,通常我们都说蓝牙工作在2.4G的频段。其实它真实的工作频段范围是2400~2483.5MHz。它RF通道的设置如下表一所示。
表一蓝牙工作频段
频段范围 | RF通道 |
2.400~2.4835GHz | F=2.402+k MHz,k=0,….,78 |
RF通道就是我们通常说的传输的通道,它一共有79个通道,从2.402GHz开始,每隔1MHz有一个RF通道。