CDC类虚拟串口固件设计 毕业论文.doc
《CDC类虚拟串口固件设计 毕业论文.doc》由会员分享,可在线阅读,更多相关《CDC类虚拟串口固件设计 毕业论文.doc(41页珍藏版)》请在三一文库上搜索。
1、CDC类虚拟串口固件设计学 院计算机学院专 业计算机科学与技术班 级7401101学 号200704011027姓 名 指导教师 负责教师沈阳航空航天大学2011年6月 摘 要在接口技术高速发展的今天,串口即将成为历史。USB等接口将逐步取代串口成为新一代最常用的接口。然而,由于之前串口较为普及,针对串口的应用程序也非常多,而且有些功能还非常强大,如何能够最大限度地减少接口更新对应用程序的影响,成为了当今接口技术的一个新课题。本文就基于USB的CDC类,在带有USB口的C8051F340单片机上,以开发USB虚拟串口固件为目标,通过标准请求、设备管理、数据传输等模块的设计与论证,并结合固件开发
2、的实际,完成了USB到虚拟串口的转换的设计。本文的核心是建立ACM模型,即抽象控制模型。根据这个模型,对CDC类下的通信接口类和数据接口类进行设计开发,并着重对通信接口和数据接口的各个端点进行设计论证。在此基础上,实现对USB设备的枚举,控制以及数据传输等功能,从而为实现USB到虚拟串口的转换提供了保证。关键词:USB;虚拟串口;CDC;抽象控制模型The Design of a Virtual Serial Port Firmware Based On Communication Device ClassAbstractNowadays, as the interface technolog
3、y develops in a high speed, the serial port is going to be history. Interface such as USB will replace serial port gradually and be the most common one in a new generation. However, since the widely spreading of serial port in past with great deal of development programs of serial port, and some fun
4、ctions are powerful, it has been a new problem that how to reduce the influence caused by interface update to application program to the maxima limit. The paper focuses on how to convert Universal Serial Bus (USB) to a serial port in the C8051F340 microcontroller with USB port. In order to realize t
5、he function of virtual serial port, we combine with the actual firmware, design and demonstrate the standard request, device management and data transmission moduleThe core of this paper is to establish an ACM , that is the Abstract Control Model. Based on this model, the data communication interfac
6、e class and interface class which under the CDC are designed and developed. Focusing on the various endpoints which are included in the communication interface and data interface it has a demonstration. On this basis, it have realized the enumeration and control on the USB device, also, data transfe
7、r capabilities. Thus, it guarantees the alteration from USB to virtual serial port.Keywords: USB; virtual serial port; Abstract Control Model目 录1 引言11.1 课题背景11.2 课题要求11.3 课题意义22 相关技术及开发工具32.1 CDC类简述32.2 C8051F340单片机简介32.3 开发环境简介43 总体设计63.1 应用软件的模块设计73.2 应用软件的功能设计74 详细设计104.1 标准请求104.1.1 设备描述符104.1.2
8、 配置描述符114.1.3 接口描述符124.1.4 端点描述符134.1.5 字符串描述符144.1.6 描述符设计要求144.1.7 标准命令154.2 类请求的实现174.2.1 SEND_ENCAPSULATED_COMMAND请求174.2.2 GET_ENCAPSULATED_RESPONSE请求174.2.3 GET_LINE_CODING 请求174.2.4 SET_LINE_CODING 请求184.2.5 SET_CONTROL_LINE_STATE请求194.3 数据传输的实现194.3.1 令牌包194.3.2 数据包204.3.3 握手包204.3.4 数据传输204
9、.4 INF文件的创建214.4.2 INF文件的规范234.4.3 INF文件的内容235 联机调试265.1 调试设置265.2 下载调试266 固件测试及结论306.1 串口调试工具设置316.2 数据传输测试316.3 结论31参考文献33致 谢35 IV沈阳航空航天大学毕业设计(论文)1 引言现代嵌入式系统中,异步串行通信接口往往作为标准外设出现在单片机和嵌入式系统中。但是随着个人计算机通用外围设备越来越少地使用串口,串口正在逐渐从个人计算机特别是便携式电脑上消失。而现在的个人计算机普遍拥有4个以上的USB接口,使用USB接口代替串口,完成PC机和嵌入式系统的通信也就成为了当今接口技
10、术发展的一个重要课题。1.1 课题背景当下越来越多带USB接口的器件涌现出来,如带USB接口的单片机,或独立的USB接口器件,而且这些器件的成本已经很接近于使用RS-232电平转换芯片所带来的成本。市场上也出现了一些USB接口转串口的芯片,这些芯片一头为串口,另一头为USB接口,在其内部完成串口到USB协议的转换。该芯片通过USB口连接到个人计算机后,在操作系统中表现为一个串口设备,这意味着USB接口对于传统的串口调试工具(Hyper Terninal)和用户基于串口的应用程序是透明的,开发人员完全不用更改PC端的调试和应用程序。但是这些器件的USB类不属于标准的USB设备类,因此需要在Win
11、dows和Linux操作系统上安装额外的设备驱动。另外,由于不是操作系统自带的设备驱动,而且通信经过了由串口到串口,从USB设备到USB主机的多次转换,当调试遇到问题时常常无法确定是串口出了问题还是USB出了问题。因此,应该使嵌入式系统直接和PC通过USB总线接口连接(通过片上的USB接口或片外USB接口芯片),由单片机直接完成USB虚拟串口的协议转换。而现在的个人计算机普遍拥有多个USB接口,如能使用USB接口代替串口,则可为PC机与嵌入式系统之间的通信提供方便。1.2 课题要求本课题要求在熟悉C8051F340单片机工作原理和开发环境以及USB通信协议和CDC类工作原理的基础上,在带有US
12、B接口的C8051F340单片机上实现基于CDC类的USB虚拟串口功能。此外,要求对这个虚拟串口固件进行数据传输测试,验证其实用性、准确性。1.3 课题意义在USB标准子类中,有一类称之为CDC类,可以实现虚拟串口通信的协议,而且由于大部分的操作系统(Windows和Linux)都带有支持CDC类的设备驱动程序,可以自动识别CDC类的设备,免去了写专用设备驱动程序的负担,为USB代替串口的实现提供了可能。在单片机上实现基于CDC类的USB虚拟串口很好地适应了当前计算机外设接口的发展,同时因为这样的接口在PC操作系统中仍然映射为一个串口,所以又避免了大量的PC端调试程序和应用程序的重新编写。2
13、相关技术及开发工具为了更好地进行虚拟固件的设计开发,在设计应用软件设计之前,需要对CDC类的原理、C8051F340单片机的相关理论以及软件开发工具作简要的叙述。2.1 CDC类简述USB为了实现不同的应用,将具有特定属性与服务的一类设备划分为一个Class。如果提供相似格式数据流或者相似的主从机交换方式,两个设备则被统一在一个Class中。如USB标准就有Audio Class、Communication Device Class、HID Class、Video Class等用于在USB接口上实现不同设备接口。在USB标准协议中,有一类专用于通讯设备(主要包括电信通信设备和中速网络通信设备)
14、的CDC协议,可以通过该协议实现将USB接口虚拟为其他通讯接口。USB的CDC类是USB通信设备类(Communication Device Class)的简称。根据CDC类所针对通信设备的不同,CDC类又被分成以下不同的模型:USB传统纯电话业务(POTS)模型,USB ISDN模型和USB网络模型。其中,USB传统纯电话业务模型,又可分为直接线控制模型(Direct Line Control Model)、抽象控制模型(Abstract Control Model)和USB电话模型(USB Telephone Model)。本文所讨论的虚拟串口就属于USB传统纯电话业务模型下的抽象控制模型
15、(Abstract Control Model)。CDC协议由三个子类组成:通信设备类(Communication Device Class)、通信接口类(Communication Interface Class)和数据接口类(Data Interface Class)。通信设备类是设备层次的定义,通常用于标示一个通信设备,该设备可以提供相应的接口。通信接口类则定义了相应的通信服务,包括如何对设备进行管理和控制。数据接口类则定义了如何传送数据。2.2 C8051F340单片机简介C8051F340单片机是美国Silicon Laboratories公司推出的完全集成的混合信号片上系统型MCU
16、。它具有以下特性和资源:高速、流水线结构的8051兼容的微控制器内核(可达48MIPS);全速、非侵入式的在系统调试接口(片内);通用串行总线(USB)功能控制器,8个灵活的端点管道,集成收发器和1K FIFO RAM;10位200ksps的单端/差分ADC,带模拟多路器;片内电压基准和温度传感器;精确校准的12MHz内部振荡器和4倍时钟乘法器;多达64KB的片内FLASH存储器;多达4352字节片内RAM(256+4KB);多达40个端口I/O(容许5V电压输入)。具有片内上电复位、VDD监视器、电压调整器、看门狗定时器和时钟振荡器的C8051F340器件是真正能独立工作的片上系统。其FLA
17、SH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外设以节省功耗。图2.1 C8051F340单片机功能框图2.3 开发环境简介Keil C51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C语言来开发,体会更加深刻。Keil C51 提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVisio
18、n)将这些部份组合在一起。软件除提供丰富的库函数和功能强大的集成开发调试工具外,又是全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。3 总体设计按照USB的CDC类协议,实现虚拟串口需要建立抽象控制模型(Abstract Control Model),即ACM模型。而这个模型的实现,又需要建立在两个子类接口上,它们是通信接口类(Communication Interface Class)和数据接口类(Data Interface Class
19、)。一个ACM功能设备,也应该具有CDC类应该具备的三种基本的职责:(1)设备管理(Device Management);(2)通话管理(Call Management);(3)数据传输(Data Transmission)。CDC类设备通常用通信接口去完成设备管理,由数据接口去完成数据传输。而通话管理可以由通信接口去完成,也可以由数据接口去完成,依具体的情况而定。不过ACM功能大多是通过数据接口来完成通话管理的。通过这个模型,我们架构出这么一个设备:这个USB设备由通信接口类和数据接口类组成。通信接口类需要一个控制端点(Control Endpoint)和一个可选的中断(Interrupt)
20、端点,数据接口类需要一个方向为输入(IN)的批处理端点和一个方向为输出(OUT)的批处理端点。其中控制端点主要用于USB设备的枚举和虚拟串口的波特率和数据类型(数据位数、停止位和起始位)设置的通信。输出(OUT)方向的批处理端点用于主机(Host)向从设备(Device)发送数据,相当于传统物理串口中的TXD线;输入(IN)方向的批处理端点用于从设备向主机发送数据,相当于传统物理串口中的RXD线。而为了简化开发的难度,而又可以不影响功能,故没有实现通话管理。在PC端,由于Windows2000以上系统已经提供了usbser. sys驱动去支持CDC类设备,因此我们只要将设备按照规定的类协议去设
21、计,驱动就不需要我们去开发了。对于应用程序,完全可以移植过来直接使用,我们需要设置的仅仅是将这个应用程序对应的COM口改为所要实现的USB设备在PC端映射的串口即可。不过,由于Windows操作系统的要求,我们还须提供一个INF文件给PC操作系统,这样USB的这个虚拟串口才能安装在PC机上。3.1 应用软件的模块设计任何一个设备功能的实现都必须完成控制传输。这种传输在USB中是非常重要的,它要保证数据的正确性,在设备的枚举过程中都是使用控制传输。控制传输包括三个过程:建立(SETUP)过程、可选的数据过程和状态过程。建立过程都是由USB主机发起的。它开始于一个SETUP令牌包,后面紧跟一个DA
22、TA0数据包,接着就是数据过程。如果是控制读传输,那么数据过程就是输入数据;如果是控制写传输,那么数据过程就是输出过程。数据过程之后是状态过程。状态过程是用来确认所有的数据是否都已经正常传输完成。状态过程刚好与数据过程的数据传输方向相反:如果是控制读传输,则状态过程是一个输出数据包;如果是控制写传输,则状态过程是一个输入数据包。CDC类设备的实现,除了对设备进行枚举之外,还需要完成类请求,进而完全地实现虚拟串口的功能。因此,软件的开发也涉及到三个模块,一个模块用来完成标准请求,一个模块用来完成设备管理,一个模块用来完成串口数据传输。任何一个USB控制器,都会提供一些中断寄存器,通过判断中断寄存
23、器中相应的中断位,确认相应的中断源,进而执行相应的操作。这里,我们没有采用中断的方式来判断USB控制器的中断寄存器,而是通过轮询的方式来实现的,通过不断地轮询寄存器获取中断的相关信息。程序流程如图3.1所示。3.2 应用软件的功能设计按照CDC类抽象控制模型对端点的需求,将单片机0号端点和1号端点分配给通信接口子类,分别作为控制端点(完成枚举和串口参数设置)和中断端点,而将2号和3号端点分配给数据接口子类,分别作为IN和OUT端点,虚拟串口的数据主要从这两端点来进行传送。由于各个端点的行为相对独立,对于每个端点的控制过程又有相似性,在这里以2号端点即作为数据接口的IN端点为例,说明软件是如何对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CDC类虚拟串口固件设计 毕业论文 CDC 虚拟 串口 设计
链接地址:https://www.31doc.com/p-4489767.html