CMUX帧结构以及开启

 

TE: terminal equipment
MS: mobile station

Allows a number of simultaneous sessions over a normal serial asynchronous interface.
1. TE通过物理通道发送AT+CMUX=0通知MS进入mux模式;
2. MS响应OK表示同意;
3. TE依次发送SAMB0,1,2,3,建立编号为0~3的逻辑通道;
4. MS响应UA表示同意;
5. TE在通道1上发送命令UIH(1,"AT/r/n");
6. MS也在通道1上响应UIH(1,"OK/r/n").

0710一共定义了6种包(不包括error recover mode)
1. Set Asynchronous Balanced Mode (SABM)--建立逻辑通道;
2. command Disconnect (DISC) command-取消逻辑通道;
3. Unnumbered Acknowledgement (UA) response-响应建立通道;
4. Disconnected Mode (DM) response-响应取消逻辑通道;
5. Unnumbered information with header check (UIH);
6. Unnumbered Information (UI).

0710支持三种模式: Basic,Advanced,Advance with error recovery.

Basic: Flag(1Byte) Adderss (1Byte) Control(1Byte) Length(1~2Byte) Info(Length指定长度,可变) FCS(1Byte) Flag(1Byte).
Flag固定为0xF9;
Adderss 逻辑通道编号,类似于MAC地址.bit1 为 E/A,bit2 为 C/R,bit3~8为逻辑通道号. E/A 为1表示当前字节是否是该项的最后一个字节,这里只能为1; C/R用来指示命令发送方是否是通道发起方,是则为1 如TE建立的逻辑通道1,往该通道上发命令包时,Adderss为0x7,MS响应Adderss也是0x7;
Control 为上面说的包类型,其中bit5为P/F,大致可以这么理解,SAMB,DISC包及其响应时,P/F为1(响应为DM时,该位可以是0或1);
Length 为Info项长度,bit定义依次为 E/A,L1,L2,...,L7,(L8,...,L15),长度小于128时,E/A为1,不编码第二个字节 Info 类容取决域包类型;
FCS 为校验码,UIH,UI包的区别就在这里,UIH不对Info项编码,只编码Adderss,Control,Length.

Advanced模式包格式为 Flag(1Byte) Adderss (1Byte) Control(1Byte) Info(不定长) FCS(1Byte) Flag(1Byte)
Flag固定为0x7E;
两种模式的区别就是Advanced模式没有Length一项,而是采取了特定格式编码,来决定包何时结束,发包方对Flag除外其他项编码,碰到0x7E,0x7D等字符则在其前插入0x7D,接受方去掉相应0x7D.这样碰到单独的0x7E则表示包的结束和开始.

=========================================================

Multiplexer protocol(以下简称MUX) 简单一点就是多路复用,将原有的一条物理通道虚拟成几条可并发的逻辑通道,同网络协议中的物理链路,逻辑链路有点类似.实现上也类似,将逻辑通道上的数据打包,加上包头包尾,再发到物理通道上.

 

上图为建立逻辑通道,发送数据的例子.其中AT+CMUX=0是物理通道上的数据,告诉GSM MODEM(以下简称猫)我要进到MUX模式了,猫响应OK.主机依次发送SAMB0,1,2,3,建立编号为0~3的逻辑通道.猫响应UA表示同意. 然后主机就可以使用逻辑通道发命令了,如上图的UIH(1,"ATrn"),猫也在该通道(地址为1)上响应UIH包,数据同物理通道上响应一致,也就是 OKrn.

 

===============================================================================================================
 
 
 
 
 
 
帧事例一: 
          

Flag

Address

Control

Length Indicator

FCS

Flag

1B

1B

1B

1B/2B

1B

1B

F9

03

3F

01

1C

F9

控制通道

DLC0

SABM帧

长度0,没有

信息

 

 

 这是一个SABM帧,用于打开控制通道0.
帧事例二:

Flag

Address

Control

Length Indicator

Information

FCS

Flag

1B

1B

1B

1B/2B

长度不确定

1B

1B

F9

05

EF

09

41 54 49 0D 

58

F9

控制通道

DLC1

UIH帧

长度4

ATI 

 

这是一个UIH帧,用于在逻辑通道上传输数据ATI。

 

帧事例三:

Flag

Address

Control

Length Indicator

Information

FCS

Flag

1B

1B

1B

1B/2B

长度不确定

1B

1B

F9

01

EF

0B

E3 07 07 0D 01 

58

F9

控制通道

DLC0

UIH帧

长度5

代表MSC 消息

 

这是一个MSC消息.

 

注:由这几个图可以看出来一些总结:

  1)帧头与帧尾都是固定的F9 (好像也有用7E)

  2)SABM帧addr位 03 ,07 ,0B ,13 分别代表 dlc0,dlc1,dlc2,dlc3;

  3)SABM控制帧: 3F为发送帧,73为响应帧;

  4)SABM地址帧: 05,09....分别为dlc0,dlc1....

  5)len长度为:len =(X-0x01)/2,X为Length Indicator,len为实际长度;

   6)MSC帧:Information中0F代表FC位被置1,无法就收数据,0D代表FC位被置0,恢复接受数据;

                          Information中数据也可以是63 01代表除了控制通道DLC0外所有通道;

 
 
 
 

信息字段
      信息字段内包含了用户的数据信息和来自上层的各种控制信息。在UI/UIH帧中,具有该字段,它可以是任意长度的比特序列。


帧校验序列字段

  • 帧校验序列用于对帧进行循环冗余校验(CRC校验)。
  • 对于UI帧,其校验范围从地址字段的第1比特到信息字段的最后一比特的序列;对于UIH帧,只包括地址字段和控制字段和basic模式的长度字段。也就是说UIH能保证数据被正确的传到相应的链路上,但是没有对传输的内容进行保护。


下面列出几个帧格式,供读者参考:

?       DO     7e  03  3f   fc  7e     在DLC0 发SABM帧请求建立链路
?       DI       7e  03  73  85  7e    在DLC0回应UA帧确认建链请求
?       DO     7e  07  3f  89  7e     在DLC1发SABM帧请求建立链路
?       DI       7e  07  73  f0  7e     在DLC1回应UA帧确认建链请求
?       DO     7e  07  53  c8  7e     在在DLC1发DISC帧请求断开链路
?       DI       7e  07  73  f0  7e     在DLC1回应UA帧确认断链请求
?       DO     7e  03  ff   c3  01  6c  7e  在DLC0发CLD消息(UIH帧)
?       DI       7e  03  ff   c3  01  6c  7e  在DLC0回应CLD消息(UIH帧)

 
=====================================================================================================
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值