蓝牙的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介绍的更多相关文章

  1. Bluetooth GATT介绍

    目录 1. 介绍 2 内容 2.1 Configured Broadcast 2.2 GATT Profile Hierarchy 3 Service Interoperability Require ...

  2. Bluetooth LMP介绍

    目录 1. 介绍 2. 数据包格式(Packet Format) 3. Procedure Rules 4. 通用回应消息(General Response Messages) 5. 设备特性(Dev ...

  3. Bluetooth HCI介绍

    目录 1. HCI功能 2. HCI Packet 1. HCI Command 2. HCI Event 3. HCI Data 3. HCI传输层 HCI, 主机控制接口(Host Control ...

  4. Bluetooth GAP介绍

    目录 1 GAP协议栈 2 Profile Role 3 用户接口 4 模式 5 安全 5.1 认证(Authentication) 5.2 安全模式 6 Idle Mode Procedures 7 ...

  5. Bluetooth ATT介绍

    目录 1 介绍 2 详细内容 2.1 Attribute Type 2.2 Attribute Handle 2.3 Attribute Handle Grouping 2.4 Attribute V ...

  6. Bluetooth HFP介绍

    目录 1. 介绍 1.1 目的 1.2 使用场景 1.3 依赖关系 1.4 协议栈 1.5 角色 2. 应用层 3. 空白章节 4. 互操作性要求 4.1 介绍 4.2 Service Level C ...

  7. Bluetooth RFCOMM介绍

    目录 1. 介绍 2. 服务概述 2.1 RS-232控制信号 2.2 Null Modem Emulation 2.3 多串口仿真 3. 服务接口描述 4. RFCOMM帧类型 5. RFCOMM帧 ...

  8. Bluetooth L2CAP介绍

    目录 1. 通用操作 1. L2CAP Channel 2. 设备间操作 3. 层间操作 4. 操作模式 2. 数据包格式(Data Packet Format) 1. B-Frame 2. G-Fr ...

  9. Bluetooth SDP介绍

    目录 1. 概念 2. 服务记录(Service Record) 3. 服务属性(Service Attribute) 4. 服务类(Service Class) 5. 服务查找 5.1 UUID 5 ...

随机推荐

  1. Menu菜单

    选项菜单 1.菜单的生命周期 * onCreateOptionsMenu() 选项菜单创建时调用(启动Activity时调用 只调用1次) * onPrepareOptionsMenu() 选项菜单准 ...

  2. Spring的qualifier标签

    @Autowired是根据类型进行自动装配的.如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存 ...

  3. js:工具库-highcharts.js

    主要用于方便绘制图标,注意是需要付费的: 相关连接: 官网 中文网 祛除自带标识的代码: credits: { enabled: false //remove the logo and button ...

  4. Jquery用途

    封装JS,开源,操作方便,提高开发效率. 轻量级,选择器强大,浏览器兼容.

  5. oracle的常用函数

    1. nvl NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数expr1为空,那么显示第二个参数的值为expr2,如果第一个参数的值expr1不为空,则显示第 ...

  6. POJ3252 Round Numbers(不重复全排列)

    题目问区间有多少个数字的二进制0的个数大于等于1的个数. 用数学方法求出0到n区间的合法个数,然后用类似数位DP的统计思想. 我大概是这么求的,确定前缀的0和1,然后后面就是若干个0和若干个1的不重复 ...

  7. BZOJ3745 : [Coci2014]Norma

    考虑枚举右端点,用线段树维护[i,nowr]的答案. 当右端点向右延伸时,需要知道它前面第一个比它大/小的数的位置,这里面的最值将发生改变,这个使用单调队列求出,然后将所有的l都加1. 注意常数优化. ...

  8. Flexbox——快速布局神器

    Flexbox通常能让我们更好的操作他的子元素布局,例如: 如果元素容器没有足够的空间,我们无需计算每个元素的宽度,就可以设置他们在同一行: 可以快速让他们布局在一列: 可以方便让他们对齐容器的左.右 ...

  9. hiho 毁灭者问题

    描述 在 Warcraft III 之冰封王座中,毁灭者是不死族打三本后期时的一个魔法飞行单位. 毁灭者的核心技能之一,叫做魔法吸收(Absorb Mana): 现在让我们来考虑下面的问题: 假设你拥 ...

  10. SQLyog 配置SQL Assitant

    在上一篇博文“MySQL配置SQL Assistant提示”中,我介绍了配置SQL Assitant自带的SQL Editor连接MySQL数据库的配置,但是试用两天后发现,SQL Editor不支持 ...