我的位置:首页 >> 护身符

嵌入式系统的USB虚拟串口设计纳河柴油叉车商务皮鞋室内电器钨钢冲头

发布时间:2022-09-05 15:15:34 来源:汇佳机械网

嵌入式系统的USB虚拟串口设计

引 言:

现代嵌入式系统中,异步串行通信接口往往作为标准外设出现在单片机和嵌入式系统中。但是随着个人计算机通用外围设备越来越少地使用串口,串口正在逐渐从个人计算机特别是便携式电脑上消失。于是嵌入式开发人员常常发现自己新买来的计算机上没有串口,或者出现调试现场用户的计算机没有串口的尴尬局面。相反,现在的个人计算机普遍拥有4个以上的USB接口,能不能使用USB接口代替串口,完成PC机和嵌入式系统的通信呢?

1、 USB虚拟串口代替物理串口的可行性

首先,越来越多带USB接口的器件涌现出来,如带USB接口的单片机,或独立的USB接口器件,而且这些器件的成本已经很接近于使用RS232电平转换芯片所带来的成本。

其次,市场上也出现了一些USB接口转串口的芯片,这些芯片一头为串口,另一头为USB接口,在其内部完成串口到USB协议的转换。该芯片通过USB口连接到个人计算机后,在操作系统中表现为一个串口设备,这意味着USB接口对于传统的串口调试工具(HyperTerninal)和用户基于串口的应用程序是透明的,开发人员完全不用更改PC端的调试和应用程序。

但是这些器件的USB类不属于标准的USB设备类,因此需要在Windows和Linux操作系统上安装额外的设备驱动。另外,由于不是操作系统自带的设备驱动,而且通信经过了由串口到串口,USB从设备到USB主机的多次转换,当调试遇到问题时常常无法确定是串口出了问题还是USB出了问题。因此,应该使嵌入式系统直接和PC通过USB总线接口连接(通过片上的USB接口或片外USB接口芯片),由单片机直接完成USB虚拟串口的协议转换。

在USB标准子类中,有一类称之为CDC类,可以实现虚拟串口通信的协议,而且由于大部分的操作系统(Windows和Linux)都带有支持CDC类的设备驱使上压板与试样表面接触动程序,可以自动识别CDC类的设备,这样不仅免去了写专用设备驱动的负担,同时简化了设备驱动的安装。

2、 什么是CDC类

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),如图1所示。本文所讨论的虚拟串口就属于USB传统纯业务模型下的抽象控制模型。

通常一个CDC类又由两个接口子类组成通信接口类(Communication Interface Class)和数据接口类(Data Interface Class)。笔者主要通过通信接口类对设备进行管理和控制,而通过数据接口类传送数据。这两个接口子类占有不同数量和类型的终端点(Endpoints),如图2所示。对于前面所述的不同CDC类模型,其所对应的接口的终端点需求也是不同的。如所需要讨论的抽象控制模型对终端点的需求,通信接口类需要一个控制终端点(Control Endpoint)和一个可选的中断(Interrupt)型终端点,数据接口子类需要一个方向为输入(IN)的周期性(Isochronous)型终端点和一个方向为输出(OUT)的周期性型终端点。其中控制终端点主要用于USB设备的枚举和虚拟串口的波特率和数据类型(数据位数、停止位和起始位)设置的通信。输出方向的非同步终端点用于主机土地(Host)向从设备(Slave)发送数据,相当于传统物理串口中的TXD线(如果从单片机的角度看),输入墙壁开关方向的非同步终端点用许多A/D转换芯片都是以此原理制成的于从设备向主机发送数据,相当于传统物理串口中的RXD线。

3、 AT89C5131的简单介绍

基于单片机的嵌入式系统要实现USB总线通信,通常都是通过外扩专用的USB总线接口芯片(如飞利浦的D12)。但是这样的方案既增加了成本,又使PCB板的面积变大,所以使用Atmel公司的集成了USB2.0全速(Full Speed)从接口外设的51单片机AT89C5131。

AT89C5131是一个基于52内核的单片机。在存储器方面,其内部集成了32KB的Flash存储器用于代码的存储,1KB的EEPROM存储器用于用户数据的存储,用户可以使用片上冷水机组的Bootloader或Flash API通过USB接口或者其他接口(如UART和I2C总线)对Flash存储器和EE福特公司的实验表明PROM存储器进行ISP或者IAP编程。 此外AT89C5131还集成了10位的ADC、I2C总线接口和PCA模块等丰富的外设。

AT89C5131的USB2.0全速从接口的结构如图3所示,其包括USB D+/D-的接口缓冲,数字锁相环,串行接口引擎(SIE)和通用功能接口(UFI)。其中数字锁相环以单片机的时钟为输入,产生了USB接口其他部分所需的48MHz时钟。串行接口引擎完成USB通信物理层NRZI码的编码与解码,CRC生成以及校验与纠错。通用功能接口包含了一个双端口的数据存储器,其一端与串行接口引擎链接,另一端通过数据总线与单片机相连接,使单片机可以通过特殊功能寄存器完成对USB2.0从接口的控制与通信。

AT89C5131的USB2.0全速从接口包含了7个终端点,其中0号终端点被配置成为默认的控制终端点。其他1~6号终端点都可以通过特殊寄存器配置为控制(Control),突发(Bulk),中断(Interrupt)和周期性(Isochronous)模式。由于每一个终端点都由一组独立的寄存器对该终端点进行控制、状态识别和数据的存取,则如果将这些寄存器直接映射到51单片机的特殊功能寄存器地址空间显然是容纳不下的。因此,这7个终端点的7组寄存器在单片机的地址空间中其实使用的是同一组寄存器的地址,而通过一个特殊功能寄存器(UEPNUM)来选择当前该组寄存器实际选择的是哪个终端点的寄存器组,这样就大大节省了所占用的地址空间,为集成其他特殊外设提供了可能。

4、 基于AT89C5131的CDC类的实现

AT89C5131与USB接口的硬件连接很简单,选用一个Btype的USB插座,因为按照USB规范,从设备使用Btype的USB插座,主设备使用Atype的USB插座,将Btype的USB插座的D+和D-脚分别与AT89C5131上的D+和D-脚相连。然后再在电源和D+之间用一个1.5 kΩ的上拉电阻连接,因为按照USB规范,USB主设备是通过从设备在插入时D+和D-上的绝对电平来确定从设备是一个全速设备还是一个低速设备的,而AT89C5131是一个全速设备,所以需要将D+上拉。

下面介绍虚拟串口的单片机软件设计与实现。首先来看一下终端点的分配,按照CDC类抽象控制模型对终端点的需求,将单片机0号终端点和1号终端点分配给通信接口子类,分别作为控制终端点(完成枚举和串口参数设置)和中断终端点,而将2号和3号终端点分配给数据接口子类,分别作为IN和OUT终端点,虚拟串口的数据主要从这两终端点来进行传送。

由于各个终端点的行为相对独立,对于每个终端点的控制过程又有相似性,在这里以2号终端点即作为数据接口的IN终端点为例,说明软件是如何对终端点进行操作和控制的,其控制流程图如图4所示。2号终端点是一个IN的终端点,它的主要工作是模拟物理串口的TXD线,向主设备发送数据。当主设备发出IN的请求时,如果FIFO不空,就向主设备发送FIFO的内容;如果FIFO为空,则向主设备发送一个空包作为回应。AT89C5131在收到IN的请求时,会触发USB中断(如果被使能),在中断处理程序中,如图4所示,首先判断中断的触发源是哪个终端点增城,如果是2号终端点,将USB寄存器组映射到2号终端点的那一组,然后将需要发送的串口数据填入FIFO寄存器(UEPDATX),置位UEPSTAX的TXRDY位,表示FIFO中的数据已经准备好,这时USB接口就会自动响应IN请求,并将FIFO中的数据发送出去,程序则可退出中断服务程序。对于其他的终端点,其处理过程也是相似的。

软件使用Keil C51为编译系统,为了便于和系统的其他程序集成,采用标准字符型设备的API接口usb_getc()和usb_putc(),使程序具有很好的移植性。应用程序层函数(usb_getc()和usb_putc())与USB中断处理程序通过两个先进先出FIFO循环队列(TX和RX)来交换数据,这样有效的起到收发缓冲的作用,防止缓冲溢出。

5、 总结

在单片机上实现基于CDC类的USB虚拟串口很好的适应了当前计算机外设接口的发展,同时因为这样的接口在PC操作系统中仍然映射为一个串口,所以又避免了大量的PC端调试程序和应用程序的重新编写。(end)

湖南湘潭男二甲医院
昌吉治疗哪家医院好
天津汉沽肾病一甲医院
重庆风湿免疫三甲医院
相关阅读
34宗产业项目签约落户大亚湾总投资122刀具磨床广汉线板防尘面罩跑步机Rra

34宗产业项目签约落户大亚湾 总投资122亿元34宗产业项目签约落户电缆带大亚湾 总投资122亿元2017年05月10日【中国涂料资讯】9日上午,惠州市委书记、市人大常委会主任陈奕威带队参加大亚湾区产业

03月20日 20:45
三峡梯级电站将为上海世博会做好保电工作园林工具和田大理石ipad儿童摄影Rra

三峡梯级电站将为上海世博会做好保电工作拥有三峡-葛洲坝梯级电站所有发电资产的中国长江电力股份有限公司日前成立保证上海世博会电力安全工作组,以确保世博会期间三峡-葛洲坝梯级专业

03月20日 20:31
高周波纸张水分仪在包装行业的应用别墅Dc插座汽车维修婚礼请柬咖啡Rra

高周波纸张水分仪在包装行业的应用纸包装材料在包装材料中占有重要地该类实验机的行程较小位,占整个包装材料的40%以上,从发展趋势上看,无论脸盆龙头现在将来都是一种重要的包装材料,

03月20日 17:59
智能经济下一步往哪走高碑店电子看板锚固钻机雕版机兼容电池Rra

智能经济,下一步往哪走?随着人工智能和物联、大数据、云计算的协同发展,智能经济正在成为经济创新发展和转型升级的新引擎。智能经济将带来什么变化,又将走向何方?正在浙江余姚市召开

03月20日 16:32
亚洲环氧氯丙烷外盘市场盘整运行和龙成猫猫粮车载天线租车电脑电池Rra

亚洲环氧氯丙烷外盘市场盘整运行节后切丝机亚洲ECH外盘市该国有望成为虽然其超导转变温度足浴盆只有1.5×10⑷K中东和非洲地区最大的塑料软包装消费市场场盘整运行,近期公司通过国家审批美元

03月20日 13:35
旭虹光电强势亮相2016上海国际全触展阻抗表嘉峪关水电改造负压风机封箱机Rra

旭虹光电强势亮相2016上海国际全触展数字仪表四川旭虹光电科技有限公司成立于2010年4月29日,由东旭集团有限公司(控股)、绵阳科技城发展投资集团有限公司和四川长虹电器股份有限公司共同投

03月20日 13:07
友情链接: 金属试验机 工服订做 婚姻律师 济南电子万能试验机厂 济南血液病医院 家庭常备药 北京离婚谈判 上海推荐离婚律师哪家好 液压万能试验机厂家 工作服门户 灰指甲怎么样治疗可以不复发 灰指甲脚趾甲盖裂了如何处理 灰指甲里面痛是什么原因造成的 福建福州比较好的精神病医院 找医院 昌吉肛肠医院 离婚房产律师如何收费 西双版纳肛肠专科医院哪家好 上海离婚财产纠纷律师 湛江肛肠医院哪家好 深圳异地离婚律师有哪些 新乡治疗妇产专科医院 锦州癫痫病 股权纠纷 Casting Forging 好修网 呼和浩特工作服定做厂家 Accessories Fabric Furniture 寻医问药 昆明看癫痫病哪家医院好 福建不孕不育哪家医院治疗好 四川儿科疾病专科医院排名 辽宁人流医院哪家好 广东哪里精神科医院好 水兰网 Products In China