Bluetooth RFCOMM介绍

阅读目录

  • 1. 介绍
  • 2. 服务
  • 3. 接口
  • 4. 帧类型
  • 5. 帧格式
  • 6. Multiplexor Frames

回到顶部

1. 介绍

RFCOMM提供了基于L2CAP协议的串行(9针RS-232)模拟
RFCOMM支持在两个蓝牙设备间高达60路的通信连接,最新规范是V1.2

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 多仿真串口和多蓝牙设备

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

回到顶部

3. 接口

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

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

回到顶部

4. 帧类型

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

类型 描述
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、DISC是"low- level"控制帧 
DLCI为0的UIH帧用来传递控制信息,DLCI不为0的UIH帧用来传递数据

回到顶部

5. 帧格式

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 Description
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的格式如下图 

Bluetooth RFCOMM介绍相关推荐

  1. Bluetooth Baseband介绍

    Bluetooth Baseband介绍 阅读目录 1. 介绍 2. 概述 3. 物理信道 4. 物理链路 5. 逻辑传输层 6. 逻辑链路 7. 数据包 8. 链路控制 回到顶部 1. 介绍 蓝牙的 ...

  2. Bluetooth SDP介绍

    Bluetooth SDP介绍 阅读目录 1. 概念 2. 服务记录 3. 服务属性 4. 服务类 5. 服务查找 6. 服务浏览 7. 数据表示 8. 协议说明 回到顶部 1. 概念 SDP, Se ...

  3. 传统蓝牙RFCOMM协议(Bluetooth rfcomm)流程介绍

    零. 概述 本文章主要讲下蓝牙协议栈RFCOMM协议部分流控介绍 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景, ...

  4. 蓝牙Bluetooth模块介绍

    1,蓝牙模块--基础知识介绍 https://blog.csdn.net/wwt18811707971/article/details/77833602 2,常见蓝牙模块介绍和AT指令 https:/ ...

  5. Android4.3 Bluetooth基本介绍

    蓝牙定义 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术.能在包括移动电话.PDA.无线耳机.笔记本电脑.相关外设等众多设备之间进行无线信息交换.利用"蓝牙"技术,能够 ...

  6. Bluetooth 蓝牙介绍(一) :基础知识

    蓝牙背景 从1994年由电信商爱立信提出"希望创建一个RS-232数据线的无线通信替代版本,它能够链接多个设备,克服同步的问题"以来,蓝牙经过了20余个岁月的发展,蓝牙技术也经历了 ...

  7. Bluetooth GAP介绍

    阅读目录 1. 介绍 2. 角色 3. 配置 4. 模式 5. 安全 6. 空闲模式 7. 建立连接 8. 操作模式和过程 回到顶部 1. 介绍 GAP,Generic Access Profile, ...

  8. Bluetooth 蓝牙介绍(四):低功耗蓝牙BLE Mesh网络 Ⅰ—— 基础概念

    文章目录 背景 术语 Managed Flooding Models Scenes 架构 Node Features 中继节点 代理节点 友元节点和低功耗节点 示例 BLE Mesh Networki ...

  9. Bluetooth 蓝牙介绍(二):低功耗蓝牙BLE协议栈

    文章目录 Physical LAYER Link LAYER 角色 地址 物理信道 Air Interface Packet PDU Advertising physical channel PDU ...

  10. Bluetooth 蓝牙介绍(六):低功耗蓝牙信息交互

    文章目录 前言 THREE-WIRE UART TRANSPORT LAYER LINK ESTABLISHMENT UnInitialized STATE Initialized STATE Act ...

最新文章

  1. 执行eclipse,迅速failed to create the java virtual machine。
  2. Shell tips
  3. (转) ASP.NET 2.0:使用用户控件和定制的Web部件个人化你的门户网站(二)
  4. 在.NET Core中使用MongoDB明细教程(3):Skip, Sort, Limit, Projections
  5. 3G-SDI光端机产品技术参数规格及产品应用领域
  6. oracle层次化查询
  7. Bootstrap3 滚动监听的使用方法
  8. html5页面签字,html5 canvas实现的手机端签字板
  9. C++ 冒泡算法 练习
  10. android开源音乐播放器简单demo,Android开源在线音乐播放器——波尼音乐
  11. 1000道Python题库系列分享三(30道)
  12. Macbook无法登陆APP Store解决办法
  13. 批量搜索多个excel文件
  14. 两步实现安卓手机秒变网络摄像头
  15. 《黃帝內經》第一章《上古天真論》
  16. Linux服务器性能评估
  17. Problem L 七段显示器显示整数
  18. ios开发实战swift开发macQQ教程
  19. 没在路边改过代码的程序员,不足以谈人生。
  20. 使用python3爬去360图片

热门文章

  1. 织梦dedecms 模板代码标签学习
  2. autoCAD2014安装激活
  3. 学生如何提高专业英文阅读能力(转自施一公博客)
  4. 课外读物积累-----如何提高英文的科研写作能力(摘自施一公寄语)
  5. My Hotmail Has Been Upgraded to 250MB!
  6. latch: cache buffers chains问题分析
  7. riscv ELF bss段解析
  8. 图画日记怎么画_画画提高的一个方法: 绘画日记!
  9. Delphi东京版FireDAC连接MSSQL2000
  10. python背单词代码实现