USB CDC通信设备子类概述

来源:互联网 发布:php 将文件压缩成zip 编辑:程序博客网 时间:2024/06/13 03:55

1,USB通信设备定义

USB的CDC类是USB通信设备类(Communication Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB子类。根据CDC类所针对通信设备的不同,CDC类又被分成以下不同的模型:USB传统纯电话业务(POTS)模型,USB ISDN模型和USB网络模型。其中,USB传统纯电话业务模型,有可分为直接线控制模型(Direct Line Control Model)、抽象控制模型(Abstract Control Model)和USB电话模型(USB Telephone Model)。 

通用串行总线(USB)通信设备(Communication devices)的定义由三个类组成:

通信设备类(the Communication Device Class, CDC):设备级定义,被主机用于识别(确定)含有几种不同类型接口的通信设备。

通信接口类(the Communication Interface Class):定义了一种通用机制,该机制可被用来使能处于USB总线上的所有类型的通信服务,即USB通信设备的控制功能。

数据接口类(the Data Interface Class):定义了一种通用机制,当一种数据不符合任何类的要求时,该机制使这种数据传输能通过USB块传输或同步传输类型在USB总线上进行,即通过USB块传输或同步传输类型去实现任何类型的数据传输的机制。

CDC协议定义了一种使得USB总线能够支持任何通信设备的框架,如支持电信设备、多媒体网络设备等。

CDC协议并非试图去重定义已经存在的那些通信设备连接和控制标准,而是去定义了一种确定设备与主机应该使用哪种现有协议的机制.。CDC会尽可能的使用已存在的通信数据格式,而只是由USB通过恰当的描述符(descriptor)、接口(interface)和服务请求(request)定义去使这些数据格式能够在USB总线上传输。确切来说,CDC规范描述了了一种包含USB接口、数据结构和服务请求的框架,在该框架下种类繁多的通信设备能够被定义和实现。

2,通信设备组成

通常一个CDC类设备由两个子类接口组成:一个通信接口类接口(Communication Interface Class)和0个或多个数据接口类接口(Data Interface Class)。主机主要通过通信接口类对设备进行管理和控制,而通过数据接口类传送数据。对于前面所述的不同CDC类模型,其所对应的接口的端点需求也是不同的,两个接口子类占有不同数量和类型的端点(Endpoints)。

通信接口类接口(Communication Interface )

设备通过通信接口通过定义好的申请(request)和通知(notification)实施设备控制以及可能的呼叫控制。因此通信接口时通信设备必须配置的接口,通信接口类一般需要一个控制端点(Control Endpoint,EP0)和一个可选的中断(Interrupt)端点。为了达到设备控制的目的,通信设备类在配置描述符中必须通过联合功能描述符(Union Functional Descriptor)将通信接口和数据接口组织起来。

数据接口类接口(Data Interface Class)

当通信设备需要传输的数据的数据格式不符合任何类的要求时就需要用数据接口来实现。一个通信设备可以包含0个或多个数据接口,数据接口上的数据格式则是主机和设备通过通信接口协商决定。数据接口子类需要一个方向为输入(IN)的块传输或同步传输类型端点和一个方向为输出(OUT)的块传输或同步传输类型端点。

3,描述符(descriptor)和请求(request)

关于描述符和请求的具体内容可参考文章USB枚举过程。

设备描述符

通信类设备在设备描述符中通过CDC子类编号(02H)标示该设备为CDC,如果不在设备描述符中表明自己是CDC则要引入USB Common Class Feature Mechanism来标示。

配置描述符

配置描述符和通信接口类的接口描述符和0或多个数据接口类接口描述符组成。通信接口类的接口描述符后紧跟Header functional descriptor、联合功能描述符、功能描述符和0或1个中断端点描述符。每个数据接口描述符后则紧跟着两个端点描述符,类型为块传输或者同步传输,一个IN端点一个OUT端点。

请求

通信设备类定义了一些请求来控制设备状态,这些请求通过控制端点或者控制端点与中断端点的组合使用来控制和获取设备的状态信息。当设备状态发生改变时,设备也可以通过中断端点主动上报设备状态,称之为notification。

7 0
原创粉丝点击