USB同步串口数据传输技术.docx
《USB同步串口数据传输技术.docx》由会员分享,可在线阅读,更多相关《USB同步串口数据传输技术.docx(45页珍藏版)》请在冰点文库上搜索。
USB同步串口数据传输技术
USB的同步串行数据传输技术
摘要
USB接口是一种总线接口标准,以其高速、稳定、易于扩展、兼容性强和即插即
用等特点,赢得了市场认可并得到普及,已经广泛应用于数据传输、图像采集等领域。
为解决实验室所开发的动态测试系统与计算机的数据通信问题,提出并设计了USB2.0
数据传输接口,并在硬件和软件方面给予了优化和改进,很大程度地提高了USB数据
实时传输的速度,而且已经成功应用于无线实时数据传输系统和红外数据传输系统中,
完全实现了系统设计的预期目标和功能。
本论文阐述的内容包括以下几个方面:
(1)分析了开发适用于测试仪器的USB通信接口的必要性,概括了USB总线的特点和使用范围,并且介绍了USB总线技术的相关协议和特性;
(2)基于课题的研究内容和目的,选用USB2.0控制器芯片CY7C68013实现基于USB接口技术的数据传输系统。
根据计算机与外围设备数据传输要求,确定系统总体设计方案,分别对系统的硬件和软件进行设计和实现。
关键词:
无线实时数据传输,红外数据传输,数据传输接口
USBSynchronousSerialDataTransmissionTechnology
Abstract
USBinterfaceisabusinterfacestandard.Ithaswonamarketplaceapproveandbeenpopularizedpromptlywithitsobviousbenefits,suchasveryhightransferrate,easytoexpand,plugandplayandcompatibility,andhasbeenwidelyappliedtodatatransmissionandimageacquisition.Tosolvethedatacommunicationsissuebetweencomputerandynamictestingsystemwhicharedevelopedinthelaboratory,itputsforwardUSB2.0datatransmissioninterfaceandgetsmendinginhardwareandsoftware,andimprovesevidentlythereal-timedatatransmissionspeedofUSB.Ithasbeensuccessfullyappliedtothewirelessreal-timedatatransmissionsystemandinfrareddatatransmissionsystem,andachievesabsolutelythedesiredobjectiveandfunctionalityofsystemdesign.
Thefollowingaspectsofthispaperwereproposed:
First,itanalyzestheneedaboutthedevelopmentofUSBcommunicationinterfaceappliedintestequipment.ThensummarizestheadvantagesandapplicationsofUSBbus.ItintroducesUSBrelatedtechnologiesandcharacteristics.
Second,basedonthesubjectandobject,USB2.0chipCY7C68013AwasappliedtorealizedatatransmissionsystembasedonUSBinterfacetechnology.Accordingtodatatransmissionrequirementsbetweencomputerandperipheralequipment,thesystemdesignplanwasdetermined,andthehardwareandsoftwareofthesystemweredesignedandrealizedrespectively.
Keywords:
WirelessReal-timeDataTransmission,InfraredDataTransmission,DataTransmissionInterface
1绪论
1.1USB概述
通用串行总线(UniversalSerialBus)是用于将适用USB的外围设备连接到主机的外部总线结构。
USB是由COMPAQ、DIGITAL、IBM、INTEL、MICROSOFT、NEC以及NorthernTelecom七家公司共同开发的一种新的外设连接技术。
这一技术将最终解决对串行设备和并行设备如何与计算机相连的争论,大大简化计算机与外设的连接过程。
USB是通过PCI总线和PC的内部系统数据线连接,实现数据的传送。
USB同时又是一种通信协议,他支持主系统(host)和USB的外围设备(device)之间的数据传送。
每一个设备(device)会有一个或者多个的逻辑连接点在里面,每个连接点叫endpoint。
每个endpoint有四种数据传送方式:
控制(Control)方式传送;同步(isochronous)方式传送;中断(interrupt)方式传送;批量(bulk)传送。
但是所有的endpoint0都被用来传送配置和控制信息。
在host和设备的endpoint之间的连接叫作管道“pipe",endpoint0叫做缺省(defaultpipe)。
对于同样性质的一组的endpoint的组合叫做接口(interface),如果一个设备包含不止一个的接口就可以称之为复合设备(compositedevice)。
同样的道理,对于同样的类型的接口的组合可以称之为“配置"(configuration)。
但是每次只能有一个配置是可用的,而一旦该配置激活,里面的接口和endpoint就都同时可以使用。
host从设备发过来的描述符(descriptors)中来判断用的是哪个配置,哪个接口等等,而这些的描述字通常是在endpoint0中传送[1]。
1.2USB技术国内外发展及现状
USB是由Compaq(康柏)、DEC、IBM、Intel、NEC、微软以及NorthernTelecom等公司于1994年11月共同提出的。
旨在统一外设的接口,以便于安装使用,取代以往的串口、并口和PS/2等接口[2][3][4]。
现在生产的PC机几乎都配备了USB接口。
Microsoft的Windows98,Windows2000,WindowsXP,以及MacOS,Linux,NetBSD和FreeBSD等流行操作系统都增加了对USB的支持[17]。
1994年,Intel、Digital、IBM、Microsoft、NEC、Northern、Telecom等几家世界著名的计算机和通讯公司成立了USB论坛。
1995年11月正式制定了USB0.9通用串行总线规范[22]。
1998年,真正符合USB1.1技术规范的技术标准的外设出现了。
1999年初,在Intel的开发者论坛会上,与会者介绍了USB2.0的规范,该规范的支持者除了原有的Intel、Microsoft、NEC等成员外,还有惠普、朗讯和飞利普三个新成员。
USB2.0兼容USB1.1,传输速率达到480Mbps,还支持宽带数字摄像设备及下一代扫描仪、打印机及存储设备[19]。
1999年10月,正式制定了USB2.0通用串行总线规范[23]。
2001年11月,Comdex展览会上,基于USB2.0的外设产品系统如2.0接面扩充卡、外接式硬盘、外接式刻录机等产品开始出现[7]。
自从USB协议推出以来,其市场应用不断增长,尤其是当2000年推出USB2.0协议之后,增长速度更快,USB接口已经成为PC的标准端口。
USB2.0协议使得USB设备支持最高480Mbps的传输速度,该速度可以满足用户的各种数据传输需求。
USB2.0协议一推出,各大芯片生产商马上推出了支持USB2.0协议的芯片。
其中,Cypress公司的CY7C68013是这些芯片中非常优秀的一款,该芯片为达到高数据传输速度进行了一系列针对性的设计,使得其传输性能非常好;该芯片对外接口灵活,能够配置为端口方式、GPIF主动方式、从FIFO方式三种接口模式,各模式下的具体接口方式也非常灵活,支持和各种常用接口的对连。
这里研究了基于此芯片的通信电路即单片机与计算机USB口之间的数据传输。
1.3USB总线技术的概念和优点分析
USB是一种新的总线标准,它取代当前PC上的串口和并口,把这些不同的接口统一起来,使用一个4针插头作为标准插头。
通过这个标准插头,采用菊花链形式可以把所有的外设连接起来,并且不会损失带宽。
USB需要主机硬件、操作系统和外设三个方面的支持才能工作。
设计USB的目标就是使不同厂家所生产的设备可以在一个开放的体系下广泛地使用。
该规范改进了便携商务或家用计算机的现有体系结构,进而为系统生产商和外设开发商提供了足够的空间来创造多功能的产品和开发广阔的市场,并不必使用陈旧的接口,害怕失去兼容性[22]。
USB的工业标准是对PC机现有的体系结构的扩充。
USB的设计主要遵循以下几个准则:
1.易于扩充多个外围设备;
2.价格低廉,且支持12Mbps的数据传输;
3.对声音音频和压缩视频等实时数据的充分支持;
4.协议灵活,综合了同步和异步数据传输;
5.可以兼容不同设备;
6.综合了不同PC机的结构和体系特点;
7.提供一个标准接口,广泛接纳各种设备;
8.赋予PC机新的功能,使之可以接纳许多新设备。
USB主要有以下优点:
(1)速度快。
USB有高速、全速和低速三种方式,主模式为高速模式,速率为480Mbps,USB2.0版规范允许480Mbps的速率传输数据。
另外为了适应一些不需要很大吞吐量和很高实时性的设备,如鼠标等,USB还提供低速方式,速率为1.5Mbps。
相比之下,串口数据传输率是115kbps-230kbps,标准并口的数据传输率为1Mbps,这些都远低于USB的传输速率。
(2)设备安装和配置容易。
USB设备支持即插即用,安装USB设备不必再打开机箱,加减己安装过的设备完全不用关闭计算机。
所有USB设备支持热插拔,系统对其进行自动配置,不再占用中断资源或者DMA资源,彻底抛弃了过去的跳线和拨码开关设置。
USB为接缆和连接头提供了单一模型,解决了外设越来越多所造成的插槽紧张问题。
(3)易于扩展。
通过使用Hub扩展,可接多达127个外设。
标准USB电缆长度为3m,通过Hub或中继器可以使外设距离达到30m。
(4)使用灵活。
USB共有4种传输模式:
同步传输(Synchronization)、控制传输(control)、中断传输(interrupt)、批量传输(bulk),以适应不同设备的需要。
(5)能够采用总线供电。
USB总线可提供5V电压、500mA电流,对于功耗较小的设备来说这是非常有效的[3]。
1.4本文USB数据传输模块所要研究的内容
CY7C68013 是Cypress公司推出的 EZ_USB FX2系列产品之一,内部集成了 USB 2.0 收发器、智能串行引擎(SIE)、增强型8051控制器、通用可编程接口(GPIF)、8.5KB的RAM 和FIFO存储器,最大限度的满足了USB2.0的总线带宽。
本课题设计的USB数据传输模块是一种基于EZ_USBFX2单片机的通用数据传输模块。
讨论了USB控制器EZ_USBFX2(CY7C68013)的性能及传输方式并给出了该系统的硬件实现方案。
本课题包括用CY7C68013实现给弹载姿态测试仪编程,并读取测试仪RAM里的数据。
弹载姿态测试仪的主控芯片是动态测试与智能仪器实验室研制的ASICHB0202。
2USB总线技术及芯片介绍
2.1USB2.0拓扑结构
USB总线拓扑是指USB设备和主机之间的连接模型,包括USB主机、设备以及他们之间的相互连接。
1.USB主机
主机由三部分构成:
主机控制器、USB系统软件(包括USB驱动程序、控制器驱动程序及主机软件)和客户软件。
USB主机在USB系统中占据控制位置。
USB的数据传输是基于令牌的,每个USB系统只能有一个主机,并由主机启动和发起所有通信,由于主机在所有的数据传输中都占主导地位,它负责并控制所有其他USB设备的访问[6]。
2.USB设备
根据设备功能不同,USB设备可以分为两大类,一类是集线器,一类是功能设备。
其中集线器可以被看做是USB系统的扩展接口,为USB系统提供更多的连接端点;而功能设备,如USB鼠标,写字板等则提供了更多的扩展功能。
由于USB设备与主机之间的接口相同,主机就可以以相同的方式对这些设备进行管理。
每个USB设备都有自己相关的配置信息,USB主机可以通过这些信息识别和控制相关的USB设备。
这些信息一方面包括所有设备所共有的报告信息,另一方面,根据设备类型的不同,会包含其特定的设备功能信息[4]。
3.USB主机和设备的连接
为了防止环形连接的出现,在USB主机与设备的物理连接方面,USB设备采用分层星型拓扑结构与主机进行连接。
集线器为USB设备提供连接点。
集线器为系统提供了扩展的端口(PORT)。
其中,主机包含的集线器,称为根集线器。
主控制器(包括根集线器)是该拓扑结构的起点,以USB集线器为中心,最多可以有7层,每层都是集线器和功能设备之间点到点的连接。
需要特别强调的是,在这个层结构中,主机与设备之间的通信链路最多可以支持5个非根集线器。
另外,由于复合设备可以看做两层结构,故而不能连在第7层上,第7层只能连接功能设备[5]。
2.2USB传输
在USB的数据传送的方式下,有四种传输方式:
控制(Control),同步(isochronous),中断(interrupt),批量(bulk)。
如果你是从硬件开始来设计整个的系统,你还要正确选择传送的方式,而作为一个驱动程序的书写者,就只需要弄清楚他是采用的什么工作方式就行了。
通常所有的传送方式下的主动权都在PC边,也就是host边。
(1)同步传输方式。
等时传输用于连续稳定传输数据,对传送延迟非常敏感但对数据的正确性要求不高。
等时传输以固定的传输速率,连续不断地在主机与设备之间传输数据。
同步数据的建立、传送和使用是连续且实时的,同步数据是以稳定的速率发送和接收实时的信息,同步数据要使接受者与发送者保持相同的时间安排,除了传输速率,同步数据对传送延迟非常敏感。
所以同步通道宽带的确定,必须满足对相关功能部件的取样特性。
不可避免的信号延迟与每个端口的可用缓冲区数有关[7]。
(2)中断传输方式。
中断传输适用于传输少量、中量、并且对服务周期有要求的数据。
USB为中断传输保留了总线带宽,以保证其能在规定的周期内得到服务,但是中断传输并不是一直使用准确的传输速率。
中断方式传输主要用于定时查询设备是否有中断数据要传输。
这种传输方式典型应用在少量的分散的、像键盘和鼠标这一类不可预测数据的传输。
中断的特点单向传输,对于主机来说只有输入的方式。
中断传输在高速时数据载荷可达1023字节;在全速时小于64字节;低速时为8个字节以下[11]。
(3)控制传输方式。
USB控制传输适用于所有USB设备的传输。
主要对传输量少、对传输时间和传输速率均无要求、但对传输数据的可靠性要求高的数据进行传输。
为了确保控制传输的实时性,USB总线控制协议为控制传输保留了一定的带宽。
另外,协议中还使用差错控制和重试机制来确保数据传输的正确性和可靠性。
USB控制传输主要用于USB主机和USB设备间的配置信息通信,包括设备的地址、描述符、接口描述符和端点描述符等。
当然用户也可以自定义操作,将控制传输用于传输其他用途的数据。
控制传输的数据量一般比较小,传输方向为双向。
在控制传输中USB系统软件主要用来配置和发送命令,以及状态查询。
由于它的重要性,控制传输使用了最广泛USB错误检测协议[17]。
(4)批量传输方式。
USB块传输适用于高速或全速的USB设备,这种传输方式的传输量大、但对于传输时间和传输速率没有保证。
在USB总线带宽紧张的时候,块传输的传输速率很低,传输时间也很长,因为它牺牲了本身的延迟为其他传输让出自己所占用的帧;但是,在USB总线空闲时,它就会以很快的速率传输,相应的传输时间也很短。
所以当用于批量传输时块传输可用于发送大量的数据而不会堵塞USB总线,但其传输时间和传输速率得不到保证。
批量传输可以用于突发的大量数据的传输,支持全速模式8,16,32或64字节(高速模式时是512字节)的信息包传送。
基于出错的数据自动重发的机制,批量传输可确保数据的准确性。
当总线上有空闲时,主机可以安排块数据包。
块传输可用于扫描仪、打印机、调制解调器等设备的数据传输。
2.3USB设备的连接
2.3.1USB设备的安装
USB设备可直接与主机的根集线器连接,也可以经过USB集线器与主机相连。
在
USB设备安装完成后,主机为USB设备建立了控制通道,通过控制通道激活该USB且设备的端点,并对每个设备指定唯一的USB地址[18]。
2.3.2USB设备的断开
当USB设备从集线器的端口拆除后,集线器就会关闭这个端口,同时向主机报告该设备已不存在,这时,USB系统软件需要对这个事件进行相应的处理。
如果系统软件判断去除的是USB设备上的集线器,USB的系统软件将会对这个集线器以及其连接的所有USB设备进行Removal处理。
当USB设备从其所连接的集线器下行端口上断开时,该集线器会禁止使用这个端口,并通过中断IN向主机报告端口状态所发生的变化。
之后主机发出GctPortstatus请求,并处理相应的断开操作。
这时的USB设备驱动程序就会释放其所占用的资源。
在USB设备断开操作完成后,其它新连接的USB设备就可以使用这个设备地址了[17]。
2.4FX2的简单介绍
一增强型8051内核
CY7C68013中的增强型8051与标准的8051相比,具有更快的速度、更强的功能,且其指令集和标准8051完全兼容;该内核的一个总线周期为4个时钟周期,而标准8051的一个总线周期由12个时钟周期组成;增强型8051的默认工作频率为48MHz,需要在芯片外部接24MHz晶振,经过内部振荡电路和锁相环(PLL)倍频电路,产生48MHz的时钟;CY7C68013内部8.5KB的RAM可以兼做程序存储器和数据存储器,增强型8051的固件代码就存储在该区域内;固件代码可以通过USB总线进行下载,保存在EEPROM内[19]。
二智能串行引擎(SIE)
CY7C68013芯片内串行接口引擎负责完成USB协议的有关功能,包括数据的编解码、差错控制、位填充等。
这样就将MCU(增强型8051)解放出来,从而简化了固件代码的开发[25]。
三支持软配置
采用再次枚举(ReNumeration)技术,固件程序可以保存在主机上,每次上电后通过USB接口将固件下载到芯片RAM中具有很大的灵活性。
四4个可编程端口(Endpoint)
CY7C68013共有7个输入输出端口:
EP0、EP1OUT、EP1IN、EP2、EP4、EP6、EP8。
其中EP2、EP4、EP6、EP8分别可以被配置为批量/中断/同步传输模式,传输方向均可配置为出/入,这里用到了EP2的批量传输和EP6的批量输入[27]。
五可编程缓冲区(Buffer)深度
端口EP2、EP6的缓冲区大小可编程为512或1024字节,深度可编程为2/3/4倍大小;端口EP4、EP8的缓冲区固定为512字节大小,深度为2倍。
采用不同的配置方式,可实现特定带宽、速率要求的数据传输[21]。
六FIFO
芯片中有一个大小为4K的微处理器FIFO存储器,USB接口和外围电路直接共享这个FIFO存储器。
图3.1RAM/FIFO为FIFO的传输模式示意图。
从图中可以看出,与外围电路的数据传输可以在没有8051固件干涉的情况下完成,8051也可以通过FIFO或RAM的方式访问所传输的数据。
FIFO存储器与USB之间的传输是以数据包的形式实现的,而不是一次只传输1字节,这种处理被称为“量子FIFO”,它较好地解决了USB高速模式下的带宽问题,非常适合于大容量的数据传输。
如果芯片时钟频率为48MHz,使用FIFO存储器进行数据传输,最高速率可以达到96Mbyte/s。
在USB端看来,只要有1个FIFO为“半满”,那么就可以继续发送数据。
当前操作的FIFO写“满”时,FX2自动将其转换到外部接口端,排除等候读取;并将USB接口队列中下一个为“空”的FIFO转移到USB接口上,供其继续写数据。
同时,在外部接口端看来,只要有1个FIFO为“半满”,就可以继续读取数据。
当前操作的FIFO读“空”时,FX2自动将其转换到USB接口端,排除等候写入;并将外部接口队列中下一个为“满”的FIFO转移到外部接口上,供其继续读取数据[18]。
2.5CY7C68013的接口模式
CY7C68013有三种可用的接口模式:
端口、GPIF主控和从FIFO方式。
a.在“端口”模式下,所有I/O引脚都可作为8051的通用I/O口。
b.在“从FIFO”模式下,外部逻辑或外部处理器直接与FX2端点FIFO相连。
在这种模式下,GPIF不被激活,因为外部逻辑可直接控制FIFO。
这种模式下,外部主控端既可以是异步方式,也可以是同步方式,并可以为FX2接口提供自己的独立时钟[18]。
c.“GPIF主控”接口模式使用PORTB和PORTD构成通向四个FX2端点FIFO(EP2,EP4,EP6和EP8)的16位数据接口。
GPIF作为内部的主控制器与FIFO直接相连,并产生用户可编程的控制信号与外部接口进行通信。
同时,GPIF还可以通过RDY引脚采样外部信号并等待外部事件。
由于GPIF的运行速度比FIFO快得多,因此其时序信号具有很好的编程分辨率。
另外,GPIF既可以使用内部时钟,也可以使用外部时钟[3]。
3硬件设计
3.1总设计思想
3.1.1本设计任务的要求
本设计完成的工作是图3.1虚线框内的部分,即设计实现68013与弹载姿态测试仪的通信。
弹载姿态测试仪的主控芯片是ASICHB0202,本设计要求能够实现68013给HB0202编程,并能够读取弹载姿态测试仪中RAM的数据。
图3.1原理图
3.1.2设计思想
如图3.2,本设计主要有CY7C68013模块,EEPROM存储器模块,时钟模块,电源转换模块、电平转换模块、电路复位模块组成。
使用CY7C68013的普通端口模式,PA0口作为数据发送端,PB0口作为数据接收端,PA1口作为时钟SCK,PA2口作为时钟OE,PA3口控制SN74HC125。
图3.2设计框图
3.2USB数据传输流程
USB数据传输流程如图3.3。
图3.3USB数据传输流程
工作流程可分为两个部分:
芯片初始化部分和数据传输部分。
1芯片初始化部分
本部分是适用于任何USB传输过程中的芯片初始化部分。
当USB接口接入PC后,首先进行PC的设备搜索,从USB端获得设备的VI