[优秀毕业论文]基于单片机+PDIUSBD12芯片的USB协议转换系统设计

上传人:仙*** 文档编号:79447063 上传时间:2022-04-23 格式:DOC 页数:52 大小:3.55MB
收藏 版权申诉 举报 下载
[优秀毕业论文]基于单片机+PDIUSBD12芯片的USB协议转换系统设计_第1页
第1页 / 共52页
[优秀毕业论文]基于单片机+PDIUSBD12芯片的USB协议转换系统设计_第2页
第2页 / 共52页
[优秀毕业论文]基于单片机+PDIUSBD12芯片的USB协议转换系统设计_第3页
第3页 / 共52页
资源描述:

《[优秀毕业论文]基于单片机+PDIUSBD12芯片的USB协议转换系统设计》由会员分享,可在线阅读,更多相关《[优秀毕业论文]基于单片机+PDIUSBD12芯片的USB协议转换系统设计(52页珍藏版)》请在装配图网上搜索。

1、本科生毕业论文目录第1章绪论11.1概述11.1.1课题研究目的11.1.2国内外发展状况11.2USB接口及USB器件分析21.3系统方案设计41.4预期实现目标4第2章USB概述及协议62.1USB体系结构概述62.1.1USB系统描述62.1.2USB连接头及其供电方式82.1.3USB系统软硬件组成82.2USB编码方式与传输类型92.2.1USB的编码方式92.2.2USB传输92.3USB设备请求122.3.1USB标准请求格式122.3.2USB标准请求命令122.4USB设备的描述符132.4.1设备描述符132.4.2配置描述符142.4.3接口描述符142.4.4端点描述符

2、162.4.5字符串描述162.5总线协议192.6USB的枚举过程192.7USB主机接口及系统的功能202.8本章小结21第3章硬件特性及电路设计223.1单片机8051介绍223.2PDIUSBD12器件与微控制器的连接243.2.1PDIUSBD12功能描述243.2.2PDIUSBD12管脚配置243.2.3单片机与PDIUSBD12的连接253.3系统硬件设计263.3.1单片机电路设计263.3.2外围电路设计273.4本章小结29第4章程序设计及调试304.1概述304.1.1集成开发环境Keil简介304.1.2程序概述304.2固件程序344.2.1固件程序组成344.2.

3、2PDIUSBD12的底层操作354.2.3PDIUSBDI2命令接口程序364.2.4PDIUSBDI2的中断服务程序374.2.5主程序424.3程序调试454.3.1Keil编译器的使用454.3.2系统调试484.4本章小结51结论52参考文献53致谢54附录55附录1电路原理图55附录2PCB图56第1章绪论1.1概述1.1.1课题研究目的随着电子科技的发展与应用,各种计算机外围接口不断推陈出新,USB接口已经成为现今个人计算机上最重要的接口之一,各种电子消费产品也逐渐配置这种接口。USB接口是速度比较高的串行接口,具有较广阔的发展前景和应用潜力。USB适用于低档外设与主机之间的高速

4、数据传输。从USB问世至今,USB在不断的自我完善,并走向成熟。从普通计算机用户、计算机工程师、到硬件芯片生产厂商,都已经完全认可了USB。传统的设备主要是基于RS-232的串行接口,随着计算机速度的提升,已经明显不能适应发展的需要。不仅是速度上比较慢,而且由于其不支持热插拔。而USB接口由于支持热插拔,占有较少的系统软件硬件资源,厂商对于USB的硬件软件的支持也越来越完备,现在开发一个USB外设产品所需要的成本和时间大大降低了。USB技术取得了迅速的发展。单片机作为最典型的嵌入式系统,推动了嵌入式系统的发展,成为现代电子系统中重要的智能化器件。因此,USB I/O外围设备的设计已成为电子领域

5、的主要技术之一1。本课题就是利用单片机设计一个功能简单的嵌入式USB外设,将其与PC机连接,通过USB接口实现PC机与外设之间的相互通信。1.1.2国内外发展状况1994年,Intel,Compaq,Digital,IBM,Microsoft,NEC,Northern Telecom等7家世界著名的计算机和通信公司成立了USB论坛,花了近两年的时间形成了统一的意见,于1995年11月正式制定了USB 0.9通用串行总线(Universal Serial Bus)规范。在1996年,一些规模型经营的公司,他们的PC机、监视器,开始配备了USB接口。原有的所有接口和插槽依然保留,只增加一个USB接

6、插件,其目的是为了在扩展新的用途时使用。直到1997年,真正符合USB技术标准的外设才开始出现。直至Windows98推出之前,推出的USB功能模块并不多,原因除了因为传统的通信接口,如RS232,IEEE488等,一时难以退出应用领域外,一些早期的USB应用探索者步履艰难,抱怨的主因是宿主平台的实用性。Windows98对USB驱动软件(USBD)完善,使其可提供对USB的强有力的支持,对USB技术的发展起到重要推进作用。自此,市场上涌现出大批的USB产品。USB1.0是目前推出的在支持USB的计算机与外设上普遍采用的标准。目前普遍采用的USB1协议主要应用在中低速外围设备上,它提供的传输速

7、度有低速1.5Mbps和全速12Mbps两种。可分别支持显示器、Modem、鼠标、键盘、扫描仪、打印机、光驱及大范围的多媒体设备。从国外的发展来看,人们对USB有着极大的重视程度,这从USB规范的改进速度之快及国际市场上基于USB的产品普及的范围可见一斑。从1994年公布V1.0FDR版本,短短一年时间版本增订了五次。说明技术人员正大力研究改善USB的性能。市场上基于USB的外设己囊括了所有的数字产品。可见国外在这方面已作了很多工作,并且目前也正以很快的速度发展2。 国内对于USB的研究在这几年才刚刚起步。市场上也可以见到各种USB产品,也有少量的专门讨论USB开发的国内网站。比较专业的稳定的

8、网站有USB开发网(),但因为在前几年还很少有人做这方面的工作,所以在相关网站上开发USB的文章量少,更新速度慢;国内知名高校的BBS(比如水木华:),上面相关的文章询问USB的人多,但回答问题的人仅限于几个。对USB芯片进行开发、技术服务和应用方案设计的公司更是寥寥无几。虽然在网上做调研所得到的信息并不完全,但由此可以看出国内对USB技术研究的需求及欠缺。1.2USB接口及USB器件分析USB(Universal Serial Bus通用串行总线),是一种快速、灵活的总线接口。与其它通信接口比较,USB接口的最大特点是易于使用,这也是USB的主要设计目标。作为一种高速总线接口,USB适用于多

9、种设备,如数码相机、MP3播放机、高速数据采集设备等。易于使用还表现在USB接口支持热插拔,并且所有的配置过程都由系统自动完成,无需用户干预。USB接口支持1.5Mb/s(低速)和12Mb/s(全速)的数据传输速率,扣除用于总线状态、控制和错误监测等的数据传输,USB的最大理论传输速率仍达1.2Mb/s或9.6Mb/s,远高于一般的串行总线接口。USB接口芯片价格低廉,这也大大促进USB设备的开发与应用。在进行一个USB设备开发之前,首先要根据具体使用要求选择合适的USB控制器。目前,市场上供应的USB控制器主要有两种:带USB接口的单片机(MCU)或纯粹的USB接口芯片。带USB接口的单片机

10、从应用上又可以分成两类,一类是从底层设计专用于USB控制的单片机,另一类是增加了USB接口的普通单片机,如Cypress公司的EZUSB(基于8051),选择这类USB控制器的最大好处在于开发者对系统结构和指令集非常熟悉,开发工具简单,但对于简单或低成本系统。其价格因素也是在实际选择过程中需要考虑的因素。纯粹的USB接口芯片仅处理USB通信,必须有一个外部微处理器来进行协议处理和数据交换。这类典型产品有Philips公司的PDIUSBD12(并行接口),NS公司USBN9603/9604(并行接口),NetChip公司的NET2888等。USB接口芯片的主要特点是价格便宜、接口方便、可靠性高,

11、尤其适合于产品的改型设计(硬件上仅需对并行总线和中断进行改动,软件则需要增加微处理器的USB中断处理和数据交换程序,PC机的USB接口通信程序,无需对原有产品系统结构作很大的改动)2。PDIUSBD12是在USB协议设备端使用最多的芯片之一。此芯片是带有并行总线的全速USB接口器件,可与任何微控制器实现高速并行接口(2Mb/s),并用于许多外设。这种实现USB接口的标准组件,可以使设计者在不同类型的微控制器中选择最合适的微控制器,使用已有的结构和减少固件上的投资,从而用最快捷的方法实现最经济的USB设备,它具有以下特性:1、符合USB1.0版规范;2、高性能USB接口器件,集成了SIE, FI

12、FO存储器,收发器以及电压调整器;3、可以与任何外部微控制器/微处理起实现高速并行接(2MB/s);4、集成320B多结构的FIFO存储器;5、完全自治的直接内存存取(DMA)操作;6、可以通过软件控制与USB的连接;7、采用GoodLink技术的连接指示器,在通信时使LED闪烁;8、可编程的时钟频率输出;9、多中断模式实现批量和同步传输3。1.3系统方案设计以单片机原理,硬件资源的功能应用,PDIUSBD12芯片功能与接口设计,USB1.0协议等理论知识为基础,设计出完整的系统原理图。根据原理图,将硬件系统资源焊接成PCB板。根据系统功能,设计编写固件程序,下载后进行调试,实验板在单片机控制

13、下能单独工作后,然后和上位机进行联机调试,通过USB接口实现与上位机的相互通信。本课题涉及的理论知识主要是USB1.0协议,重点在于硬件设计,难点在于编程和整机的调试。经过论证,在实现设计要求的前提下,为了降低系统的成本,选用接口级芯片PDIUSBD12,控制器选取8051,它有64k的存储容量,对于固件程序已经足够使用了;而且这款单片机支持在线编程,通过串口下载程序,这给程序的下载和使用带来来方便。程序设计采用C语言进行编程,软件仿真采用Keil C51。1.4预期实现目标通过硬件电路和驱动程序(包括设备端和上位机端的驱动程序)实现以下目的:1、保证电路连接的正确性和可行性。完成以单片机与U

14、SB接口芯片为主要芯片的电路板;2、完成程序的编写,主要是设备端的固件编程;3、通过硬件调试,单片机能独立控制电路板上元件工作;4、实现电路板与上位PC机双向传输。这需要与上位机进行联机调试,主要在软件部分实现。第2章USB概述及协议USB以USB主机为核心,以外围的USB设备为功能,组成了USB系统模型。主机是USB的核心,每次USB数据通信都必须是由USB主机来发起的,主机管理着USB设备。USB物理上是一个含有两条电源线(VCC,GND)和两条以差分方式产生信号的线(D+,D-),传输率可达12Mbps的串行接口,一个PC主机可以连接多达127个外围设备。USB协议是以令牌包为主的通信协

15、议,12Mbps的总线带宽被分割成1ms的帧,所有任务以时分传输(TDM)来分享总线。2.1USB体系结构概述2.1.1USB系统描述一个USB系统主要被定义为三个部分: USB的互连; USB的设备; USB的主机。 USB的互连是指USB设备与主机之间进行连接和通信的操作,主要包括以下几方面: 总线的拓扑结构:USB设备与主机之间的各种连接方式; 内部层次关系:根据性能叠置,USB的任务被分配到系统的每一个层次; 数据流模式:描述了数据在系统中通过USB从产生方到使用方的流动方式;USB的调度:USB提供了一个共享的连接。对可以使用的连接进行了调度以支持同步数据传输,并且避免的优先级判别的

16、开销。USB连接了USB设备和USB主机,USB的物理连接是有层次性的星型结构。每个网络集线器是在星型的中心,每条线段是点点连接。从主机到集线器或其功能部件,或从集线器到集线器或其功能部件,从图2.1中可看出何USB系图2.1 总线的拓扑结构拓扑结构。其中,USB集线器Hub是一组设备的连接点,主机中有一个被嵌入的Hub叫根Hub(root Hub)。主机端通常是指PC主机或是另外再附加USB端口的扩充卡,主机通过根Hub提供若干个连接点。集线器除了扩增系统的连接点外,还负责中继(repeat)上游或下游的信号以及控制各个下游端口的电源管理。当PC上电时,所有USB设备与Hub都默认地址为0,

17、PC机启动程序向USB查询,地址1分配给发现的第一个设备,地址2分配给第二个设备或Hub,如此重复寻找并分配地址,直到所有设备赋完地址,并加载相应的的驱动程序。当设备突然被拔移后,PC机通过D+或D-的电压变化检测到设备被移除掉后,将其地址收回,并列入可使用的地址名单中。在任何USB系统中,只有一个主机。USB和主机系统的接口称作主机控制器,主机控制器可由硬件、固件和软件综合实现。根集线器是由主机系统整合的,用以提供更多的连接点。USB的设备如下所示: 网络集线器,向USB提供了更多的连接点;功能器件:为系统提供具体功能,如ISDN的连接,数字的游戏杆或扬声器。USB设备提供的USB标准接口的

18、主要依据: 对USB协议的运用; 对标准USB操作的反馈,如设置和复位;标准性能的描述性信息。2.1.2USB连接头及其供电方式为了避免连接错误,USB定义了两种不同规格的星形USB连接头:序列A与B连接头,其中序列A接头用来连接下游的设备。每个连接头内拥有4个针脚,其中两个是用来传递差分数据的,另两个则用于USB设备的电源供给。USB的供电方式有两种:1、总线供电集线器电源由上游连接端口供应,最多只能从上游端消耗500mA。一个4个连接端口的集线器,每个下游端口最多消耗为100mA,外围电路消耗100mA。2、自我供电集线器集线器本身有电源,可以提供给本身的控制器以及下游端口至少500mA的

19、电流,集线器最多可从上游端消耗100mA。2.1.3USB系统软硬件组成USB系统的软硬件资源可以分为3个层次:功能层、设备层和接口层。功能层提供USB设备所需的特定的功能,主机端的这个功能由用户软件和设备类驱动程序提供,而设备就由功能单元来实现。设备层主要提供USB基本的协议栈,执行通用的USB的各种操作和请求命令。从逻辑上讲,就是USB系统软件与USB逻辑设备之间的数据交换。接口层涉及的是具体的物理层,其主要实现物理信号和数据包的交互,即在主机端的USB主控制器和设备的USB总线接口之间传输实际的数据流。无论在软件还是硬件层次上,USB主机都处于USB系统的核心。主机系统不仅包含了用于和U

20、SB外设进行通信的USB主机控制器及用于连接的 USB接口(SIE),更重要的是,主机系统是USB系统软件和USB客户软件的载体。USB主机软件系统可以分为三个部分: 1、客户软件部分(CSW),在逻辑上和外设功能部件部分进行资料的交换;2、USB系统软件部分(即HCDI),在逻辑和实际中作为HCD和USBD之间的接口;3、USB主机控制器软件部分(即HCD和USBD),用于对外设和主机的所有USB有关部分的控制和管理,包括外设的SIE部分、USB资料发送接收器(Transreceiver)部分及外设的协议层等2。2.2USB编码方式与传输类型2.2.1USB的编码方式USB采用不归零翻转(N

21、on Return to Zero Invert,简称NRZI)编码方式,对于不同步的脉冲信号也能产生同步的数据存取,能有效地解决USB缆线信号延迟产生的误差。NRZI的编码规则是:当数据位为“1”时电平保持不变,为“0”时电平翻转。如果原始的串行数据中含有连续6个“1,就在其后填充一个“0。在NRZI解码的过程中发现连续的6个“1”时,则移走其后原填入的“0。NRZI编码、位填充过程分析如下:原数据 0 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1位填充 0 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 1NRZI码 0 1 1 1 0 1 0 0 0 1

22、 1 1 1 1 1 1 0 0 0 2.2.2USB传输USB总线是一种串行总线,即它的资料是一个bit一个bit来传送的。虽然USB总线是把这些bit形式的资料打成资料包来传送,但资料的同步也是必不可少的。USB1.0协议规定,USB的标准脉冲时钟为12MHz,而其总线时钟为1ms,即每隔1ms,USB器件应为USB线缆产生一个时钟脉冲序列。这个脉冲序列称为帧开始资料包(SOF),主机利用SOF来同步USB资料的发送和接收。为实现多外设、多信道地同时工作,USB总线使用资料包的方式来传输资料和控制信息。USB数据传输中的每一个资料包都以一个同步字段开始,它的最后两个bit作为PID字段开始

23、的标志。紧跟在同步字段之后的一段8bit的脉冲序列称为PID(资料包标识字段),PID字段的前四位用来标记该资料包的类型,后四位则作为对前四位的校验。PID字段被分为标记PID(共有IN、OUT、SETUP或SOF四种)、资料PID(DATA0或DATA1)、握手PID(ACK、NAK或STALL)及特殊PID等。主机根据PID字段的类型来判断一个资料包中所包含的数据类型,并执行相应的操作。当一个USB外设初次连接时,USB系统会为这台外设分配唯一的USB地址,这个地址通过地址寄存器(ADDR)来标记,以保证资料包不会传送到别的USB外设。7bit的ADDR使得USB系统最大寻址为127台设备

24、(ADDR字段)。由于一台USB外设可能具有多个信道,因而在ADDR字段后会有一个附加的端点字段(EndpointField,简标为ENDP)来标记不同的信道。所有的USB外设都必须支持Endpoint0信道,用0000来标记。对于高速设备,可以最大支持16个信道,而低速设备在Endpoint0之外仅能有一个信道。数据域位作为一次USB数据传输的中心目的,在一个USB资料包中可以包含01203Byte的资料。而帧数量字段则包含在帧开始资料包中,对有的应用场合,可以用帧数量字段作为资料的同步信号。为保证控制、块传送及中断传送中资料包的正确性,CRC校验字段被引用到如标记、资料、帧开始(SOF)这

25、样的资料包中。CRC校验(资料冗余校验)可以给予资料以100% 的正确性检验。在USB系统中,有四种形式的资料包:信令包(Token Packets)、DATA 资料包(DATA Packets)、帧开始包(SOF Packets)和握手包(Handshake Packets)。每个资料包的结束都会有两个bit宽的EOP字段作为资料包结束的标志(图7-18),EOP在差模信号中表现为D+和D-都处于“0”状态。对于高速USB外设而言,这个脉冲宽度在160175ns之间,而低速设备则在1.251.50s之间。无论其后是否有其它的资料包,USB线缆都会在EOP字段后紧跟1bit的总线空闲位。USB

26、主机或外设利用EOP来判断一个资料包的结束。为了满足不同外设和用户的要求,USB提供了四种传输方式:控制传输;同步传输;中断传输;批传输。它们在数据格式、传输方向、数据包容量限制、总线访问限制等方面有着各自不同的特征:1、控制传输(Control Transfer):可靠的,非周期的,由主机软件发起的请求或者回应的传送,通常用于命令事务和状态事务。2、同步传输(Isochronous Transfer);在主机和设备之间的周期性的,连续的通信,一般用于传送与时间相关的信息。这种类型保留了将时间概念包含于数据中的能力。但并不意味着用于同步传送的数据的时间是很重要的,即传送并不一定很急。3、中断传

27、输(Interrupt Transfer):小规模数据的,低速的,固定延迟的传送。4、批量传输(Bulk Transfer):非周期的,大包的,可靠的传送。典型用于传送可以利用任何带宽的数据,这些数据没有带宽时,是可以容忍等待。对于PDIUSBD12,端点的工作方式可通过Set Mode命令配置为4种不同的模式,分别为:1、模式0(Non-ISO模式):非同步传输;2、模式1(ISO-OUT模式):同步输出传输;3、模式2(ISO-IN模式):同步输入传输;4、模式3(ISO-IO模式): 同步输入输出传输。端点2在有些方面是比较特别的,端点2是进行吞吐大量数据的主要端点,一般称其为主端点,主

28、端点执行主机的特性以减轻传输大量数据的任务,具体包括:1、双缓冲;2、支持DMA;3、可以配置为同步传输或非同步(批量和中断)传输。2.3USB设备请求USB的标准设备请求是用来完成USB设备枚举的命令,USB设备必须对标准设备请求作出响应,不管该设备是否已经被分配了一个默认的地址或者该设备目前正在被配置。所有的标准设备请求都是使用默认的管道来传输的。2.3.1USB标准请求格式USB的设备请求由八个字节组成,格式定义如表2.1所示。2.3.2USB标准请求命令USB标准请求有11个命令,如下:1、 获取状态请求:该命令用于返回特定接受者的状态。2、 清除特性请求:该命令用于清除或禁用接受者的

29、某些特性。3、 设置特性请求:该命令是主机用来启用或激活命令接受者某些特性。4、 设置地址请求:该命令用于主机给设备分配地址。5、 获取描述请求:该命令用于主机获取设备的特定描述符。6、 设置描述符请求:主机利用该命令来修改设备中的有关描述或增加新的描述符等。7、 获取配置请求:主机利用该命令获得设备当前的配置值。8、 设置配置请求:主机通过该命令来指示设备采用要求的配置。9、 获取接口请求:主机利用该命令来获取当前的某个接口的接口描述符的编号。10、 设置接口请求:主机可以通过该命令来要求设备用某个接口描述符来描述接口。11、 同步帧请求:该命令用于设备设置和报告一个端点的同步帧。表2.1U

30、SB设备请求格式偏移值字段名称字段长度字段取值说明0设备请求类型1位图请求特性:D7:数据传输方向0=主机到设备1=设备到主机D6.5:类型0=标准;1=类型2=厂商;3=保留D4.0:接受方0=设备;1=接口2=端点;3=其他4.31=保留1设备请求1数值USB设备请求2值2值根据不同的请求,以字节为单位来定义4索引2字段编号索引根据不同的请求,以字节为单位来定义6长度2计数如果传输一组数据,指出要传输的字节数2.4USB设备的描述符USB设备描述符是说明设备的通用信息,这包括对设备及所有设备设置全程起作用的信息。2.4.1设备描述符一个USB总线设备只能有一个设备描述表。设备描述表的结构如

31、表2.2所示:表2.2设备描述符偏移值字段名称字段大小字段取值说明0bLength1数字描述符的大小=12H1bDescriptorType1常数设备描述符类型=01H2bcdUSB2BCDUSB规划发布号4bDeviceClass1类型类型代码(由USB指定)5bDeviceSubClass1子类型子类型代码(由USB分配)6bDeviceProtocol1协议协议代码(由USB分配)7bMaxPacketSize01数字端点0最大分组大小(只有8,16,32或64有效)8idVendor2ID供应商ID(由USB分配)10idProduct2ID产品ID(由厂商分配)12bcdDevice

32、2BCD设备出厂编码14iManufacture1索引厂商描述符字符串索引15iProduct1索引产品描述符字符串索引16iSerialNumber1索引设备序列号字符串索引17bNumConfiguations1数字可能的配置数2.4.2配置描述符配置描述符定义了设备的配置信息,结构如表2.3所示。2.4.3接口描述符接口描述符说明了接口所提供的配置,接口描述符的结构如表2.4所示。表2.3配置描述符偏移值字段名称字段大小字段取值说明0bLength1数字描述符的大小=09H1bDescriptorType1常数配置描述符类型=02 H2wTotalLength2数字此设置信息的总长(包括

33、设置,接口,端点和设备类及厂商定义的描述表)4bNumInterfaces1数字此设置所支持的接口个数5bConfigurationValue1数字作为Set Configuration的一个参数选择配置值6iConfiguration1索引用于描述该配置字符串描述符的索引7bmttributes1位图配置特性:D7:总线供电D6:自供电D5:远程唤醒D40;保留(复位为0)8MaxPower1mA在此设置下的总线电源耗费量,以2mA为一个单位表2.4接口描述符偏移值字段名称字段大小字段取值说明0bLength1数字描述符的大小=09H1bDescriptorType1常数接口描述符的类型=0

34、4H2bNumInterfaces1数字接口的编号3bAlternate Setting1数字用于为上一个字段选择可供替换的设置4bNumEndpoint1数字使用的端点数目(端点0除外)5bInterface Class1类型类型代码(由USB分配)6bInterfaceSubClass1子类型子类型代码(由USB分配)7bInterface Protocal1协议协议代码(由USB分配)8iInterface1索引字符串描述符的索引2.4.4端点描述符端点描述符包括了端点的类型,大小等信息。USB设备中的每一个端点都有自己的描述符。端点描述符的结构如表2.5所示。2.4.5字符串描述字符串

35、描述是可选的。如果一个设备不支持字符串描述符,在设备,配置和接口描述符内的所用字符串描述符的索引都必须为0。字符串描述符的结构如表2.6所示。表2.5端点描述符偏移值字段名称字段大小字段取值说明0bLength1数字描述符的大小=07H1bDescriptorType1常数接口描述符的类型=05H2bEndpointAddress1端点USB设备的端点地址:Bit 0.3: 端点号Bit 4.6: 保留,复位为0Bit 7:方向,对于控制端点可以忽略0:OUT端点; 1:IN端点3bmAttributes1位图端点属性,当进行配置时采用以下的配置值Bit0.1 传输类型00 控制01 同步02

36、 批量03 中断其他位保留4wMaxPacketSize2数字本端点接受或发送的最大信息包的大小6bInterval1数字轮询数据传传送端点的时间间隔。 表2.6字符串描述符偏移值字段名称字段大小字段取值说明0bLength1数字描述符的大小1bDescriptorType1常数字符串描述符的类型2bStringN数字UNICODE编码字符串各个描述符的树状结构如图2.2所示:图2.2USB描述符层次结构所有的USB设备都有缺省控制管道,缺省控制管道的最大包长在描述表中得到了说明。设置描述表中包括设置与接口的定义,但其中不包括端点描述表。除了最大包长度信息外,缺省管道的特性由USB规范定义,并

37、且对所有的USB总线设备都一样4。2.5总线协议USB总线属一种轮讯方式的总线,主机控制端口初始化所有的数据传输。 每一总线执行动作最多传送三个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输运作的种类、方向,USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间

38、的USB数据传输,在主机和设备的端口之间,可视为一个通道。存在两种类型的通道:流和消息。流的数据不像消息的数据,它没有USB所定义的结构,而且通道与数据带宽、传送服务类型,端口特性(如方向和缓冲区大小)有关。多数通道在USB设备设置完成后即存在。USB中有一个特殊的通道缺省控制通道,它属于消息通道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。 事务预处理允许对一些数据流的通道进行控制,从而在硬件级上防止了对缓冲区的高估或低估,通过发送不确认握手信号从而阻塞了数据的传输速度。当不确认信号发过后,若总线有空闲,数据传输将再做一次。这种流控制机制允许灵活的任务安排,可使

39、不同性质的流通道同时正常工作,这样多种流通常可在不同间隔进行工作,传送不同大小的数据包5。2.6USB的枚举过程USB设备接入计算机后,设备需要经过初始化和枚举才能被计算机识别,初始化主要有MCU完成,而枚举是在计算机的控制下完成的。枚举过程如下:1、设备连接。USB设备接入USB总线。2、设备上电。USB设备可以使用总线供电,也可以使用外部总线供电。3、主机检测到设备,发出复位。设备连接到总线后,主机拉电阻检测到有新的设备接入,然后向端口发送一个复位信号。4、设备默认状态。设备要从总线上接收到一个复位的信号后,才可以对总线的处理操作作出响应。设备接收到复位信号后,使用默认的地址(00H)来对

40、其进行寻址。5、地址分配。当主机接收到有设备对默认地址(00H)响应的时候,就对设备分配一个空闲的地址。以后设备就只对该地址进行响应。6、读取USB设备描述符。主机读取USB设备描述符,确认USB设备的属性。7、设备配置。主机依照读取的USB设备描述符来进行配置,如果设备所需的USB资源得以满足,就发送配置命令给USB设备,表示配置完成。8、挂起。为了节省电源,当总线保持空闲状态超过3ms以后,设备驱动程序就会进入挂起状态。完成以上步骤后,USB设备即可以使用。在枚举过程中,设备不一定要求进入挂起状态。2.7USB主机接口及系统的功能从具体的USB主机的实现角度上来讲,在遵行USB协议1.0的

41、基础上,目前有2套工业标准:1、通用式主机控制器接口(简写成UHCI),由Inter公司提出。2、开放式主机控制器接口(简写成OHCI或Open HCI),由Compaq等公司提出。UHCI和OHCI实现USB主机的功能基本上是一样的。只是具体的实现过程有些不同,两者均由2部分组成,即主机控制器(Host Control,简写成HC)和主机控制器驱动(Host Control Driver,简写成HCD)。主机控制器更多的是面向硬件部分及其厂商,怪顶了主机控制器硬件与PC系统内存之间的接口、主机控制器在PCI总线上的接口定义、主机USB事务的各种功能模块以及提供给用户交互的各种寄存器定义等;主

42、机控制器驱动更多的是基于软件层次的标准,是USB协议栈与USB主机控制器硬件之间联系的接口,直接负责主机控制器硬件的配置和管理,一般这部分软件厂商提供。按照USB的规定以及USB系统的组成的需要,USB主机完成的主要功能包括以下几个方面:1、检测USB设备的连接和断开。通过USB电缆信号线的电平变换来实现该功能,并得到主机控制器的处理。2、管理主机和设备之间标准的控制管道。以保证端点0和缺损管道的正常通信。3、收集设备的状态,统计总线的活动。USB的总线上最多可以同时挂接127个设备,这么多的设备都要正常的工作,就是靠主机来进行管理的,同时主机会根据收集到的各种设备和总线信息来执行某些操作。4

43、、控制和管理主机控制器与设备之间的电器接口,包括为端口提供一点数量的电流1。2.8本章小结在本章中,简要的介绍了相关的USB1.0协议内容,根据本次课题设计的要求,重点介绍了USB体系,软硬件组成、编码方式与传输类型、总线协议以及主机系统功能等内容。它们是开发USB设备,进行通信的应用的基础。实际应用中,这里的大部分工作由控制器完成。第3章硬件特性及电路设计3.1单片机8051介绍本课题设计USB系统比较简单,单片机执行的功能不多,在确保实验功能的情况下,为了降低成本,因此选用性价比高的8051单片机。 MCS-51是Intel公司生产的一个单片机系列名称。属于这一系列的单片机有多种。8051

44、便是其中一种性价比高的单片机。8051单片机内部结构按其功能部件划分可以看出由8大部分组成的。这8大部分是: 1、一个8位中央处理机CPU。 2、128个字节的片内数据存储器RAM。3、4KB的片内程序只读存储器ROM或EPROM。4、18个特殊功能寄存器SFR。 5、4个8位并行输入输出I/O接口: P0口、 P1口、 P2口、 P3口(共32线), 用于并行输入或输出数据。 6、1个串行I/O接口。 7、2个16位定时器/计数器。 8、1个具有5个中断源, 可编程为2个优先级的中断系统。 它可以接收外部中断申请, 定时器/计数器中断申请和串行口中断申请。本课题选用的8051单片机芯片为40

45、个引脚,它是HMOS工艺制造的芯片,采用双列直插(DIP)方式封装。1、主电源引脚Vcc和Vss VCC(40脚):接+5V电源正端; VSS(20脚):接+5V电源地端。 2、外接晶体引脚XTAL1和XTAL2XTAL1(19脚):接外部石英晶体的一端。在单片机内部, 它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部时钟时,对于HMOS单片机,该引脚接地;XTAL2(18脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。3、控制信号或与其它电源复用引脚4、I/O口线引脚排列(1)

46、P0口8位、漏极开路的双向I/O口。当使用片外储存器及外扩I/O口时,P0口做为低字节地址/数据复线。在编程时,P0口可用于接收指令代码字节;在程序校检时,P0口可输出指令字节(这是需要外加上拉电阻)。(2)P0口也可作为通用I/O使用,变成准双向口。当作为普通输入时,应将输出锁存器置1。P0口可驱动8个TTL负载。P1口8位、准双口I/O,具有内部上拉电阻。 P1口是为用户准备的I/O双向口。在编程和校检时,可用做输入低8位地址;用做输入时,应先将输出锁存器置1;P1口可驱动4个TTL负载。 P1口的P1.0和P1.1具有替代功能。(3)P2口8位、准双向I/O口,具有内部上拉电阻。当使用片

47、外储存器或外扩I/O端口时,P2口输出高8位地址;在编程校检时,P2口可接收高字节地址和某些控制信号;P2口也可作为I/O口使用。用做输入时,应先将输出锁存器置1;P2口可驱动4个TTL负载。(4)P3口8位、准双向I/O口,具有内部上拉电阻。P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1;在编程校检时,P3口接收某些控制信号;可驱动4个TTL。P3口还提供各种替代功能。整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,8051设有

48、稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止6。3.2PDIUSBD12器件与微控制器的连接3.2.1PDIUSBD12功能描述PHILIPS公司推出的PDIUSBD12是一款性价比很高的USB器件。它通常用做微控制器系统中实现与微控制器进行通信的高速通用并行接口,而且还支持本地的DMA传输。PDIUSBD12完全符合USB1.0协议规范。PDIUSBD12所具有的低挂起功耗连同LazyClock输

49、出可以满足使用ACPI、OnNOW和USB电源管理的要求。低的操作功耗可以应用于使用总线供电的外设。1、PHILIPS串行接口引擎PSIE实现了全部的USB协议层,且完全由硬件实现而不需要固件的参与。该模块的功能包括:同步模式的识别,并行/串行的转换,位填充/解除填充,CRC校验/产生,PID校验/产生,地址识别和握手评估/产生。2、SoftConnect技术SoftConnect与USB的连接是通过1.5k上拉电阻将D+设置为高电平实现的。1.5k上拉电阻集成在PDIUSBD12片内,默认状态下不与电源相连,其连接的建立是通过外部/系统微控制器发送命令实现的。3、GoodLink技术Good

50、Link技术可以提供良好的USB连接指示。在枚举过程中,LED指示灯根据通信状况间歇闪烁。配置完成并装安驱动程序后指示灯将一直亮7。3.2.2PDIUSBD12管脚配置PDIUSBD12的管脚排列如图3.1所示: 图3.1PDIUSBD12管脚排列图3.2.3单片机与PDIUSBD12的连接单片机与PDIUSBD12的连接如图3.2所示:对上图中的电路说明如下:1、电路中使用A0作为命令数据选择位2、端点2使用批量传输(Bulk),所以DMACK_N和EOT_N接上拉电阻,否则,PDIUSBD12将不能接受任何数据;3、单片机外接晶振,所以PDIUSBD12的CLKOUT脚空;4、从图上可以看

51、出,当选择命令时,PDIUSBD12的地址为0xf1ff;当选择数据时PDIUSBD12的地址为0xf0ff;5、单片机使用P0口进行输入输出,由于P0是开漏的,所以,需要接上拉电阻,在电路中使用排阻;6、GL_N通过一个电阻和LED串接到VCC,在USB设备枚举期间,灯一直闪烁,当USB设备枚举成功后,灯会灭,安装完驱动程序后,灯一直亮着,传送数据期间,灯会闪烁;图3.2 PDIUSBD12与单片机连接图7、USB_D+,USB_D-线上的1M上拉电阻下拉电阻对实际没有什么影响,它们主要在噪声比较大的情况下,起到抗干扰的作用;8、采用总线供电,总开关S1负责电源的连接与断开,LED指示整个电

52、路是否有电。在这种方式下,确保电路的正确连接很重要,否则,容易损坏计算机4。在使用的同时,应注意一个问题。由于PHILIPS公司生产的PDIUSBD12芯片自身存在一个小小的问题,即当片选没有选中时它的第14角仍然会输出低电平的中断信号,由于它接单片机的P3.3,所以与矩阵键盘共用的P3.3口有冲突,使用PDIUSBD12芯片时请将该芯片左边的INT1两线柱短接。在不使用该芯片时不用接。3.3系统硬件设计3.3.1单片机电路设计单片机最小系统主要包括其供电系统,时钟电路和复位电路。本次单片机的系统供电电路和时钟电路都做了简化处理,单片机的系统复位电路采用手动复位。单片机电路如图3.4所示。对电

53、路说明如下:1、单片机采用外接晶振的方法,是外接晶振,频率为11.0592MHz;2、复位电路采用按键复位;3、PDIUSBD12使用单片机的外部中断0。在程序里将单片机和PDIUSBD12设置为相同的中断方式,即电平中断。然后由PDIUSBD12自动清除中断脚上的低电平,以便接受下次中断8。3.3.2外围电路设计本次课题的外围硬硬件系统资源包括:串口通信、6位动态数码显示、8位流水灯、蜂鸣器、4*4矩阵键盘、温度传感器、液晶显示器接口、PDIUSBD12芯片接口等。每个元件与单片机都有单独的电路连接,他们均以单片机为控制核心。使单片机能独立的控制每个元件的正常工作。再通过PDIUSBD12芯

54、片,USB接口,上位机能与单片机实现通信,上位机发送信息到单片机,单片机根据上位机信息控制外围电路的工作;外围设备发送信息到单片机,单片机反馈到上位机,在上位机的控制界面上显示状态信息。其整体框图如图3.5所示。根据整体框图,将每个分块电路设计成整体电路原理图,生成PCB图(见附录)。整个电路图的设计是在Protel 99的软件环境下完成的。图3.4 单片机电路上位机USB接口PDIUSBD128051单片机4*4矩阵键盘串口通信蜂鸣器8位流水灯液晶显示器6位动态数码显示温度传感器图3.5整体框图3.4本章小结本章介绍了单片机,PDIUSBD12芯片的基础知识,根据课题需求,重点讨论了PDIU

55、SBD12芯片在批量传输时与单片机的接法。外围硬件资源根据框图设计出实验电路图,这些电路是做出单片机实验板,上位机软件能够正确运行的基础。 第4章程序设计及调试4.1概述4.1.1集成开发环境Keil简介单片机开发中出必要的硬件外,同样离不开软件,我们写的汇编语言源程序要边成CPU可以执行的机器码有两种方法,一中是手工汇编,另一种是机器汇编,目前已经极少使用汇编的方法了。机器汇编是通过汇编软件将源程序变成机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普通使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也不断发展,Keil软件是目前最流行开发MCS-

56、51系列单片机的软件,这从近年来个仿真机厂商纷纷宣布全面支持Keil即可看出。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,同过一个集成开发环境(uVision)将这些部分组合在一起。另外重要的一点,只要看一下编译后生成的汇编代码,就能体

57、会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势9。4.1.2程序概述软件程序是固件编程。固件是FIREWARE的对应中文词,它实际上是单片机的程序文件,其编写语言可以采用C语言或是汇编语言.它的操作方式与硬件联系紧密,包括USB设备的连接USB协议、中断处理等,它不是单纯的软件,而是软件和硬件的结合,开发者需要对端口、中断和硬件结构非常熟悉。固件程序一般放入MCU中,当把设备连接到主机上(USB连接线插入插孔)时,上位机可以发现新设备,然后建立连接。因此,编写固件程序的一个最主要的目的就时让Windows可以检测和

58、识别设备。在设计USB系统的过程中,固件程序的编写是非常重要的一个环节,它直接影响到开发产品的数据传输速度。固件设计的目标就是使PDIUSBD12在USB上达到最大的传输速率。PDIUSBD12设计成完全的中断驱动。当CPU处理前台任务时,USB的传输可以在后台进行,这样就确保了最佳的传输速率和更好的软件结构,同时简化了编程和调试。后台ISR(中断服务程序)和前台主程序的循环之间的数据交换可以通过事件标志和数据缓冲区来实现,其原理如图所示:图4.1前后台工作原理对于这种结构,主循环不关心数据是来自USB,串口还是并口,其只检查循环缓冲区内需要处理的数据。这样,主循环可以专注于数据的处理,而IS

59、R能够以最大的可能的速率进行数据的传输10。固件程序采用51单片机的C语言进行编写,采用Keil开发环境。它的积木结构如图所示,图中的箭头表示数据的传输方向。 图4.2固件结构和数据流方向硬件提取层:对单片机的I/O口,数据总线等硬件接口进行操作。命令接口层:对PDIUSBD12器件进行操作的模块子程序集。中断服务程序:当PDIUSBD12向单片机发出中断请求时,读取PDIUSBD12的中断传输来的数据,并设定时间标志“EPPFLAGS”和Setup包数据缓冲区“CONROL_XFER”进行通信。标准请求处理程序:对USB的标准请求进行处理。厂商请求处理:对用户添加的厂商请求进行处理,这一部分

60、可选。主循环程序:发送USB请求,处理USB总线事件和用户功能处理等。固件程序的主要部分是前台的主循环(main.c)和后台的中断服务程序ISR,固件程序定义了两个重要的数据结构:事件标志(EPPFLAGS)和数据缓冲区(CONTROL_XFER),它们是主循环和中断服务例程之间的桥梁,两者之间的数据交换通过它们来实现。其任务分配为:ISR负责全部与PDIUSBD12的接口操作并更新这两个数据结构,如从PDIUSBD12收发数据,设置事件标志等;主循环负责初始化,处理位于数据缓冲区的数据,清除时间标志以及其他总线事务,如挂起、复位等。1、USB事件标志结构体 USB事件标志结构体,用符号定义了USB传送过程中事件标志位,并赋予初值,事件标志在运行中随状态的改变而改变,下面是事件标志:typedef union _epp_flagsstruct _flagsunsigned char bus_reset :1; /总线复位标志unsigned char suspend :1; /挂起改变标志unsigned char setup_packet :1; /收到SETUP包unsigned char remote_wakeup :1; /远程唤醒标志(未使用)unsigned cha

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!