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时钟)
时钟决定了触发事件和关键周期,蓝牙系统中有四个重要周期
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
前两种用于特定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.
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
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
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
其格式如下

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: 蓝牙基带>
Bluetooth Baseband介绍的更多相关文章
- Bluetooth GATT介绍
目录 1. 介绍 2 内容 2.1 Configured Broadcast 2.2 GATT Profile Hierarchy 3 Service Interoperability Require ...
- Bluetooth LMP介绍
目录 1. 介绍 2. 数据包格式(Packet Format) 3. Procedure Rules 4. 通用回应消息(General Response Messages) 5. 设备特性(Dev ...
- Bluetooth HCI介绍
目录 1. HCI功能 2. HCI Packet 1. HCI Command 2. HCI Event 3. HCI Data 3. HCI传输层 HCI, 主机控制接口(Host Control ...
- Bluetooth GAP介绍
目录 1 GAP协议栈 2 Profile Role 3 用户接口 4 模式 5 安全 5.1 认证(Authentication) 5.2 安全模式 6 Idle Mode Procedures 7 ...
- Bluetooth ATT介绍
目录 1 介绍 2 详细内容 2.1 Attribute Type 2.2 Attribute Handle 2.3 Attribute Handle Grouping 2.4 Attribute V ...
- Bluetooth HFP介绍
目录 1. 介绍 1.1 目的 1.2 使用场景 1.3 依赖关系 1.4 协议栈 1.5 角色 2. 应用层 3. 空白章节 4. 互操作性要求 4.1 介绍 4.2 Service Level C ...
- Bluetooth RFCOMM介绍
目录 1. 介绍 2. 服务概述 2.1 RS-232控制信号 2.2 Null Modem Emulation 2.3 多串口仿真 3. 服务接口描述 4. RFCOMM帧类型 5. RFCOMM帧 ...
- Bluetooth L2CAP介绍
目录 1. 通用操作 1. L2CAP Channel 2. 设备间操作 3. 层间操作 4. 操作模式 2. 数据包格式(Data Packet Format) 1. B-Frame 2. G-Fr ...
- Bluetooth SDP介绍
目录 1. 概念 2. 服务记录(Service Record) 3. 服务属性(Service Attribute) 4. 服务类(Service Class) 5. 服务查找 5.1 UUID 5 ...
随机推荐
- 图文详解YUV420, yuv格式2
YUV格式有两大类:planar和packed. 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V. 对于packed的YUV格式,每个像素点的Y ...
- jQuery对象和DOM对象之间的相互转换
DOM对象:DOM(Document Object Model,文档对象模型),每一份DOM都可以表示成为一棵树,DOM对象可以使用javascript中的方法. jQuery对象:jQuery对象就 ...
- jQuery检查某个元素在网页上是否存在
jQuery选择器有比较完善的处理机制,用jQuery获取网页中不存在的元素也不会报错,值得注意的是,利用$('#tt')获取的永远是对象,即使网页上没有此元素.当使用jQuery检查某个元素在网页上 ...
- C++ windows遍历目录
bool Search(TCHAR *Path,TCHAR *File) { HANDLE hFind; WIN32_FIND_DATA wfd; ZeroMemory(&wfd,sizeof ...
- ZOJ1232 Adventure of Super Mario(DP+SPFA)
dp[u][t]表示从起点出发,到达i点且用了t次magic boot时的最短时间, 方程如下: dp[v][t]=min(dp[v][t],dp[u][t]+dis[u][v]); dp[v][t] ...
- 一些比较实用的javascript方法收集,留着有用
动态加载javascript文件 <script type="text/javascript"> //<!-- /*动态加载方法*/ function loadS ...
- HDNOIP201404最短路径
HDNOIP201404最短路径 难度级别: A: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 a.b.c是3个互不相等的1 ...
- 使用edtftpj-***.jar上传下载中文问题的解决方案和注意点
FileTransferClient ftpClient = null; try { ftpClient = new FileTransferClient(); // set remote host ...
- ArcEngine 获取像元值
栅格数据获取像元值, 使用ISurface.GetElevation(IPoint pnt),功能是实现了,获取的 不是像元值,是插值结果.而由于栅格数据是离散的值,每个栅格值代表了特殊的含义,插值之 ...
- echo "不允许上传该类型的文件
<?php教程 // 上传设置 $maxsize=10002400; //最大允许上传的文件大小 $alltype=array(".php"," ...