UART及USB双模通信接口的研究及实现

UART及USB双模通信接口的研究及实现
程丽玲
【摘 要】研究了通用异步接收发送器(UART)接口和通用串行总线(USB)接口的通信格式和协议特点,提出了一种支持UART和USB双模通信的驱动软件构架以及硬软件设计方法.该方法基于TMS320VC5402DSP的软件中断功能,并融入数据链路层和应用接口层的关健技术设计,解决了双通道通信中存在的内存浪费、不能同时进行实时分析通信等方面的问题,有效节约了电器测量设备的内存空间,提高了数据使用率.
【期刊名称】《自动化仪表》
电脑绣花制版【年(卷),期】2013(034)012
胶圈电熔双密封聚乙烯复合管【总页数】3页(P70-72)
【关键词】USB;UART;双模通信;通信协议;驱动软件
【作 者】程丽玲
【作者单位】浙江省检验检疫科学技术研究院,浙江杭州310020
【正文语种】中 文
【中图分类】TP334+.7
0 引言
通用异步接收发送器(universal asynchronous receiver/transmitter,UART)和通用串行总线(universal serial bus,USB)是用户经常使用的两种通信接口。由于USB灵活的协议设置、接口扩展功能以及即插即用等优点,目前在消费电子产品领域USB接口已经逐步取代了UART接口。UART接口具有协议简单、数据流稳定可靠等优点,在工业计算机、工业专用电子设备和测试设备领域仍占有一席之地。因此,在许多场合很多电子设备会同时设计成兼具UART和USB接口,并分别为这两种接口配备各自独立的应用协议软件和各自独立的内存。这样的设计存在内存空间浪费,不能同时进行数据分析、传输和通信等问题,不利于数据的高效使用,在资源急缺的今天绝对不是一种好的选择。
本文通过研究通用异步接收发送器(UART)接口和通用串行总线(USB)接口的通信格式和协
议特点,提出一种支持UART和USB双模通信的驱动软件构架以及硬软件设计方法,以解决双通道共用中统一数据链路层和应用接口层等关键技术设计难题。
1 系统构架
UART和USB双模通信接口主要由硬件接口层、协议栈层和应用接口层组成,如图1所示。
图1 双模接口架构Fig.1 Structure of the two mode interface
硬件接口层的主要功能是提供双通道数据通信所需的物理接口和硬件电路,由USB和UART物理接口、USB接口芯片和接口电平转换芯片组成。其中,USB物理接口负责对外连接主USB设备,UART物理接口提供对外部其他UART设备的连接通道;USB接口芯片负责USB协议的实现和相关的通信工作;接口电平转换芯片负责RS-232电平和TTL电平的转换。
协议栈层的主要功能是实现USB接口芯片和UART数据通路的驱动程序和协议。协议栈在实现过程中,并不是简单地将USB和UART协议分别实现,而是在数据链路上将UART和USB两个数据通道有效融合,达到提高数据传输效率和节省内存的目的。
接口软件层的主要功能是提供用户应用程序需要的接口函数,使用户应用程序可以方便地控制和调用协议栈层提供的各项功能,进而控制USB和UART两个数据通路,并进行数据交互。
毛刷制作2 关健技术设计
USB和UART两种数据通道采用的协议和传输数据的速率不同,给数据链路层和应用接口层的统一带来了很大的困难。
首先,USB协议[1]与UART协议在数据链路层和应用接口层体现出的具体功能函数存在较大差别。为了解决这个矛盾,我们可以先梳理USB协议和UART协议提供的各项数据传输功能和辅助功能,将相同功能和相似功能(例如数据发送和数据接收功能为两个端口均具备的功能)加以整合保留;而对于两个端口各自的特殊功能(例如USB端口的挂起和复位功能),则封装为具有自动处理特性的功能子函数,并利用TMS320VC5402DSP所特有的软件中断功能来统一处理。通过这一独特设计,用户无需关心这些特殊功能的实现和使用,当数据通信过程中发生该类动作时,数据链路层自动触发内部的软件中断,并调用对应的软件中断函数,自动完成相应处置并实现对应功能。
其次,USB和UART的端口数据传输速率不同,对各种中断事件响应的速度要求也存在很大差异。为了解决这个矛盾,在设计数据链路层时可增加一个通道状态寄存器。该寄存器会跟随数据链路传输数据过程动态更新。这不仅可以告知用户数据通道处于何种状态,而且更重要的是数据链路层和应用接口层的各功能函数可以在需要的时候查询该寄存器的状态,从而调用不同的时延函数,进而使USB和UART两个数据通道的传输速率和中断响应时间达到平衡统一,而无需用户的干预。
3 硬件设计
USB和UART双模通信接口硬件部分主要由型号为 PDIUSBD12[2]的 USB 接口专用芯片、MAX3221 电平转换芯片、TMS320VC5402[3]主控芯片等器件构成。
USB接口与UART接口的物理层存在很大差异,这两类接口的电平定义与接口形式不同。因此,本设计在物理电路层采用各自独立的信道来实现,而在软件层面实现协议的融合和交互处理。
本设计采用PDIUSBD12芯片来实现USB通路底层通信的数据链路级交互。该芯片提供一
个并行接口同主处理器互联,最高数据吞吐速率可以达到2 Mbit/s。此外,该芯片内部高度集成了USB通信所需的各种硬件资源,可以减小系统物料清单(bill of material,BOM)元件的数量,使设计简化。
系统主控芯片采用TMS320VC5402。该芯片具有144 MHz的工作主频,峰值运算速度可达288 MIPS,可以胜任高速数据吞吐的处理任务。TMS320VC5402具有丰富的外设接口,包括一个16位并行外部总线接口,可以方便地挂接 USB接口专用芯片。同时,TMS320VC5402具有丰富的I/O接口,配合内部的程序资源,可以实现UART协议和控制接口。
UART接口通常采用两种电平格式,即TTL电平和RS-232电平。因此,本设计采用MAX3221芯片负责将主处理器提供的UART信号由TTL电平转换为RS-232电平。
硬件原理图如图2所示。
图2 双模接口硬件原理图Fig.2 Principle of the two mode interface hardware
4 软件设计
系统的软件主要包括USB和UART驱动程序、数据链路处理程序和应用接口程序等。在此将重点介绍系统软件的整体框架和实现方法,最后以实际应用为例介绍接口函数的使用[4]。
4.1 软件整体架构
本系统的软件部分主要由驱动程序、数据链路处理程序和接口程序组成,其框图如图3所示。
图3 软件系统组成图Fig.3 Composition of software system
4.2 关键子程序功能及伪代码实现
端口初始化子函数、发送数据包子函数是本设计软件体系中的两个关键函数[6-8]。
端口初始化子函数用于对端口进行初始化操作,只有对端口进行正确的初始化操作,才能使端口正常进入工作状态。端口初始化子函数的功能主要包括清空数据接收缓冲区和发送缓冲区、复位USB和UART中断标志、正确设置数据链路通道状态、使能USB和UART端口等。胶囊模具
端口初始化子函数伪代码实现如下。
发送数据包子函数用于向上位机发送一个完整的数据包。该子函数要按照指定通道向上位机发送指定数量的字节数据。在发送数据过程中,要正确设置数据链路的通道状态并正确处理中断状态。
发送数据包子函数伪代码实现如下。
5 结束语
传统USB方案为USB接口和UART接口分别配备独立的数据链路层和应用接口层功能,分别独立满足USB和UART两个数据接口的需求。本设计方案则采用了统一的数据链路层和应用接口层设计,将UART通道和USB通道的数据链路级程序加以整合,有效解决了双模通信中存在的内存浪费、不能同时进行实时分析通信等方面的难题,为电器测量设备中双模通信接口的使用提供了较好的设计思路[8]。
参考文献船舶导航
亨润成型机炮筒公司
[1]库依楠,杨玉森.基于DSP的USB2.0设备接口协议的实现[J].吉林大学学报:自然科学版,2005,35(2):170-173.

本文发布于:2024-09-22 04:28:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/116303.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:接口   功能   数据   协议
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议