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 Transmit Data(TD)
104 Received Data(RD)
105 Request to Send(RTS)
106 Clear to Send(CTS)
107 Data Set Ready(DSR)
108 Data Terminal Ready(DTR)
109 Data Carrier Detect(CD)
125 Ring Indicator(RI)

2.2 Null Modem Emulation

当传递非数据通路的状态信息时,不区分DTE和DCE设备,
而用控制信号来代替相应的信号,下图是对应关系

GSM 07.10信号 对应RS-232控制信号
RTS DSR, DTR
RTR RTS, CTS
IC RI
DV DCD

当两个同类设备(如DTE)互联时,GSM 07.10传输控制信号时就会创建Null Modem

下图显示了两个DTE设备相连时创建的Null Modem

2.3 多串口仿真

2.3.1 两个设备间的多串口仿真

两个使用RFCOMM通信的蓝牙设备可以同时打开多个串口仿真
RFCOMM支持多大60路,但是一个设备实际能打开的数据依实现而定

一个数据链接标识(DLCI: 参考帧格式Address字段D+ServerChannel)标识一对客户和服务器之间的持续连接
DLCI在两个设备间的RFCOMM会话中保持一致
DLCI长度为6bit,在RFCOMM中其可用值区间为2~61
DLCI 0为控制信道
DLCI 1由于服务器信道概念不能使用
DLCI 62-63保留

在一次RFCOMM会话中,客户和服务器可以分布在通信的两端,每一端的客户都可以独立发起建立通信连接
因此可使用RFCOMM服务器信道的概念将DLCI值域空间在两个正在进行通信的设备间进行划分

2.3.2 多仿真串口和多蓝牙设备(Optional)

如果蓝牙设备支持多串口仿真,同时通信连接两端允许使用不同BT设备
那么RFCOMM实体必须能够运行多路复用会话,每个多路复用使用L2CAP信道标识符(CID)来区分

3. 服务接口描述

RFCOMM目的在于定义一个能够利用仿真串口的协议

下图是RFCOMM参考模型及相应描述

4. RFCOMM帧类型

RFCOMM支持的帧(Frame)类型如下

Frame Types
SABM - Set Asynchronous Balanced Mode (startup command)
UA - Unnumbered Acknowledgement (response when connected)
DISC - Disconnect (disconect command)
DM - Disconnected Mode (response to a command when disconected)
UIH - Unnumbered Information with Header check

SABM,UA,DM and DISC是"low- level”控制帧
DLCI为0的UIH帧用来传递控制信息,DLCI不为0的UIH帧用来传递数据

5. RFCOMM帧格式

RFCOMM帧格式如下所示

5.1 Address字段

 
EA(Extern Address)字段: 在RFCOMM中,为1
C/R(Command/Response)字段: 表示该帧是一个Command还是Response,设置方式如下图所示

DCLI: direction bit and server channel, 通常initator将D位(即最低位)设置为1,而Responser则将其设置为0
         故initator的DCLI的值总是基数(3,5,7,…,61),而Responser则为偶数(2,4,6,…,60)

5.2 Control字段

Control字段用来标识帧的类型,下图是相关值

其中,P/F是Poll/Final位,在Commands中,被称为P位;而在Responses中则被称为F位
当发送的Command需要一个相应时,就将P置1,接收方收到这样的命令时需要马上响应并将F置1
如果接收到P/F位置为0的SABM或DISC帧,接收方将把它们丢弃
DM帧不考虑P/F的设置。

5.3 Length字段


Length字段由最低位的EA来决定其长度
当EA为1时,长度为7bits(0~127)
当EA为0时,长度为15bits(0~32767)

其中,RFCOMM帧的默认长度为127,最大长度为32767

5.4 Data字段

Data字段仅仅在UIH帧中存在,其长度限制由L2CAP的MTU所限制

5.5 FCS字段

用于接收方校验接收数据是否正确,校验原理采用循环冗余校验CRC-8

对于SABM,DISC,UA和DM帧,FCS计算Address,Control and Length字段
对于UIH帧,FCS计算Address and Control字段

6. Multiplexor Frames

Multiplexorm Commands and Responses在DLCI=0在发送用于控制RFCOMM连接
有七种类型的Commands or Responses

Commands/Responses
PN - DLC parameter negotiation
Test - Test Command
FCon/FCoff - Flow Control On/Off Command
MSC - Modem Status Command, used for flow control
RPN - Remote Port Negotiation
RLS - Remote Line Status
NSC - Non Supported Command (response only)

注意: 当收到一个不支持的命令时应该回应NSC

上面的这些命令和相应通过UIH帧(DLCI=0)来封装
可以在一个RFCOMM帧中封装多个命令,也可以将一个命令拆分至多个RFCOMM帧

Multiplexor Frames的格式如下图

tip: Multiplexor Frames的详细格式请参考<rfcomm_tutorial>的10.6部分

Bluetooth RFCOMM介绍

时间: 2024-09-30 16:36:34

Bluetooth RFCOMM介绍的相关文章

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 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 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 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 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(

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