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 ...
随机推荐
- Menu菜单
选项菜单 1.菜单的生命周期 * onCreateOptionsMenu() 选项菜单创建时调用(启动Activity时调用 只调用1次) * onPrepareOptionsMenu() 选项菜单准 ...
- Spring的qualifier标签
@Autowired是根据类型进行自动装配的.如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存 ...
- js:工具库-highcharts.js
主要用于方便绘制图标,注意是需要付费的: 相关连接: 官网 中文网 祛除自带标识的代码: credits: { enabled: false //remove the logo and button ...
- Jquery用途
封装JS,开源,操作方便,提高开发效率. 轻量级,选择器强大,浏览器兼容.
- oracle的常用函数
1. nvl NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数expr1为空,那么显示第二个参数的值为expr2,如果第一个参数的值expr1不为空,则显示第 ...
- POJ3252 Round Numbers(不重复全排列)
题目问区间有多少个数字的二进制0的个数大于等于1的个数. 用数学方法求出0到n区间的合法个数,然后用类似数位DP的统计思想. 我大概是这么求的,确定前缀的0和1,然后后面就是若干个0和若干个1的不重复 ...
- BZOJ3745 : [Coci2014]Norma
考虑枚举右端点,用线段树维护[i,nowr]的答案. 当右端点向右延伸时,需要知道它前面第一个比它大/小的数的位置,这里面的最值将发生改变,这个使用单调队列求出,然后将所有的l都加1. 注意常数优化. ...
- Flexbox——快速布局神器
Flexbox通常能让我们更好的操作他的子元素布局,例如: 如果元素容器没有足够的空间,我们无需计算每个元素的宽度,就可以设置他们在同一行: 可以快速让他们布局在一列: 可以方便让他们对齐容器的左.右 ...
- hiho 毁灭者问题
描述 在 Warcraft III 之冰封王座中,毁灭者是不死族打三本后期时的一个魔法飞行单位. 毁灭者的核心技能之一,叫做魔法吸收(Absorb Mana): 现在让我们来考虑下面的问题: 假设你拥 ...
- SQLyog 配置SQL Assitant
在上一篇博文“MySQL配置SQL Assistant提示”中,我介绍了配置SQL Assitant自带的SQL Editor连接MySQL数据库的配置,但是试用两天后发现,SQL Editor不支持 ...