Bluetooth Baseband介绍

蓝牙的radio工作在2.4GHz的ISM Band(2400-2483.5 MHz),信道间隔1MHz

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

1. 概述

蓝牙有如下的连接方式

蓝牙通过空气来传播数据,定义了两种模式
~ Basic Rate(强制模式): 1 Mbps
~ Enhanced Basic Rate(可选模式): 2 Mbps和3 Mbps

1.1 Clock(时钟)

在蓝牙中有四种时钟

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

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

时钟决定了触发事件和关键周期,蓝牙系统中有四个重要周期

312.5 μs, 625 μs, 1.25 ms, and 1.28 s

这些周期分别对应时间的比特位0,1,2,12

1.2 寻址方式

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

LAP: Lower Address Part

UAP: Upper Address Part

NAP: Non-significant Address Part

LAP有64个保留地址(0x9E8B00-0x9E8B3F)

其中0x9E8B33是一般用于查询

2. 物理信道(Physical Channels)

物理信道是蓝牙系统的最底层

两个互相通信的设备通过将收发器(transceivers)调谐到同一RF频率来共享物理信道

蓝牙设备通过时分复用来支持多个操作的同时进行

蓝牙定义了五种物理信道

? basic piconet physical channel
? adapted piconet physical channel
? page scan physical channel
? inquiry scan physical channel
? synchronization scan physical channel

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

前两种用于特定piconet中两个已经连接的设备之间的通信

inquiry scan channel用来发现远端设备

the page scan channel用来连接设备

synchronization scan channel用以获取无连接从属广播物理链路的时间和频率信息

3. 物理链路(Physical Links)

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

4. 逻辑传输层(Logical Transports)

在Master和Slave之间,可能建立不同类型的逻辑传输层

有六种逻辑传输层

? 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.

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

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广播

5. 逻辑链路(Logical Links)

逻辑链路有六种

? LC:     Link Control
? ACL-C:  ACL Control
? ACL-U:  User Asynchronous/Isochronous
? SCO-S:  User Synchronous
? eSCO-S: User Extended Synchronous
? PBD:    Profile Broadcast Data

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }LC和ACL-C用于链路控制层(Link Control Level )和链路管理层(Link Manager Level)

ACL-U用于承载用户异步信息

SCO-S/eSCO-S用于承载用户同步信息

PBD用于承载Profile广播数据

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

ACL-C/ACL-U通过Payload Header的Logical Link ID(LLID)来指示

SCO-S/eSCO-s只由Synchronous Logical Transports承载

ACL-U通常由ACL Logical Transport承载,也可由SCO Logical Transport的DV Packet的Data承载

ACL-C可由SCO/ACL Logical Transport承载

PBD由CSB Logical Transport承载

5.1 LC

LC携带底层的控制信息,如ARQ,Flow Control,Payload Characterization

除了没有header的ID Packet,每个Packet都含有LC信息

5.2 ACL-C

ACL-C携带Link Manger层交换的控制信息,使用DM1/DV packets

5.3 ACL-U

ACL-U携带L2CAP层用户数据,可能由一个或者多个baseband包来进行传输

5.4 SCO-S/eSCO-S

SCO-S/eSCO-S携带同步用户数据

5.5 PDB

PBD携带Profile广播数据,并且数据应该完整,不可分片传输

5.6 Priorities

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

PBD优先级最低

6. 数据包(Packets)

6.1 General Format

对于Basic Rate, 一般格式如下

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

通常Packet包含三个部分

- Access Code: 72/68 bits

- Header: 54 bits

- Payload: 0~2790 bits

6.2 Bit Ordering

Baseband在传输时采用Little Endian格式

并有如下规则

- Least Significant Bit(LSB)对应于B0

- LSB先传输

- LSB在左边显示

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

6.3 Access Code

每个Packet以Access Code开始

Access Code标识了一个物理信道,在同一个物理信道中的Packet有相同的Access Code

Access Code有72和68 bits两种

68 bits的Access Code(The shortened access code)不包含Trailer

其后面也没有Header,用于同步(paging, inquiry, and park)

Access Code格式如下

有三种不同的Access Code

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

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

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)

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

 
Sync Word由LAP计算得到

CAC的Sync Word使用Master的LAP来计算

IAC则使用Reserved/Dedicated LAPs

DAC使用Slave的LAP

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

 

6.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 

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

其格式如下

6.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的数据包和广播数据包

6.4.2 Type

区分六种不同的Packet

主要有三种功能

- 决定使用的Logical Transport(SCO/eSCO,ACL,CSB)

- 是否使能Enhanced Data Rate

- 标识Packet类型(SCO/eSCO,ACL)

6.4.3 Flow

在ACL Logical Transport中用来进行流控

其对应值含义为

- 0: STOP indication

- 1: GO indication

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

6.4.4 ARQN

Automatic Repeat reQuest Number

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

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

6.4.5 SEQN

Sequence Number

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

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

6.4.6 HEC

Header Error Check

用于检测Header的完整性

6.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

6.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的一种,可在任意逻辑传输层上传输,用来支持控制信息 
                  也可用来携带用户数据

6.5.2 SCO Packets

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

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

6.5.3 eSCO Packets

主要是EV Packets

Basic Rate: EV3、EV4和EV5

Enhanced Data Rate: 2-EV3、3-EV3、2-EV5和3-EV5

6.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

6.6 Payload Format

Payload中有区分两种字段: 同步数据字段(Synchronous Data Field)和异步数据字段(Asynchronous Data Field)

ACL Packet只含有异步数据字段; SCO/eSCO只含有同步数据字段(例外: DV Packet两者都含有)

6.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

6.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的格式如下

关于LLID字段定义如下

7. 链路控制操作(Link Controller Operation)

Link Controller中定义了几种状态

3个主要状态: STANDBY, CONNECTION and PARK

9个子状态: page, page scan, inquiry, inquiry sacn, synchronous train, synchronous scan

               master response, slave response and inquiry respnse

子状态是建立连接和使设备发现的临时状态

STANDBY是设备的默认状态

在CONNECTION状态下,蓝牙设备有四种模式

保持模式(Hold Mode)、呼吸模式(Sniff Mode)和休眠模式(Park Mode)3种节能模式, 及正常的活动模式(ActiveMode)

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

Bluetooth Baseband介绍

时间: 2024-10-23 17:44:58

Bluetooth Baseband介绍的相关文章

Bluetooth HCI介绍

HCI, 主机控制接口(Host Controller Interface), 是蓝牙协议栈的重要部分, 相应的规范位于Core Version 4.1的vol 2:Part E和vol 4 HCI提供了对控制器的统一接口,用来沟通Host和Control,如下图所示 在规范中对HCI分为两个部分介绍 ~1 沟通Host和Control的接口(vol 2:Part E) ~2 HCI传输层(vol 4) 1. HCI功能 HCI可分为三个部分,前两个即对应于上面的~1 ~ 位于Control中的

Bluetooth LMP介绍

LMP即Link Management Protocol,用于链路建立和控制 1. 介绍 基于这一层的实体我们称之为链路管理器(LM: Link Managers) LM将命令转换为Baseband层的操作(包括如下) ~ 将Slaves加入到Piconet,并给他们分配Active Member Addresss ~ 将断开连接的Slaves从Piconet中分离 ~ 配置Master.Slaves切换的链路 ~ 建立ACL.SCO链路 ~ 将连接设置为低功耗模式: Hold, Sniff a

Bluetooth L2CAP介绍

逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol),是蓝牙系统中的核心协议 相应的规范位于Core Version 4.1的vol 3:Part A L2CAP负责适配基带中的上层协议.它同LM并行工作,向上层协议提供面向连接和无连接的数据服务,并提供多路复用,分段和重组操作 允许高层次的协议和应用能够以64KB的长度发送和接收数据包(L2CAP Serveice Data Units, SDU). L2CAP提供了逻辑信道,名为L

Bluetooth GATT介绍

1. 介绍 GATT(Generic Attribute Profile),描述了一种使用ATT的服务框架 该框架定义了服务(Server)和服务属性(characteristic)的过程(Procedure)及格式 Procedure定义了characteristic的发现.读.写.通知(Notifing).指示(Indicating) 及配置characteristic的广播 GATT可以被Application或其他Profile使用 其协议栈如下图 --------------- ---

Bluetooth HFP介绍

HFP是Hands-free Profile的缩写 1. 介绍 1.1 目的 HFP,让蓝牙设备可以控制电话,如接听.挂断.拒接.语音拨号等 1.2 使用场景 常见的使用情景是汽车套件和蓝牙耳机,将它们连接至手机并用于拨打和接听电话 1.3 依赖关系 如上图所示,HFP依赖于Serial Port Profile和Generic Access Profile 1.4 协议栈 Hands-Free Control是负责Hands-Free unit特定控制信号的实体 其中,信号是基于AT命令 1.

Bluetooth RFCOMM介绍

1. 介绍 RFCOMM提供了基于L2CAP协议的串行(9针RS-232)模拟,最新规范是V1.2,支持在两个蓝牙设备间高达60路的通信连接 RFCOMM支持两种设备类型,但并不对它们进行区分 Type 1: DTE, 通信终端(如计算机,打印机) Type 2: DCE, 通信节点(调制解调器) 连接方式如下图所示 2. 服务概述 2.1 RS-232控制信号 RFCOMM模拟了9针RS-232接口,如下所示 Pin Circuit Name 102 Signal Common 103 Tra

Bluetooth ATT介绍

ATT,即Attribute Protocol,用于发现.读.写对端设备的协议(针对BLE设备) 1 介绍 ATT允许设备作为服务端提供拥有关联值的属性集 让作为客户端的设备来发现.读.写这些属性:同时服务端能主动通知客户端 ATT定义了两种角色: 服务端(Server)和客户端(Client) ATT中的属性包含下面三个内容 - Attribute Type       : 由UUID(Universally Unique IDentifier)来定义 - Attribute Handle  

core bluetooth简单介绍

core bluetooth,蓝牙4.0限制: IOS6 以上 一.外设 peripheral 二.中心 central 三.服务,一个设备有多个服务:由蓝牙硬件厂商决定.决定哪些是用来交互(读写),哪些可获取模块信息(只读): 四.特征,一个服务有多个特征,特征是与外界交互的最小单位:由蓝牙硬件厂商决定.决定哪些是用来交互(读写),哪些可获取模块信息(只读): 五.外设主要类: (Main Objects)CBPeripheraManager----CBCentral (Data Object

core bluetooth详细介绍

遵守CBCentralManagerDelegate代理和CBPeripheralDelegate代理 在使用你的应用去扫描设备之前,先要确定你的蓝牙是否已经打开,所以我们要做一个判断: 其中f3d9是我连接到iPad mini2的LightBlue app模拟的BLE外围设备,你要换成你设备的UUID. centralManagerDidUpdateState是CBCentralManagerDelegate必须实现的方法 - (void)centralManagerDidUpdateStat