蓝牙协议概述Word格式.docx
- 文档编号:17951252
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:50
- 大小:2.45MB
蓝牙协议概述Word格式.docx
《蓝牙协议概述Word格式.docx》由会员分享,可在线阅读,更多相关《蓝牙协议概述Word格式.docx(50页珍藏版)》请在冰豆网上搜索。
3、链路管理单元(LinkManager):
负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作。
4、蓝牙软件协议实现:
如上图紫色部分,这个后面我们做详细说明。
四、蓝牙协议规范
传输协议、中介协议、应用协议;
1、传输协议
负责蓝牙设备间,互相确认对方的位置,以及建立和管理蓝牙设备间的物理链路;
底层传输协议:
蓝牙射频(Radio)部分、基带链路管理控制器(Baseband&
LinkController)、链路管理协议(LinkManagerProtocolLMP)。
负责语言、数据无线传输的物理实现以及蓝牙设备间的联网组网。
高层传输协议:
逻辑链路控制与适配器(LogicalLinkControlandAdaptationProtocol)L2CAP、主机控制接口(HostControlInterface,HCI)。
为高层应用屏蔽了跳频序列选择等底层传输操作,为高层程序提供有效、有利于实现数据分组格式。
2、中介协议
为高层应用协议或者程序,在蓝牙逻辑链路上工作提供必要的支持,为应用提供不同标准接口。
串口仿真协议:
RFCOMM、服务发现协议:
SDP、互操作协议IrDA、网络访问协议:
PPP、IP、TCP、UDP、电话控制协议:
TCS、AT指令集。
3、应用协议
蓝牙协议栈之上的应用软件和所涉及到的协议,如:
拨号上网、语言功能的应用程序。
蓝牙的应用框架如下:
(1)、通用应用类框架:
查询、建立连接服务等;
(2)、蓝牙电话应用类框架:
电话控制、语言;
(3)、蓝牙连网应用类框架:
网络应用相关;
(4)、对象交互服务类框架:
IrDA、OBEX;
(5)、蓝牙音视频控制类框架。
五、硬件接口
一般蓝牙芯片通过UART、USB、SDIO、I2S、PcCard和主控芯片通信。
如下图所示,通过UART和主控芯片通信。
第二章蓝牙协议规范(射频、基带链路控制、链路管理)
蓝牙协议是蓝牙设备间交换信息所应该遵守的规则。
与开放系统互联(OSI)模型一样,蓝牙技术的协议体系也采用了分层结构,从底层到高层形成了蓝牙协议栈,各层协议定义了所完成的功能和使用数据分组格式,以保证蓝牙产品间的互操作性。
一、射频协议
射频位置如上图红色部分。
1、工作频率
蓝牙工作在2.4GHzISM频段上,蓝牙采用跳频扩谱技术主动的避免工作频段受干扰(微波炉的工作频率也是2.4GHz)。
地理位置
ISM频段范围
射频信道频率
中国、美国、欧洲
2400.0~2483.5MHz
F=(2402+k)MHz,k在0、1、……78中随机取值
法国
2446.5~2483.5MHz
F=(2454+k)MHz,k在0、1、……22中随机取值
日本
2471.0~2497.0MHz
F=(2473+k)MHz,k在0、1、……22中随机取值
西班牙
2445.0~2475.0MHz
F=(2449+k)MHz,k在0、1、……22中随机取值
我国的蓝牙频率在2.402GHz~2.483GHz,蓝牙每个频道的宽度为1MHz,为了减少带外辐射的干扰,保留上、下保护为3.5MHz和2MHz,79个跳频点中至少75个伪随机码跳动,30S内任何一个频点使用时长不能超过0.4S。
2、跳频技术、发射功率、时隙
(1)、发射功率:
蓝牙发射功率分三级:
一级功率100mW(20dBm);
二级功率2.5mW(4dBm);
三级功率1mW(0dBm);
(2)、物理信道:
蓝牙物理信道有伪随机序列控制的79个跳频点构成,不同跳频序列代表不同的信道。
(3)、时隙:
蓝牙跳频速率为1600次/s,每个时间为625uS(1S/1600)称为一个时隙;
二、基带与链路控制协议
蓝牙发送数据时,基带部分将来自高层的数据进行信道编码,向下发给射频进行发送;
接收数据时,将解调恢复空中数据并上传给基带,基带进行信道编码传送给上层。
作用:
跳频选择、蓝牙编址、链路类型、信道编码、收发规则、信道控制、音频规范、安全设置。
1、蓝牙分组编码为小端模式;
2、蓝牙地址
BD_ADDR:
BluetoothDeviceAddress;
LAP:
LowerAddressPart低地址部分;
UAP:
UpperAddressPart高地址部分;
NAP:
Non-significantAddressPart无效地址部分。
3、蓝牙时钟
每个蓝牙设备都有一个独立运行的内部系统时钟,称为本地时钟(LocalClock),决定定时器的收发跳频。
为了与其他设备同步,本地时钟要加一个偏移量(offset),提供给其他设备同步。
蓝牙基带四个关键周期:
312.5uS、625uS、1.25mS、1.28S。
CLKN:
本地时钟:
CLKE:
预计时钟,扫描寻呼过程中用到;
CLK:
设备实际运行的时钟频率。
CLKE、CLK由CLKN加上一个偏移量得到的。
4、蓝牙物理链路:
通信设备间物理层的数据连接通道就是物理链路。
ACL(AsynchronousConnectionless)异步无连接链路;
对时间要求不敏感的数据通信,如文件数据、控制信令等。
SCO(SynochronousConnectionOriented)同步面向连接链路;
对时间比较敏感的通信,如:
语音;
最多只支持3条SCO链路,不支持重传。
ACL用于数据传输;
5、蓝牙基带分组:
基带分组至少包括:
接入码、分组头、有效载荷;
(1)、接入码用于同步、直流、载频泄漏偏置补偿标识;
(2)、分组头包含链路信息,确保纠正较多的错误。
分组类型如下:
分组类别
Type(b3b2b1b0)
时隙
SCO
ACL
链路控制分组
0000
1
NULL
0001
POLL
0010
FHS
0011
DM1
单时隙分组
0100
未定义
0101
HV1
0110
HV2
0111
HV3
1000
DV
1001
AUX1
3时隙分组
1010
3
DM3
1011
DH3
1100
1101
5时隙分组
1110
5
DM5
1111
ACL分组形式为:
D(M|H)(1|3|5),D代表数据分组,M代表用2/3比例的FEC的中等速率分组;
H代表不使用纠错码的高速率分组;
1、3、5分别代表分组所占用的时隙数目;
DM1、DM3、DM5、DH1、DH3、DH5
SCO分组形式为:
HV(1|2|3)。
HV代表高质量语言分组,1、2、3有效载荷所采用的纠错码方法。
1为1/3比例FEC,设备2个时隙发送一个单时隙分组;
2为2/3比例FEC,设备4个时隙发送一个单时隙分组;
3为不使用纠错码,设备6个时隙发送一个单时隙分组
HV1、HV2、HV3
ALC分组:
类型
有效载荷头/字节
用户有效载荷/字节
FEC
CRC
对称最大速率/kbps
非对称速率/kbps
前向
后向
0~17
2/3
有
108.8
DH1
0~27
无
172.8
2
0~121
258.1
387.2
54.4
0~183
390.4
585.6
86.4
0~224
286.7
477.8
36.3
MH5
0~339
433.9
723.2
57.6
0~29
185.6
SCO分组:
有效载荷长度
同步速率/kbps
占用Tsco数目/语言长度
10
1/3
240位
64
2/1.25ms
20
4/2.5ms
30
6/3.75ms
1D
10+(0-9)D
2/3D
有D
64+57.6D
注释:
D只对数据段有用,DV分组包含数据段,也包含语言段。
(3)、有效载荷
分语言有效载荷、数据有效载荷。
6、蓝牙的逻辑信道
链路控制信道:
LinkControl
LC
链路管理信道:
LinkManageLM
用户异步数据信道:
UserAsynchronizationUA
用户同步数据信道:
UserSynchronizationUS
用户等时数据信道:
UserIsochronousUI
UI
7、蓝牙的收发规则
上图为RX缓存。
上图为TX缓存。
新分组到达时,ACL链路的RX缓存器要流量控制,SCO数据不需要流量控制;
8、蓝牙基带信道和网络控制
1)、链路控制器状态:
待机、连接
寻呼page、寻呼扫描pagescan、查询inquiry、查询扫描inquiryscan、主设备相应MasterResponse、从设备相应SlaveResponse、查询相应inquiryresponse
2)、连接状态
激活模式active、呼吸模式sniff、保持模式hold、休眠模式park。
3)、待机状态
待机状态是蓝牙设备缺省低功耗状态,此状态下本地时钟以低精度运行。
蓝牙从待机转入寻呼扫描状态,对其他寻呼进行响应成为从设备;
也可以从待机状态进入查询扫描状态,完成一个完整的寻呼,成为主设备。
9、接入过程
注释:
IACInquiryAccessCode查询接入码;
GIAC:
通用查询接入码DIAC:
专用查询接入码;
DAC:
DeviceAccessCode设备接入码;
LAP:
建立连接,必须使用查询、寻呼;
查询过程使用IAC,发现覆盖区域内的设备、设备的地址及其时钟;
连接过程使用DAC,建立连接的设备处理寻呼过程,成为主设备。
、
(1)、查询过程
蓝牙设备通过查询来发现通信范围内的其他蓝牙设备。
查询信息分为GIAC、DIAC两种。
查询发起设备收集所有相应设备的地址、时钟信息。
一设备进入查询状态去发现其他设备,查询状态下连续不断的在不同频点发送查询消息。
查询的跳频序列有GIAC的LAP导出。
一设备想被其他设备发现,就要周期性进入查询扫描状态,以便相应查询消息。
如:
我们选择设备多长时间可见,其实就是
进入查询扫描状态。
A、查询扫描
查询扫描状态下,接收设备扫描接入码的时间长度,足以完成对16个频率的扫描。
扫描区间长度Twindowinquiryscan。
扫描在同一个频率上进行,查询过程用32跳专用查询跳频序列,此序列有通用查询的地址决定,相位有本地时钟决定,每隔1.28S变化一次。
B、查询
与寻呼类似,TX用查询跳频序列、RX用查询相应跳频序列。
C、查询相应
从设备响应查询操作。
每个设备都有自己的时钟,使用查询序列相位相同的几率比较小。
为了避免多个设备在同一查询跳频信道同时激活,从设备查询响应规定:
从设备收到查询消息,产生0-1023只觉得额一个随机数,锁定当时相位输入值进行跳频选择,从设备此后的RAND时隙中返回到连接或者待机状态。
(2)、寻呼扫描
DeviceAccessCode设备接入码
寻呼扫描状态下的设备扫描窗口Twindowpagescan内监听自己的DAC。
监听只在一个跳频点进行。
Twindowpagescan足够覆盖16个寻呼扫描频点。
寻呼扫描状态,扫描在同一个频率上进行,持续1.28S,在选择另一个不同频率。
SR模式
Tpagescan
寻呼次数Npage
R0
连续
>
=1
R1
<
=1.28S
=128
R2
=2.56S
=256
预留
--
(3)、寻呼
主设备使用寻呼发起一个主—从设备连接,通过在不同的跳频点上重复发送从设备DAC来扑捉从设备,从设备在寻呼扫描状态被唤醒,接收寻呼。
(4)、寻呼相应过程
三、链路管理器
如上图红色部分,负责完成设备:
功率管理、链路质量管理、链路控制管理、数据分组管理、链路安全管理。
1、链路管理协议数据单元
蓝牙链路管理器接收到高层的控制信息后,不是向自身的基带部分分发控制信息,就是与另一台设备的链路管理器进行协商管理。
这些控制信息封装在链路管理协议数据单元LMP_PDU中,由ACL分组的有效载荷携带。
2、链路管理器协议规范
(1)、设备功率管理
RSSI保持模式、呼吸模式、休眠模式。
(2)、链路质量管理QoSQualityofService
A、ACL链路。
B、SCO链路。
(3)、链路控制管理
设备寻呼模式、设备角色转换、时钟计时设置、信息交换:
版本信息、支持特性、设备名称;
建立连接、链路释放。
(4)、数据分组管理
第三章蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)
一、主机控制接口协议
HCI
蓝牙主机-主机控模型
蓝牙软件协议栈堆的数据传输过程:
1、蓝牙控制器接口数据分组:
指令分组、事件分组、数据分组
(1)、指令分组
AccpetConnectionRequest
Opcode为:
0x0409
参数长度为:
07
参数中蓝牙地址为:
00:
0d:
fd:
5f:
16:
9f
角色为:
从设备
0x01
大端数据模式
指令为:
0904079f165ffd0d0001
(2)、事件分组
如上图:
Opcode:
状态:
0x00
总长度:
4字节
命令状态:
0x0f
(3)、数据分组
ACL数据分组
连接句柄(12bit)
PB(2bit)
BC(2bit)
数据长度(16bit)
数据…………
注:
PB
Packet_Boundary
BC
BroadcastFlag
SCO数据分组
保留(4bit)
(4)、RS232分组指示器:
HCI分组类型
RS232分组指示器
HCI指令分组
0x01
HCIACL数据分组
0x02
HCISCO数据分组
0x03
HCI事件分组
0x04
HCI错误消息分组
0x05
HCI协商分组
0x06
2、HCI控制命令
(1)、链路控制指令
命令
OCF
概述
Inquiry
0x0001
蓝牙设备进入查询模式,搜索临近设备
InquiryCancel
0x0002
退出查询模式
PeriodicInquiryMode
0x0003
蓝牙设备在指定周期内自动查询
ExitPeriodicInquiryMode
0x0004
退出自动查询模式
CreateConnection
0x0005
按指定蓝牙设备的BD_ADDR创建ACL链路
Disconnect
0x0006
终止现有连接
AddSCOConnection
0x0007
利用连接句柄参数指定的ACL连接创建SCO
CancelCreateConnection
0x0008
AcceptConnectionRequest
0x0009
接收新的呼入连接请求
RejectConnectionRequest
0x000A
拒绝新的呼入连接请求
LinkKeyRequestReply
0x000B
应答从主机控制器发出的链路密钥请求事件,并指定存储在主机上的链路密钥做为与BD_ADDR指定的蓝牙设备进行连接使用的链路密钥请求事件
LinkKeyRequestNegativeReply
0x000C
如果主机上没有存储链路密钥,作为与BD_ADDR指定的蓝牙设备进行连接使用的链路密钥,就应答从主机控制器发出的链路密钥请求事件
PINCodeRequestReply
0x000D
应答从主机控制器发出的PIN请求事件,并指定用于连接的PIN
PINCodeRequestNegativeReply
0x000E
当主机不能指定连接的PIN时,应回答从机控制器发出的PIN请求事件
ChangeConnectionPacketType
0x000F
改变正在建立连接的分组类型
AuthenticationRequest
0x0011
指定连接句柄关联的两个蓝牙设备之间建立身份鉴权
SetConnectionEncryption
0x0013
建立取消连接加密
ChangeConnectionLinkKey
0x0015
强制关联了连接句柄的两个设备建立连接,并生成一个新的链路密钥
MasterLinkKey
0x0017
强制关联了连接句柄的两个设备利用主设备时链路密钥或常规密钥
RemoteNameRequest
0x0019
获取远端设备的名称
CancelRemoteNameRequest
ReadRemoteSupportedFeatures
0x001B
请求远端设备所支持的特性列表
ReadRemoteExtendedFeatures
ReadRemoteVersionInformation
0x001D
从远端设备读取版本信息
ReadClockOffset
0x001F
读取远端的时钟信息
(2)、链路策略指令
简介
HoldMode
改变LM状态和本地及远程设备为主模式的LM位置
SniffMode
改变LM状态和本地及远程设备为呼吸模式的LM位置
ExitSniffMode
结束连接句柄在当前呼吸模式里的呼吸模式
ParkState
改变LM状态和本地及远程设备为休眠模式的LM位置
ExitParkState
切换从休眠模式返回到激活模式的蓝牙设备
QoSSetup
指出连接句柄的服务质量参数
RoleDiscovery
蓝牙设备连接后确定自己的主从角色
SwitchRole
角色互换
ReadLinkPolicySettings
为指定连接句柄读链路策略设置。
链路策略设置允许主机控制器指定用于连接句柄的LM连接模式
WriteLinkPolicySettings
为指定连接句柄写链路策略设置。
链路策略设置允许主机控制器指定用于连接句柄的LM连
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝牙 协议 概述