蓝牙基带介绍

对于任何一门知识体系,一定有一个最小基本单位,基本概念,其他的概念或是规矩都是基于这几个基本的东西在玩花样。对于这个很基本的分析问题的方法,混沌大学的李善友老师还起来一个非常高大上的名字叫做“唯一性原理”,有点故弄玄虚,其实叫啥无所谓,面对同样一份原始数据,如果你有相关的知识,你就能将数据切的更细,那就能看到更多东西。

先列举下Baseband的几个基本单位:

1. Piconet

跟其他网络技术一样,蓝牙也有自己的网络。网上把这个单词翻译成微网。在蓝牙设备没有跟其他蓝牙设备连线的时候,它自己属于一个piconet。当有连线后,piconet里有两种角色:master 和 slave。发起连线的一方是master,被连接的一方是slave。slave会以master的时钟为参照,以625us为时间单位,与master进行数据收发。每一个piconet里,一个master最多有7个slave。
Piconet

2. Mode

这里的Mode其实对应的是Modem,数据编码不同,那Modem就不同,传输数据的速度也不同。

2.1 Basic Rate:最基本的一种模式,采用BPSK,传输速率是 1Mb/s。

2.2 Enhanced Data Rate:增强模式,传输速率是 2Mb/s (π/4-DQPSK)或 3Mb/s(8DPSK),这种模式有两种编码。

3. BT clock

Clock是蓝牙通信最最基础的一个概念,clock定义了通信的时空范围,定义了这个Piconet时空的坐标系,只有在同一个坐标系里,网络内的各个角色才能相互了解对方的时间线,才知道什么时候发包,什么时候收包。
BT clock是个28bit的计数器,每tick一次是312.5us,所以总共有 (2^28 -1)个tick,算一下大约是(2^28-1)*312.5us/10^6/3600 = 23.3个小时后clock会翻转。
BT Clock
针对clock有几个概念也要知道下:

CLK0, 312.5us,是一个tick
CLK1, 625us, 是一个slot
CLK2, 1.25ms, 是一个frame(做一次TX 和 RX)
CLK12, 1.28s.
Clock的精确度要求为 +/-250ppm 和 +/-20ppm

4. BT 地址

蓝牙地址有48bit,需要跟IEEE去购买。
BDA
LAP中有64个:0x9E8B00-0x9E8B3F是用来做inquiry的。0x9E8B000 是用来做 General inquiry,余下的63个是用来做Dedicate inquiry。当保留LAP被使用的时候,UAP会是0x00,Default Check Initialization。

5. Access Code

所有的蓝牙数据包都以access code为开头,所有的access code是从LAP生出来的。access code是为了告诉对方,数据包来了,该做准备了,而接收方也可以根据access code来确定这包数据是不是属于自己的。

device access code (DAC)
channel access code (CAC)
Inquiry access code (IAC)

IAC 又分为 GIAC 和 DIAC

6. Physical Channel(信道)

蓝牙有79个信道,每个信道2M
79 Channels
Spec总共有定义如下5种channel

Basic piconet physical channel
Adapted piconet physical channel
Page scan physical channel
Inquiry scan physical channel
Synchronization scan physical channel

6.1 Basic piconet physical channel

在建立连线后,Slave会以Mater的clock为准。Master和Slave以一个slot为单位进行Tx和Rx,Master在clock为偶数时发包,Slave在clock为偶数时收包,如下面的两张图。
MasterCycle
Slave Cyle
为了处理time sliping,定义uncertainty window来增加Rx的时候收到包的几率,Slave可以加大自己的Rx时间uncertainty window来提高收到包的几率。
如果在250ms内等不到Master的包,那Slave就只能认为是短线了。

6.2 Adapted piconet phycial channel

用到的channel个数可能会少于79个,不过至少会是20个。

6.4 Page scan phycial channel

在Paging的时候,Master会发送paging message(就是ID packets),这个时候的跳频速度是 3200 hops/s,在Tx的slot内会打两次包,在Rx的Slot内也会收两次Slave的回应。
Slave在收到Master的paging messagse后的625us会回一个slave reponse packet。Master在收到这个reponse packet的后面的那个Tx slock再发一个master page reponse packet。
Page Scan Channel
Page Scan at 1st half slot
Page at 2nd half slot

6.5 Inquiry Scan Physical channel

在Inquiry的时候,Master会一直发送inquiry mesasge,带上GIAC 或 DIAC。
Inquiry Scan
Inquiry Scan 2

7. HOP Seletion (跳频)

据说跳频的理论模型还是个演员发明的。

7.1 Selection Kernel

Selection Kernel
Control word