CMUX串口多路复用协议

CMUX

名词解释
  • CMUX:多串口协议
  • DLC:数据链路连接
  • DM:断开模式
  • FCS:帧校验序列
  • UIH:未编号的带校验头的信息
  • UI:未编号的信息
  • MSC:modem状态命令
  • HDLC:高级数据链路控制
什么是CMUX

在这里插入图片描述

  • CMUX 是一种类似于传输层的协议,用户使用时无法感知该层;数据传输依赖一个真实串口传输,cmux 层负责解析数据用以分发到不同的 virtual uart ;从而实现一个真实串口虚拟出多个 UART 的目的
  • CMUX 在应用场景中多用于 UART, 如有必要也可以支持 SPI 方式

CMUX是指串口多路复用。串口的多路复用器模式,就是使一个串行接口能够将数据传输到四个不同的客户应用程序。

CMUX协议的功能就是利用一个底层物理串口,向上层系统提供多个逻辑串口,每个逻辑串口对应着一个数据链路连接(DLC)。//解决多个数据流同时发送的问题

这样就可以同时在一条串行接口上存在多个会话,比如语音、FAX、数据、SMS、GPRS、USSD等。当正在进行传真/数据/ GPRS呼叫时,这是特别有利的,例如控制模块或使用SMS服务可以通过附加信道完成,而不会干扰数据流; 不需要访问第二个UART。

多路复用协议提供在单个物理通信通道之上虚拟出多个并行的逻辑通信通道的能力,一般应用于TE(Terminal Equipment)与MS(Mobile Station)之间,TE相当于智能手机的AP端,MS相当于智能手机的MODEM端。

CMUX帧结构

多路复用有三种操作模式:基本模式、带错误恢复功能的高级模式、不带错误恢复功能的高级模式(具体可以参见GSM 07.10协议)。不同的GPRS模块也支持不同的模式。

标记地址控制长度信息校验标记
1字节1字节1字节1or2字节整数个字节1字节1字节
基本0xF9DLCI值帧类型1/2BI帧、UI帧、UIH帧CRC0xF9
高级0x7eDLCI值帧类型-I帧、UI帧、UIH帧CRC0x7e

帧类型分控制帧和信息帧

CMUX双方通过控制帧协商用以构建、拆除虚拟链路。

控制帧又为以下几种:

  • SABM:建立DLC
  • UA:响应SABM帧或DISC帧
  • DM:链路未成功建立时,对收到的DISC命令的响应
  • DISC:通知对端拆除链接,在DLC0发送DISC帧,等于退出MUX功能

**信息帧: **UIH\UI\I:这三种是信息帧,也就是携带要传输数据的帧。

标记、地址、控制、长度等各个字节里的每一位都代表着不同的信息(具体参照阅读华为串口多路复用手册,里面对CMUX帧结构中每一Byte的每一Bit,都作了详细介绍)。

  1. 帧头与帧尾都是固定的(基本的用F9,高级的用7E)
  2. len长度为:len =(X-0x01)/2,X为Length Indicator,len为实际长度;

CMUX功能特点

支持通过一个真实串口虚拟出多个串口
  • CMUX 协议限制,理论上一个物理串口最多可以虚拟出 63 个虚拟串口
  • 虚拟出的串口使用与真实串口一致,拥有 open,write,read 操作,设置 rx_indicate 接收回调
  • 两方的 MCU 接收时要注意 DLCI ( Data Link Connection Identifier ) 数据链路连接接标识,相同的 DLCI 才可以互相正常通信
支持所有基于 GSM0707 / GSM0710 协议的蜂窝模块
  • 兼容 PPP_DEVICE 软件包,实现 CMUX+PPP 场景,在一个串口上同时传输 AT 命令与 PPP 数据;解决PPP 通信独占一个物理串口的问题
  • CMUX 的 GSM 功能已经在 Luat Air720, SIM7600, SIM800C 模块测试通过
低资源占用

img

使用 GSM 支持时,对 PPP_DEVICE 软件包同时开启的情况,做了一些处理,以节省 ROM 资源占用。

因为解析出的数据,挂载在不同虚拟端口的链表上,理论上占用 RAM 的大小只与链表上数据个数与长度相关,1.57 K 是在 CMUX + PPP 环境下测出。

启动CMUX模式

通常向GPRS模块发送AT+CMUX命令来激活多路复用,该命令格式为:

AT+CMUX=<mode>[,<subset>[,<port_speed>[,<N1>[,<T1>[,<N2> [,<T2>[,<T3>[,<k>]]]]]]]] 

参数说明

mode:指定多路复用的模式,GTM900模块必须设为10 Basic option 
1 Advanced option 
subset:指定帧类型,GTM900模块设为00 UIH frames used only 
1 UI frames used only 
2 I frames used only 
缺省值:0 
port_speed:指定传输速率 

1 9 600 bit/s 
2 19 200 bit/s 
3 38 400 bit/s 
4 57 600 bit/s 
5 115 200 bit/s 
6 230 400 bits/s 
N1:最大帧尺寸 

1- 32768 
缺省值:基本模式为31 (高级模式为64) 
T1:确认时间,单位为10ms. 

1-255 
缺省值:10 (100 ms) 
N2:最大重传次数 

0-100 
缺省值:3
T2:控制通道的响应时间,单位为10ms 

2-255 
缺省值:30 (300 ms) 
注意:T2必须大于 T1. 
T3:唤醒响应时间,单位为s 

1-255 
缺省值:10 
k:串口尺寸,用于带错误恢复的高级模式。 
    
1-7 c
缺省值:2
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CMUX(Channel Multiplexer)多路复用协议是一种网络协议,用于在传输层将多个独立的串行数据流复用到一个单一的通信链路上。 CMUX协议主要用于解决串行通信中的带宽利用问题。在传统串行通信中,每个串口只能连接一个设备或进行单个数据流的传输。而使用CMUX协议后,可以将多个串口的数据流复用到一个物理通信链路上,实现了多个数据流同时传输,从而提高了带宽利用率。 CMUX协议的工作原理如下:首先,通过一个控制信道进行通信链路的建立和管理。然后,将传输数据流分为多个虚拟通道,每个虚拟通道都有一个唯一的标识符。在发送端,将来自不同串口的数据分别封装在不同的虚拟通道中,并添加相应的标识符进行区分。在接收端,根据标识符将接收到的数据流分配到对应的串口中进行处理。 CMUX协议的优点在于它可以有效地利用串行通信的带宽资源,提高通信效率。同时,它能够支持多种串行通信协议,使得不同类型的设备可以共享同一个物理通信链路。此外,CMUX协议还具备良好的扩展性,可以根据实际需求自由添加或删除虚拟通道。 总之,CMUX多路复用协议是一种可以将多个串行数据流复用到一个单一通信链路上的网络协议。它通过提高带宽利用率、支持多种串行通信协议以及具备良好的扩展性等特点,为串行通信领域带来了更高效、更灵活的解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值