Bluetooth Baseband介绍

1. 介绍

蓝牙的radio工作在2.4GHz的ISM Band(2400-2483.5 MHz),信道间隔1MHz,采用跳频技术

2. 概述

在连接(CONNECTION)状态, synchronization train和synchronization scan子状态每秒至少1600次
在inquiry和page子状态时为每秒至少3200次/s

蓝牙有如下的连接方式

image

蓝牙通过空气来传播数据,定义了两种模式

 - Basic Rate(强制模式):          1 Mbps
 - Enhanced Basic Rate(可选模式): 2 Mbps和3 Mbps

2.1 时钟

在蓝牙中有四种时钟(Clock)

 - CLKR:  reference clock (由运行系统时钟驱动)
 - CLKN:  native clock    (CLKR的偏移量)
 - CLKE:  estimated clock (CLKN的偏移量,page scan中使用)
 - CLK:   master clock    (Piconet的Master时钟)

时钟决定了触发事件和关键周期,蓝牙系统中有四个重要周期: 312.5 μs, 625 μs, 1.25 ms, and 1.28 s
这些周期分别对应时间的比特位0,1,2,12
image

2.2 寻址方式

每个蓝牙设备都应该有唯一的48-bit设备地址(BD_ADDR),结构如下图

image

 - LAP: Lower Address Part 
 - UAP: Upper Address Part 
 - NAP: Non-significant Address Part

LAP有64个保留地址(0x9E8B00-0x9E8B3F);其中0x9E8B33是一般用于查询

3. 物理信道

物理信道(Physical Channels)是蓝牙系统的最底层;两个互相通信的设备通过将收发器(transceivers)调谐到同一RF频率来共享物理信道;蓝牙设备通过时分复用来支持多个操作的同时进行

蓝牙定义了五种物理信道

 - basic piconet physical channel:        用于特定piconet中两个已经连接的设备之间的通信
 - adapted piconet physical channel:      用于特定piconet中两个已经连接的设备之间的通信
 - page scan physical channel:            用来连接设备
 - inquiry scan physical channel:         用来发现远端设备
 - synchronization scan physical channel: 以获取无连接从属广播物理链路的时间和频率信息

4. 物理链路

物理链路(Physical Links)表示两个设备间的基带(Baseband)连接,总是与某个特定的物理信道相关联

5. 逻辑传输层

在Master和Slave之间,可能建立不同类型的逻辑传输层(Logical Transports)
有六种逻辑传输层

 - SCO:  Synchronous Connection-Oriented logical transport
 - eSCO: Extended Synchronous Connection-Oriented logical transport 
 - ACL:  Asynchronous Connection-Oriented logical transport
 - ASB:  Active Slave Broadcast logical transport
 - PSB:  Parked Slave Broadcast logical transport
 - CSB:  Connectionless Slave Broadcast logical transport

SCO用于Master和Slave间的点对点传输,通常用于有时间限制的数据(如语音和同步数据);Master通过定期预留时缝(Reserved Slots)来维护SCO
eSCO在SCO基础上多了一个重传窗口
ACL同样用于Master和Slave间的点对点传输,但没有预留时缝;Master可以在任意slot上建立和Slave的连接
ASB用于Master和Active Slaves通信
PSB用于Master和Parked Slaves通信
CSB用于Master发送Profile广播

6. 逻辑链路

逻辑链路(Logical Links)有六种

 - LC:     Link Control, 用于链路控制层(Link Control Level )和链路管理层(Link Manager Level) 
 - ACL-C:  ACL Control,  用于链路控制层(Link Control Level )和链路管理层(Link Manager Level) 
 - ACL-U:  User Asynchronous/Isochronous, 用于承载用户异步信息
 - SCO-S:  User Synchronous, 用于承载用户同步信息
 - eSCO-S: User Extended Synchronous, 用于承载用户同步信息
 - PBD:    Profile Broadcast Data, 用于承载Profile广播数据

注意: LC在Packet的Header部分; 其他都在Payload部分

6.1 LC

LC携带底层的控制信息,如ARQ,Flow Control,Payload Characterization
除了没有header的ID Packet,每个Packet都含有LC信息

6.2 ACL-C

ACL-C携带Link Manger层交换的控制信息,使用DM1/DV packets
可由SCO/ACL Logical Transport承载;通过Payload Header的Logical Link ID(LLID)来指示

6.3 ACL-U

ACL-U携带L2CAP层用户数据,可能由一个或者多个baseband包来进行传输
通常由ACL Logical Transport承载,也可由SCO Logical Transport的DV Packet的Data承载
通过Payload Header的Logical Link ID(LLID)来指示

6.4 SCO-S/eSCO-S

SCO-S/eSCO-S携带同步用户数据,只由Synchronous Logical Transports承载

6.5 PDB

PBD由CSB Logical Transport承载;PBD携带Profile广播数据,并且数据应该完整,不可分片传输

6.6 优先级

ALC-C较之其他Logical Link具有最高优先级;PBD优先级最低

7. 数据包

7.1 General Format

对于Basic Rate,一般格式如下

image

对于Enhanced Data Rate,一般格式如下

image

General Packet包含三个部分

 - Access Code: 72/68 bits 
 - Header:      54 bits 
 - Payload:     0~2790 bits

7.2 Bit Ordering

Baseband在传输时采用Little Endian格式,并有如下规则

 - LSB(Least Significant Bit)对应于B0 
 - LSB先传输 
 - LSB在左边显示

如3-bit参数X=3 (b0b1b2 = 110),其中1最先传输,0最后传输

7.3 Access Code

每个报文以Access Code开始;Access Code标识了一个物理信道,在同一个物理信道中的报文有相同的Access Code

Access Code有72和68 bits两种
68 bits的Access Code(The shortened access code)不包含Trailer;也没有Header,用于同步(paging, inquiry, and park)

Access Code格式如下

image

有三种不同的Access Code

 - DAC: device access code 
 - CAC: channel access code 
 - IAC: inquiry access code

Access Code都是由BD_ADDR的LAP派生
DAC用于Page、Page Scan、Page Respponse子状态
CAC用于CONNECTION状态,Synchronization Train子状态,Synchronization Scan子状态
IAC用于Inquiry子状态,包括一个GIAC(General IAC)和63个DIAC(Dedicated IAC)

image

Premble有两种1010/0101,由Sync Word的LSB决定

image 
Sync Word由LAP计算得到
CAC的Sync Word使用Master的LAP来计算;IAC则使用Reserved/Dedicated LAPs;DAC使用Slave的LAP

Trailer也是两种1010/0101,由Sync Word的MSB决定

image 

7.4 Packet Header

包含LC的Header有6个字段,18 bits

 - LT_ADDR: 3-bit logical transport address 
 - TYPE:    4-bit type code 
 - FLOW:    1-bit flow control 
 - ARQN:    1-bit acknowledge indication 
 - SEQN:    1-bit sequence number 
 - HEC:     8-bit header error check

其格式如下

image

7.4.1 LT_ADDR

Logical Transport Address(LT_ADDR);用来标识在Master-to-Slave中的目的Slave或Slave-to-Master中的源Slave

每个Active Slave都有一个主要的3-bit LT_ADDR;全零的LT_ADDR用于ASB/PSB广播消息,CSB使用单个非零LT_ADDR

Master没有LT_ADDR,使用Timing Relative来区分Slaves;对于eSCO传输方式,每个Slave都有一个次要的LT_ADDR;Slave只接收匹配主要/次要的LT_ADDR的数据包和广播数据包

7.4.2 Type

区分六种不同的Packet,主要有三种功能

 - 决定使用的Logical Transport(SCO/eSCO,ACL,CSB) 
 - 是否使能Enhanced Data Rate 
 - 标识Packet类型(SCO/eSCO,ACL)

7.4.3 Flow

在ACL Logical Transport中用来进行流控,其对应值含义为

 - 0: STOP indication 
 - 1: GO indication

在SCO/eSCO(设为1)和CSB(设为0) Logical Transport中Flow位被忽略

7.4.4 ARQN

Automatic Repeat reQuest Number
确认指示位,指示数据源是否成功地传输了带有CRC的Payload数据

在CSB Logical Transport(设为0)中被忽略

7.4.5 SEQN

Sequence Number,用来保证数据流有序的传输

在CSB Logical Transport(设为0)中被忽略

7.4.6 HEC

Header Error Check,用于检测Header的完整性

7.5 Packet Types

Packet类型与所使用的逻辑传输层(主要针对SCO/eSCO, ACL, CSB)相关联
由Type字段来指定,可分为4 Segment(如下图)

 - 1th Segment: Control Packet 
 - 2th Segment: Occupying a single time slot 
 - 3th Segment: Occupying three time slots 
 - 4th Segment: Occupying five time slots

Packets

7.5.1 Common Packet Types

有五种通用报文类型

 - ID Packet: 68 bits, 只有Access Code(DAC或IAC), 用于寻呼、探询、响应
 - NULL Packet: 没有Payload, 只有Access Code(CAC)和Header, 固定长度126 bits, 用于通过ARQN、FLOW等字段将链路信息返回给发送端; NULL Packet无需确认
 - POLL Packet: 与NULL Packet类似, 也没有Payload, 但是需要接收端的确认
 - FHS Packet: Frequency Hopping Synchronization, 是一种特殊的控制分组, 它宣告发送方的设备地址和时钟信息, 以实现跳频同步, Payload包含144个信息bits和16 bits的CRC校验码, 然后用速率为2/3的FEC保护, 最终长度为240 bit, 详细见规范 [6.5.1.4 FHS Packet] 
 - DM1 Packet: DM代表Data Medium rate, 1th Segment的一种,可在任意逻辑传输层上传输,用来支持控制信息, 也可用来携带用户数据

7.5.2 SCO Packets

有HV1、HV2、HV3和DV Packet这四种

其中DV Packet包含Data和Voice两种数据,格式如下

image

7.5.3 eSCO Packets

主要是EV Packets
Basic Rate: EV3、EV4和EV5
Enhanced Data Rate: 2-EV3、3-EV3、2-EV5和3-EV5

7.5.4 ACL Packets

在Asynchronous/CSB Logical Transport上传输
Basic Rate: DM1、DH1、DM3、DH3、DM5、DH5和AUX1
Enhanced Data Rate: 2-DH1、3-DH1、2-DH3、3-DH3、2-DH5和3-DH5

7.6 Payload Format

Payload中有区分两种字段: 同步数据字段(Synchronous Data Field)和异步数据字段(Asynchronous Data Field)
ACL Packet只含有异步数据字段; SCO/eSCO只含有同步数据字段(例外: DV Packet两者都含有)

7.6.1 Synchronous Data Field

SCO只支持Basic Rate模式,其同步数据字段长度固定,只包含同步数据主体部分

对于eSCO
Basic Rate: 由同步数据主体部分和CRC两个部分组成
Enhanced Data Rate: 由五个部分组成, Guard time、Synchronization sequence、Synchronous data body、CRC code和Trailer

7.6.2 Asynchronous Data Field

Basic Rate: 有2、3或4部分, Payload header、Payload body、possibly a MIC, and possibly a CRC code
Enhanced Data Rate: 有6或7个部分, Guard time、Synchronization sequence、Payload header、Payload body、possibly a MIC, a CRC and a trailer

其中Payload Header的格式如下

image

LLID字段定义如下

image

8. 链路控制

链路控制器(Link Controller)中定义了几种状态

主状态
 - STANDBY(默认状态)
 - CONNECTION
 - PARK

子状态(建立连接和使设备发现的临时状态)
 - page
 - page scan
 - inquiry
 - inquiry scan
 - synchronous train
 - synchronous scan 
 - master response
 - slave response
 - inquiry respnse

在CONNECTION状态下,蓝牙设备有四种模式(除活动模式外,其他三种均是节能模式)

 - 保持模式(Hold Mode)
 - 呼吸模式(Sniff Mode)
 - 休眠模式(Park Mode)
 - 活动模式(ActiveMode)

下图显示了这些状态的转换图(三种Response子状态未显示)

image

参考:
<BlueTooth: 蓝牙基带>

posted @ 2014-07-13 00:08  北落不吉  阅读(9050)  评论(0编辑  收藏  举报