Bluetooth RFCOMM介紹


1. 介紹

RFCOMM提供了基於L2CAP協議的串行(9針RS-232)模擬
RFCOMM支持在兩個藍牙設備間高達60路的通信連接,最新規范是V1.2

RFCOMM支持兩種設備類型,但並不對它們進行區分

Type 1: DTE, 通信終端(如計算機, 打印機) 
Type 2: DCE, 通信節點(調制解調器)

連接方式如下圖所示
image

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
image

2.3 多串口仿真

2.3.1 兩個設備間的多串口仿真

兩個使用RFCOMM通信的藍牙設備可以同時打開多個串口仿真
RFCOMM支持多大60路,但是一個設備實際能打開的數據依實現而定
image

一個數據鏈接標識(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)來區分image

3. 接口

RFCOMM目的在於定義一個能夠利用仿真串口的協議

下圖是RFCOMM參考模型及相應描述

image

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幀格式如下所示
image

5.1 Address字段

image 
EA(Extern Address)字段: 在RFCOMM中,為1
C/R(Command/Response)字段: 表示該幀是一個Command還是Response,設置方式如下圖所示
image
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字段用來標識幀的類型,下圖是相關值
image
其中,P/F是Poll/Final位,在Commands中,被稱為P位;而在Responses中則被稱為F位
當發送的Command需要一個相應時,就將P置1,接收方收到這樣的命令時需要馬上響應並將F置1
如果接收到P/F位置為0的SABM或DISC幀,接收方將把它們丟棄
DM幀不考慮P/F的設置。

5.3 Length字段

image
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的格式如下圖
image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM