电子毕业论文-基于USB总线的毕业设计与开发_第1页
电子毕业论文-基于USB总线的毕业设计与开发_第2页
电子毕业论文-基于USB总线的毕业设计与开发_第3页
电子毕业论文-基于USB总线的毕业设计与开发_第4页
电子毕业论文-基于USB总线的毕业设计与开发_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2013 届本科毕业设计(论文)绪 论USB(Universal Serial Bus)即通用串行总线。它是一种外围设备连接技术,它为 PC 机与其外围设备之间的连接提供了一种标准化,单一化的接口,是对计算机体系结构的一种工业标准扩展。随着通讯技术和计算机技术的不断地发展,传统的通信和计算机功能已经出现了融合趋势,并很有可能成为下一代应用产品的基础,思考如何实现计算机和通信设备的互连成为迫切的需要。在各方需求的推动下, 在 1994 年期间里面的时候,Intel,IBM,NEC,Microsoft,Northern Telecom 等世界著名的计算机和通讯公司成立了 USB 实施者论坛,此后花了近两年时间形成了统一的意见,于 1995 年 11月正式制定了 USB0.9 通用串行总线规范。1997 年出现了真正符合 USB1.1 技术规范的标准外部设备,USB1.1 支持 1.5Mbps 低速模式和 12Mbps 全速模式。1999 年,由Compaq、HP、Intel、Lucent、Microsoft、NEC 和 Philips 等公司制定了 USB 2.0 规范,在原来的 USB1.1 的 1.5Mbit/s 和 12Mbit/s 基础上增加了 480Mbit/s(60MB/s)的高速数据传输模式,同时支持带宽数字摄像设备及下一代扫描仪,打印机以及存储设备,使得 USB 的应用范围得到进一步扩大。Intel 公司开发的通用串行总线架构(USB)的目的主要基于以下三方面考虑:(一)计算机与电话之间的连接:显然用计算机来进行计算机通信将是下一代计算机基本的应用。机器和人们的数据交互流动需要一个广泛而又便宜的连通网络。然而,由于目前产业间的相互独立发展,尚未建立统一标准,而 USB 则可以广泛的连接计算机和电话。(二)易用性:众所周知,PC 机的改装是极不灵活的。对用户友好的图形化接口和一些软硬件机制的结合,加上新一代总线结构使得计算机的冲突大量减少,且易于改装。但以终端用户的眼光来看,PC 机的输入/输出,如串行/并行端口、键盘、鼠标、操纵杆接口等,均还没有达到即插即用的特性,USB 正是在这种情况下问世的。(三)端口扩充:外围设备的添加总是被相当有限的端口数目限制着。缺少一个双向、价廉、与外设连接的中低速的总线,限制了外围设备(诸如电话/电传/调制解调器的适配器、扫描仪、键盘、PDA)的开发。现有的连接只可对极少设备进行优化,对于 PC 机的新的功能部件的添加需定义一个新的接口来满足上述需要,USB 就应运而生。它是快速、双向、同步、动态连接且价格低廉的串行接口,可以满足 PC 机发展的现在和未来的需要。论文论述了利用单片机和 USB 接口芯片实现 USB 设备的设计过程,详细介绍2013 届本科毕业设计(论文)了 USB 设备的硬件和软件开发的技术细节,阐述了 USB 设备的设计过程和 USB 设备的特点。本文的重点在于系统硬件的实现,以及系统固件程序的开发过程。各章节的安排如下:第 1 章介绍了本论文的选题意义、系统实现功能和各章节安排。第 2 章介绍了 USB 技术,使读者对 USB 协议有了一定的了解。第 3 章介绍了系统硬件的设计方案,包括设备基本功能电路和扩展功能电路的设计与实现。第 4 章介绍了系统软件的实现过程,包括固件程序实现,以及运用 Win Driver 工具来开发驱动程序和应用程序,重点阐述了固件(单片机程序)的实现过程。第 5 章介绍了系统的调试过程,包括系统硬件测试和在软件工具下的系统调试。本论文介绍一种设计 USB 设备比较简单方便的方法,也就是设计一个用 51单片机和 USB 接口芯片组成的单片机最小系统,通过对单片机编程来实现与 PC机之间的通讯。2013 届本科毕业设计(论文)第 1 章 USB 发展概述1.1 引言随着微机技术水平的日益提高,传统的计算机接口已经不能满足当前计算机高速发展的需求,计算机业界迫切需要新的通用型、高速总线接口。通用外设接口标准 USB 应运而生。USB,全称为通用串行总线(Universal Serial Bus) ,它是 Compaq、IBM 等 PC 大厂商联合开发的一种新型的、基于令牌的、高速的串行总线标准。用 USB 接口来取代 PC 机现有的各种外围接口,使外围设备的连接具有单一化、即插即用、热插拔等特点。USB 作为一种新型的高性能外围接口,大大简化了 PC 机与外围设备的连接过程。随着微机技术的发展,USB 作为一种通用的接口标准必将得到广泛的应用。1.2 系统实现功能系统是一个人机接口设备(HID) ,主要完成的是 USB 设备的基本功能,即主机对设备的列举和中断方式的数据传输。这两点是 USB 设备所必须拥有的功能,可以称作 USB 设备的基本功能。设备主体由 AT89C51 和 PDIUSBD12 以及维持它们正常工作所必需的外围元件组成,设备主体接上主机之后,能够单独完成设备的识别和配置,并可以实现数据通信功能。为了丰富设备的功能,对系统还做了一定的扩充,还扩展了 8 位拨码开关输入和 8 位发光二极管 LED 输出,另外还实现以下设备功能:(1)简单的演示设备用于演示 HID 设备配置过程和中断传输方式下基本数据交换过程。(2)PS/2 接口扩展电路扩展 PS/2 接口,可实现将 PS/2 键盘和 PS/2 鼠标转换为 USB 设备使用。(3)Flash 存储器扩展利用 SamsungK9F2808 芯片(16MB 的 Flash 存储器芯片,数据字宽 8 位)扩展为移动存储器设备。(4)LPT 并行接口扩展保留了 LPT 并行接口,可用于并口打印机信号到 USB 打印机信号的转换或者其它类型的数据传输扩展。2013 届本科毕业设计(论文)以上几种扩展不可能同时实现,设备可在上电后由一个 2 位的拨码开关选择自己配置哪种设备。设备的系统结构框图如图 1-1 所示。图 1-1 设备系统结构框图1.3 USB 系统的描述(1)一个 USB 系统主要被定义为三个部分: USB 的互连; USB 的设备; USB 的主机。(2)USB 的互连是指 USB 设备与主机之间进行连接和通信的操作,主要包括以下几方面:总线的拓扑结构:USB 设备与主机之间的各种连接方式;内部层次关系:根据性能叠置,USB 的任务被分配到系统的每一个层次;数据流模式:描述了数据在系统中通过 USB 从产生方到使用方的流动方式;USB 的调度:USB 提供了一个共享的连接。对可以使用的连接进行了调度以支持同步数据传输,并且避免的优先级判别的开销。单片机控制器USB 接口芯片 Flash存储器芯片输入输出模块LPT 并行接口PS/2 串行接口2013 届本科毕业设计(论文)第 2 章 USB 技术2.1 USB 总线概述2.1.1 USB 总线简介USB(Universal Serial Bus)的中文含义是通用串行总线。早先的微机系统中,外设与CPU的连接存在接口标准各自独立、互不兼容、无法共享的问题,并且安装、配置也很麻烦。这不仅使外设日益多样化的发展趋势与系统(I/O端口、IRQ)有限性的矛盾更加突出,而且给用户对外设的连接和使用带来极大不便,因此,迫切需要新的通用型外设标准出台。为了实现整个计算机系统中总线的一致性,以Intel公司为主,并联合Compaq,Hewlett-Packard,Lucent,Microsoft,NEC以及Philips共七家公司共同开发的一种快速的、双向的、同步传输的并可以热拔插的新型通用串行总线,简称USB总线。2.1.2 USB 总线的优点随着各种类型的USB外设(如USB闪存盘、USB视频头、USB鼠标等)的陆续出现,USB通信的优点越来越广泛的被人们所熟知,将外设连接到计算机时,USB接口成为优先的选择,不管是使用外设的用户或是开发USB软硬件的设计者,USB都有让双方满意的特性。根据USB总线规范的定义,USB总线主要具有以下优点:(1)方便最终用户的使用电缆和连接器具有唯一的型号。对最终用户隐藏了电气细节,例如总线终结。设备自动识别,自动安装驱动程序和配置。支持动态接入和动态配置。2013 届本科毕业设计(论文)(2)工作负荷和应用范围广支持传输速率从几Kb/s至几Mb/s的设备。同一组总线上可以同时支持同步和异步传输类型。支持对多个设备的同时操作(多连接)。支持多达127个物理外设。支持在主机和设备间多个数据和消息流的传输。具有较小的协议开销,总线利用率较高。(3)同步带宽可以为外设提供确定的带宽和很小的时延。同步负荷可以使用总线上全部带宽。(4)灵活性可以有很多不同大小的分组,并允许在一定范围内选择设备的缓冲区。通过支持不同的分组缓冲区和时延要求,支持不同数据传输速率的设备。提供了用于控制缓冲区的流控功能。(5)稳定性协议中包含错误检测机制。支持动态接入和插出(热插拔)。(6)与PC工业协同作用符合PC即插即用体系结构。对现存操作系统接口产生极大影响。(7)成本低廉组件与电缆价格便宜。低速模式(l.5Mb/s)更加经济。利用了商用技术。(8)易于升级2.2 USB 协议简介2.2.1 USB 物理体系结构USB 总线设备以星型的拓扑结构实现与主机的物理连接,其物理拓扑结构如图 2-1 所示。USB 的接入点由集线器(Hub)来提供。这种由集线器提供的额外的接入点称为端口(Port)。主机中包含了一个嵌入的集线器,称为根集线器(Root hub)通过根集线器,主机可以提供一个或多个接入点。为主机提供附加功能的设备称为功能模块。为了防止出现环形接入的情况,在 USB 中使用了分层的拓扑结2013 届本科毕业设计(论文)构。这种配结构具有树行结构。通过使用集线器扩展可连接多达 127 个外设。复合设备根 HUB主机设备设备HUB设备 设备HUB设备 设备图 2-1 USB 物理总线拓扑结构USB的电缆有4根线,两根传送的是十5V电源,另外两根是数据线。其定义如表2-1所示。信号线的特性阻抗为9052,而信号是利用差模方式送入信号线的。利用这种差模传输方式,接收端的灵敏度可以达到不低于200mV。功率不大的外设可以直接使用USB总线电源供电,而不必外接电源,USB总线最大可以提供5V, 500MA电源,并支持节约能源的挂机和唤醒模式。表2-1 USB电缆信号定义编号 信号名称 颜色 注释1 VBUS 红色 电源线2 D- 白色 -数据3 D+ 绿色 +数据4 GND 黑色 地线2.2.2 USB 设备逻辑结构USB的设备可以分成多个不同类型,同类型的设备可以拥有一些共同的行为特征和工作协议,这样可以使设备驱动程序的编写变得简单一些。USB协议规范中定义了USB的设备类型,比如音频、通信、HID. HUB等设备类。USB设备的逻辑结构如图2-2所示,USB设备的物理连接不影响这个逻辑视图。每个USB设备内有一个或多个逻辑连接点,称为端点(Endpoint),每个端点指定2013 届本科毕业设计(论文)下面的传输类型之一:控制传输、中断传输、块传输和等时传输。在USB协议规范中用4位地址标识端点地址,每个设备最多有16个端点。所有设备都有一个端点0传输,用于配置和控制各设备。图 2-2 USB逻辑结构管道(Pipe)实现了在主机的一个内存缓冲区和设备的端点之间的数据传输,主机USB系统软件和设备的端点0之间的连接称为缺省管道。管道是具有多个特征的信道,如带宽分配、包大小、管道类别以及数据流向。管道分为流管道(Stream Pipe)和消息管道(Message Pipe)。流管道传输的数据包的内容不具有USB要求的结构,它是单向传输的;流管道支持批量、等时和中断传输方式。而消息管道与流管道具有不同的行为。首先,由主机发请求给USB设备,然后在适当的方向上传输数据,最后是到达一个状态阶段。为了保证三个阶段的数据传输,消息管道定义了一个数据结构使命令可靠地被识别和传输。消息管道是双向的,它只支持控制传输方式。一个设备对主机表现为一组合适的端点,一组相关的端点称为一个接口,有多个接口的设备称为组合设备。最后,设备可以有多组接口。每一组称为一个配置,一次只能有一个配置是活动的。但是,当前配置中的所有接口(和它们的端点)可以同时是活动的。大多数的设备只有一个配置和一个接口。主机从设备读取各种描述符,了解有什么配置、接口和端点可用。当设备第一次使用缺省管道插入时,主机读取这些描述符。主机操作系统要为发现的每个配置或接口建立内核设备。2013 届本科毕业设计(论文)2.2.3 USB 传输类型在USB级,设备可以使用4种不同的传输类型通信:控制传输、中断传输、批量传输和等时传输。如果从头设计一个USB设备,必须决定那些传输类型是合适的。(1)控制传输:主要用于命令袱态操作,由主机软件发起的请求/响应通信过程,具有突发性,非周期的特点。任何一个USB设备都必须支持与一个控制传输类型相对应的端点0。(2)中断传输:单向的并且对于主机来说只有输入的通信方式。主要用于定时查询设备是否有中断数据要传送,用来支持那些偶然需要少量数据通信,但服务时间受限制的设备。键盘,鼠标和游戏杆都属于这种类型。(3)批量传输:主要用于没有带宽和间隔时间要求的大量数据的传送和接收。它具有非周期和突发性强等特点。它并不能保证传输的速率,但可以保证传输的可靠性,出现错误的时候会要求发送方重发。打印机和扫描仪属于这种类型。(4)同步传输:主要用于主机和设备与时间有关的信息传输,具有周期性、连续性等特点。它要求有一个恒定的速率。例如进行语音业务传输时,使用等时传输方式是很好的选择。2.2.4 USB 低层通信协议USB协议定义串行数据线路上发生的动作。可用的数据传输时间(带宽)被划分成帧,每个帧lms长,一个全速的数据帧最多含有1500字节,而对于低速的帧最多含有187字节。(1)包在串行线路上传输的最小数据块是包,它仅沿一个方向发送,要么来自主机,要么发送给主机。一个包通常由同步信号、包标志(PID)、地址、传送的数据和CRC等组成。PID由8位组成,其中后4位是纠错位。有4类10个PID如表2-2所示。2013 届本科毕业设计(论文)表2-2 PID类型2013 届本科毕业设计(论文)(2)事务事务是主机和一个设备之间使用一个或多个包的离散交互。一个事务通常由主机开始,一般分三个阶段,第一阶段发送令牌(token)包,第二阶段发送是PID类型 PID名 PID3:0 描述输出(OUT) 0001B在主机到功能部件的事务中有地址+端口号输入(IN) 1001B在功能部件到主机的事务中有地址+端口号帧开始(SOF) 0101B 帧开始标记和帧号标记(Token)建立(SETUP) 1101B在主机到功能部件建立一个控制管道的事务中有地址+端口号数据0(DATA0)0011B 偶数据包PID数据(DATA) 数据1(DATA1)1011B 奇数据包PID确认(ACK) 0010B 接收器收到无错误数据包不确认(NAK) 1010B接收设备部不能接受数据,或发送设备不能发送数据握手(Handshake)停止(STALL) 1110B端口挂起,或一个控制管道请求不被支持。专用(Special) 前同步(PRE) 1100B主机发送的前同步字。打开到低速设备的下行总线通信。2013 届本科毕业设计(论文)数据(data)包(可以沿任何一个方向发送),在数据包传送完之后,就会由设备返回一个握手(handshake)包。(3)帧开始(SOF)SOF包由主机发送,指示一个帧的开始。这个包包括一个11位的帧号,这个帧号从0到Ox7FF连续变化,并重新折回0,SOF包被所有高速设备看到。像任何其它包一样,SOF包可能被破坏。(4)事务包结构控制传输涉及主机给设备发送一个SETUP包、任一方向的0个或多个DATA包以及一个握手包。IN包或OUT包开始所有其它的传输。设备端点的定义确定它是中断传输、块传输还是同步传输。主机定时启动中断传输,看设备端点是否有任何数据可用。设备端点可以返回数据。另外,设备可能发送NAK,指示没有可用的数据,或者状态没有改变。2.3 USB 接口技术在进行一个USB设备开发之前,首先要根据具体使用要求选择合适的USB控制器。实现USB设备与计算机之间的接口连接,通常的做法有以下的两种:一种是采用分离的USB接口芯片和微处理芯片。USB接口芯片,是指芯片厂商生产的可以用单片机控制的,带有USB电气接口,并完成将USB总线中的物理信号同单片机可以识别的TTL电平信号之间相互转换的接口芯片。USB接口芯片常见的有PHILIPS的PDIUSBD11(I 2C接口),PDIUSBD11A,PDIUSBD12(并行接口),National Semiconductor的USBN9602,USBN9604等。接口芯片作为单片机的外围器件与单片机及单片机的其它外围电路共同组成的USB设备。采用这种结构开发USB设备成本较低,可靠性高。另一种就是采用带有USB接口电路的单片机,这种单片机的芯片上集成了USB接口电路,可以直接处理USB传输线上的数据。如Intel的8X930AX,CYPRESS的EZ-USB,SIEMENS的C541以及MOTOLORA,National Semiconductors等公司的产品。采用这种结构的设备外围电路简单,设计方便,周期短,但这些要采用专业的开发设备,且投资高。因此,选择的方案是AT89C51单片机控制器和PHILIPS推出的USB接口芯片PDIUSBD12。单片机控制器作为下位机,通过USB接口芯片和USB总线与PC机交换数据,并实现USB设备的逻辑功能。2013 届本科毕业设计(论文)第 3 章 系 统 硬 件 电 路 设 计3.1 设备电路系统概述USB 设备的硬件通常是由处理器和接口电路实现组成。本系统实际上是AT89C51 和 PDIUSBD12 单片机组成的单片机系统。其核心就是单片机控制器,它负责完成设备所有的控制功能;USB 接口芯片和其它输入输出模块作为单片机的外围部件挂接在系统总线上,所有器件在单片机的控制下协同工作。在设备电路中,真正起到 USB 设备实质作用的只有单片机和 USB 接口芯片,所以本系统的重点也是 AT89C51 单片机和 PDIUSBD12 接口芯片组成的单片机系统。 3.2 51 单片机最小系统单片机采用 51 系列兼容的 AT89C51 单片机。单片机控制器部分的电路原理图如图 3-1 所示。图中单片机的 P0 口接 8 位 D 锁存器 74LS373 后,引出地址总线 A0A7,本系统中外部空间的高 8 位地址没有使用,故不再列出; P0 口引出的 AD0AD7 本为地址/数据分时复用总线,在这样连接之后就不可以考虑地址出现的时间,只用做数据总线;单片机接外部振荡时钟源,由 PDIUSBD12 提供,这是因为 D12 可以外接 6MHZ 石英晶振,在内部用锁相环(PLL)倍频产生高频时钟,并通过编程产生 4MHZ 至 48MHZ 时钟输出提供给单片机,这种方式比较灵活,而且也为 USB 接口芯片减小了相应的高频电磁干扰。2013 届本科毕业设计(论文)图 3-1 AT89C51 和外围器件在构建最小系统的同时,为了方便调试,还为单片机扩展了 8 位 LED 输出和8 位拨码开关控制的电平输入,分别接在 AT89C51 的 P1 口和 P2 口上,LED 可备调试设备固件程序时使用。LED 输出直接通过 1K 上拉电阻排接到+5V 电源上,以低电平驱动;拨码开关输入则由于与 LPT 并口接口扩展有冲突,没有直接连接在单片机 P2 口上,而是通过 74LV245 三态门缓冲器连接三态门作为总线开关,它的使能端由单片机的 P3.4 口控制,即在使用这一模块时限制了模式选择开关的低位应为低电平。3.3 PDIUSBD12 外围电路及其与单片机的连接设计3.3.1 PDIUSBD12 介绍(1) PDIUSBD12简介PDIUSBD12是一款性价比很高的 USB器件。它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口。它还支持本地的DMA传输。PDIUSBD12完全符合USB1.1版的规范。它还符合大多数器件的分类规格:成像类,海量存储器件,通信器件,打印设备以及人机接口设备。同样,PDIUSBD12理想地适用于许多外设,例如:打印机,扫描仪,外部的存储设备(Zip驱动器)和数码相机等等。它使得当前使用SCSI的系统可以立即降低成本。PDIUSBD12所具有的低挂起功耗连同 Lazy Clock输出可以满足使用ACPI, On NOW和USB电源管理的要求低的操作功耗可应用于使用总线供电的外设。此外它还集成了许多特性包括SoftConnet TM,GoodLink TM,可编程时钟输出,低频晶振和终止寄存器集合。(2) PDIUSBD12的特性 符合通用串行总线USB 1.1版规范 高性能USB 接口器件集成了SIE FIFO存储器收发器以及电压调整器 可编程的时钟频率输出 可与任何外部微控制器/微处理实现高速并行接口2M字节/秒 主端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输 内部上电复位和低电压复位电路 具有高错误恢复率(99%)的全扫描设计确保了高品质 在批量模式和同步模式下均可实现1M字节/秒的数据传输速率2013 届本科毕业设计(论文) 双电源操作 或扩展的5V电源,范围为3.65.5VV3.0 多中断模式实现批量和同步传输(3) PDIUSBD12芯片功能框图及其说明芯片内部结构框图如图3-2所示。图 3-2 PDIUSBD12芯片内部结构框图 模拟收发器集成的收发器接口可通过终端电阻直接与USB电缆相连。 电压调整器片内集成了一个3.3V的调整器用于模拟收发器的供电。该电压还作为输出连接到外部1.5k的上拉电阻。可选择PDIUSBD12 提供的带1.5k内部上拉电阻的软件连接技术。 PLL片内集成了6M到48M时钟乘法PLL。这样就可使用低成本的6M 晶振。EMI也随之降低。PLL的工作不需要外部元件。 位时钟恢复位时钟恢复电路使用4X过采样规则,从进入的USB数据流中恢复时钟。它能跟踪USB 规定范围内的抖动和频漂。 Philips 串行接口引擎 PSIEPhilips SIE实现了全部的USB协议层。完全由硬件实现而不需要固件的参与。该模块的功能包括:同步模式的识别,并行/串行转换,位填充 /解除填充,CRC校验/ 产生,PID校验/产生,地址识别和握手评估/ 产生。 SoftConnect TM2013 届本科毕业设计(论文)与USB的连接是通过1.5k上拉电阻将D+(用于高速USB器件)置为高实现的。1.5k上拉电阻集成在PDIUSBD12 片内,默认状态下不与VCC 相连。连接的建立通过外部/系统微控制器发送命令来实现。这就允许系统微控制器在决定与USB建立连接之前完成初始化时序。USB 总线连接可以重新初始化而不需要拔出电缆。PDIUSBD12在连接可以建立之前会检测 VBUS是否可用。VBUS可通过EOT_N管脚进行检测。 GoodLink TMGoodLinkTM技术可提供良好的USB连接指示。在枚举中,LED指示根据通信的状况间歇闪烁。当PDIUSBD12 成功地枚举和配置后,LED指示将一直点亮。随后与PDIUSBD12之间成功的传输(带应答)将关闭LED,处于挂起状态时,LED将会关闭。该特性为USB 器件,集线器和USB 通信状态提供了用户友好的指示。作为一个诊断工具,它对隔离故障的设备是很有用的。该特性降低了现场支持和热线的成本。 存储器管理单元MMU和集成RAM在以12M/s的速率传输并与微控制器并口相连时,MMU 和集成RAM作为USB之间速度差异的缓冲区。这就允许微控制器以它自己的速率对USB信息包进行读写。 并行和DMA接口一个普通的并行接口定义成易于使用,快速而且可以与主流的微控制器直接接口。对一个微控制器而言,PDIUSBD12 看起来就像一个带8位数据总线和一个地址位(占用2个位置的)存储器件。PDIUSBD12支持多路复用和非复用的地址和数据总线。还支持主端点与本地共享RAM之间直接读取的DMA传输。支持单周期和突发模式的DMA传输。(4) PDIUSBD12引脚极其功能芯片引脚如图3-3所示,表3-1定义了芯片的引脚。2013 届本科毕业设计(论文)图3-3 PDIUSBD12引脚图表3-1 PDIUSBD12的引脚定义管脚 符号 类型 描述1 DATA0 IO2 双向数据位02 DATA1 IO2 双向数据位13 DATA2 IO2 双向数据位24 DATA3 IO2 双向数据位35 GND P 地6 DATA4 IO2 双向数据位47 DATA5 IO2 双向数据位58 DATA6 IO2 双向数据位69 DATA7 IO2 双向数据位710 ALE I地址锁存允许。在多路地址/数据复用总线系统中,ALE下降沿用于锁存地址;在独立地址/数据总线系统中,ALE应一直接地。11 CS_N I 片选(低电平有效)12 SUSPEND LOD4 芯片进入挂起状态13 CLKOUT O2 可编程时钟输出14 INT_N OD4 中断输出(低电平有效)15 RD_N I 读使能(低电平有效)16 WR_N I 写使能(低电平有效)2013 届本科毕业设计(论文)17 DMREQ O4 DMA请求18 DMACK_N I DMA响应(低电平有效)19 EOT_N I DMA传输结束(低电平有效)20 RESET_N I异步复位(低电平有效)。片内有上电复位电路,此脚可以一直接高电平21 GL_N OD8 GoodLink LED指示22 XTAL1 I 晶振连接123 XTAL2 O晶振连接2。使用外部振荡源连接1时,此脚悬空24 Vcc P电源(4.04.5V)如果工作在3.3V电源下,此引脚和Vout3.3一起接3.3V25 D- A USB数据线D-26 D+ A USB数据线D+27 Vout3.3 P 3.3V输出28 A0 I地址位。1选择命令,0选择地址。多路复用地址/数据总线配置时,接高电平。3.3.2 USB 外围电路及其与单片机连接D12与51单片机的连接非常简单,可以参照图3-4。图中,ALE接为低电平表示一个独立的地址和数据总线配置PDIUSBD12的A0脚与C51的任意一个I/O 口相连。该端口控制PDIUSBD12的命令和数据状态。C51的多位地址和数据总线可直接与PDIUSBD12的数据总线相连。2013 届本科毕业设计(论文)图3-4 PDIUSBD12与单片机的连接D12可以选择5V和3.3V两种电源电压供电。使用5V电源供电时,要在Vout3.3输出引脚接10F和0.1F的去耦电容,Vcc接5V;使用 3.3V电源供电,需要把Vcc和Vout3.3两脚都接3.3V,设备选择的是5V电源供电。 D12与单片机连接时可以给它加接6M的石英晶体,单片机的外部时钟则由D12 的CLKOUT引脚提供,时钟输出的频率为12M。3.4 扩展功能电路的设计系统基本功能电路设计完毕以后,可以再对系统进行扩展。扩展单片机系统具体来说,就是以扩展存储空间的方式,给每个外围器件分配一个或者多个地址,即将单片机最小系统的地址总线按一定的规律译码,使得某些特定的地址组合时器件的片选有效,同时外围数字器件就能够在单片机的控制下与单片机通信。图1-1的电路原理图中可以清楚看到设备的单片机系统的构成,几个外围器件的数据端口都接在单片机系统的数据总线上,读/写使能信号也接在一起,而它们的片选端有效则由不同的地址组合确定。 2013 届本科毕业设计(论文)3.4.1 PS/2 串行接口的扩展设计PS/2接口扩展可用于连接传统的PS/2接口键盘或者鼠标,在单片机中使软件的方法,使设备整体在逻辑上被主机认为是一个USB接口的键盘或者鼠标,并且能够正常工作。PS/2口引脚定义如表3-2所列。表3-2 PS/S接口引脚定义引脚 1 2 3 4 5 6功能 未定义 Vcc 未定义 Data Gnd ClkPS/2接口中有定义的引脚只有4个,其中包含两条电源和地,另外2条Data和Clk上传输的TTL电平信号,可以直接用单片机来处理。Data和Clk被接在AT89C51的P3.0和P3.1端口上,这两个端口也可以用做串行通信口RXD和TXD,但是由于PS/2接口信号是类似I 2C总线信号的形式工作的,不能与AT89C51单片机的串行口直接兼容,所以此系统中不使用单片机的串行通信功能,而是把P3.0与P3.1两个引脚作为普通输入输出端口。补充一点:硬件上键盘的PS/2接口与鼠标的PS/2接口实际上有区别,就是PS/2鼠标一侧,Data和Clk两个端口都是集电极开路OC输出,而在主机的PS/2鼠标接口上Data和Clk两条线与Vcc之间都加了10K的上拉电阻,这样PS/2鼠标的Data和Clk在主机不干预的情况下会直接浮为高电平;而键盘则不是OC输出,主机的键盘接口一侧也没有上拉电阻。虽然PS/2接口存在这样不一致的情况,但是AT89C51单片机的P1P3端口内已经集成了上拉电阻,所以不需要在硬件上对此分别考虑。3.4.2 Flash 存储器的扩展设计为实现Flash移动存储器的功能,扩展了一块容量为16M8字节的FlashE2PROM芯片Samsung K9F2808。该Flash芯片采用NAND技术集成,与传统的NOR技术相比性能优越、集成度非常高,所以才能以低廉的成本获得大的容量。该芯片允许一百万次以上的编程和擦除,并能保持数据、达10年以上。且有硬件数据保护机制,防止误操作引起的数据丢失。由于考虑到单片机编程方便和USB总线供电等因素,系统电路板的主要部件2013 届本科毕业设计(论文)都使用了5V电源,而2808要求2.73.6 V电源供电。为了给2808供电,附加了电压转换芯片CM1117,将5V电源电压转换为3.3V。如图3-5所示。图3-5 电压转化电路2808除了16M8字节的存储空间外,还集成了512K8字节的备用空间,可以用作存放数据校验等冗余信息,以保证数据存放的可靠性。对于51单片机,2808最突出的特点在于它是针对8位微处理器设计的。对于一般的51系列单片机,它的地址总线只有16位,也就是说最多只能寻址到64KB空间。2808解决8位微处理器的这个局限是用了以下的方法:不再像传统的存储器那样采用分离的外部地址总线和外部数据总线,数据总线用来寻址存储器内部的数据空间,而是通过内部的一个控制逻辑,分时地从8位数据口输入命令、地址和数据,并以外部引脚片选和地址有效分3次送出24位地址,这样就使16位数据总线和8位数据总线的51单片机可以轻松地寻址到16M字节空间。图3-6是K9F2808部分的电路原理图,nCE、CLE、ALE以及附加的74LV245三态缓冲器的nE和DIR分别受到来自地址总线的A0、A1、A2、A4的控制。这样连接使得以2808为主的这个Flash存储器模块有如以下的地址分配:2808的命令口(只写):21h; 2808的地址口(只写):22h;2808的数据口(读):24h; 2808的数据口(写):20h。2013 届本科毕业设计(论文)图3-6 Flash存储器模块电路原理图3.4.3 LPT 并行接口的扩展设计电路也扩展了LPT并行接口,其引脚定义按照LPT打印机的接口定义预先连接了地线,其它引脚D0D7,nStrobe,nACK,Busy,Pe,Sel,nAutoFd,nError,nInit和nSelIn分别连接在单片机的P0口,P2口,P3.3口上,如图3-7 所示。由于LPT模块与基本模块的8位拨码开关输入模块共用P2口,所以在使用LPT模块时,应禁止拨码开关模块的输入,这里是通过模式选择开关S1的低位接在用做总线开关的74LV245上的,故使用LPT模块时应保证该位为高电平。同时,由P0向LPT接口的D0D7读/写数据时,由于同在系统总线上的D12和2808并不会受到影响。P2口和P3.3口按端口读/写的方式以及LPT并行接口的定义读/写接口的每一位。2013 届本科毕业设计(论文)图3-7 LPT并行接口的连接LPT接口模块除了可以用做打印机扩展之外,还可以重新定义它的引脚功能作其他数据传输之用,前提是单片机固件中相应的描述符要更改为打印机之外的其它设备。系统整体电路图见附录1所示2013 届本科毕业设计(论文)第 4 章 系统软件设计硬件开发完了之后,如果没有软件的支持,USB 设备不能实现任何功能,本章介绍系统的软件设计。本系统的软件设计包括三个大的方面:固件(Firmware) 、WDM 客户驱动(主机操作系统上的客户驱动程序)以及主机应用软件。主机应用软件通过客户驱动程序与设备进行通信,由设备产生 USB 数据的传输动作;固件则响应各种来自设备的 USB 标准请求,完成各种数据的交换工作和事件处理。其中,USB 设备中单片机控制器的固件程序的设计与实现是本章的重点。4.1 固件程序的设计与实现所谓固件(单片机程序)即固化在程序存储器中的那些程序代码,固件程序是用户命令转化为电路中电信号的解释器,也是数据传输的中转器,固件是系统的核心,也是系统硬件的灵魂。本系统的固件存储在 AT89C51 的 Flash Memory中,固件程序的编写用的是 C51 语言,都是以 51 单片机程序为基础的。4.1.1 描述符USB 的描述符定义了关于设备的各种信息,描述符是一种预定义的数据结构,每一个描述符的第 1 个字节都是该描述符的总字节数长度,第 2 个字节则为该描述符自身类型的标识。其中,设备描述符(device descriptor) ,配置描述符(configuration descriptor) ,接口描述符(interface descriptor)和端点描述符(endpoint descriptor)为每个 USB 设备所必须有的,字符串描述符( string descriptor) ,各设备类不同的类描述符(class descriptor)及报告描述符(report descriptor)则可以根据不同的设备进行添加或删减。在系统固件文件中,定义了系统所使用的各种 USB 描述符,它们的定义和作用如下:(1)设备描述符设备描述符是设备接入主机之后向设备要求的第一个描述符。设备描述符包含了设备的基本信息,包括数据传输时设备遵守 USB 规范的版本、数据封包大小,以及设备包括的若干特定字符串描述符和配置描述符。(2)配置描述符配置描述符向主机报告设备的配置信息,包括设备供电方式、最大电流等属2013 届本科毕业设计(论文)性,并指定了一个配置包含的接口数。对每个设备而言,可能会有一个或多个配置类型,其配置的数目由设备描述符的最后一个字段 bNumConfigurations 所设定的。(3)接口描述符接口描述符用来描述设备的接口,指明接口的类型和遵循的传输协议等属性。对一个设备的配置来说,可能是一种或多种接口类型,其接口的数目是由配置描述符的 bNumInterface 字段指定的。(4)端点描述符号端点描述符用来描述端点的属性以及各个端点的位置,包含此端点的传输方向、传输类型以及传输率等信息。每一个接口可能对应一个或多个端点,其端点数目由接口描述符的 bNumEndpoints 字段设定。(5)类(HID)描述符类描述符的作用是告诉主机设备的类相关特性,它根据具体设备类的不同而不同。(6)报告描述符报告描述符是 USB 中最复杂的描述符。报告描述符定义了设备传送给主机和主机发送给设备的数据格式,并且告知主机该如何处理数据。在一个报告描述符中必须有以下项目:输入(input) 、输出(output) 、特性(feature)或集合(collection) ;用途(usage) ;用途页(usage page) ;逻辑最大值(logical maximum) ;逻辑最小值(logical minimum) ;报告长度(report size) ;报告记数值(report count) 。(7)字符串描述符字符串描述符的结构非常简单,它以文字形式存放了设备的一些说明信息。对很多 USB 设备来说,字符串描述符都不是必须的,但是字符串描述符的使用有助于提高设备界面的友好性。4.1.2 固件程序的结构(1) 固件结构概述本系统的核心为 AT89C51 单片机,所以固件程序的编写都是以 51 单片机程2013 届本科毕业设计(论文)序为基础的。从单片机的角度看,固件程序的结构包括两部分,即主程序和中断子程序。主程序完成的工作是上电初始化 PDIUSBD12、给全局变量置初值、初始化中断系统,初始化完成之后进入死循环,等待 D12 的中断信号。中断子程序只包括由 D12 触发的 INT0 外部中断,电平方式触发,单片机的其它中断都是被禁止的。单片机初始化的最后一步将 D12 的 SoftConnect 功能打开,从这时起,主机才能检测到设备的接入。初始化完成之后,主循环实际上不再参与 USB 通信,而只是做无用的死循环或设备的其他功能操作。每次 PDIUSBD12 接口芯片检测到 USB 总线上主机发给这个设备的信号时候就触发一次单片机的外部中断。中断处理子程序要做的工作就是首先 D12 读取中断信息,查看 D12 收到了什么样的封包,然后根据主机的不同要求做出响应。中断程序所做的工作应该包括对每个包的接收清除中断标志,以使 D12 能够触发下一次中断。设备固件程序结构图如图 4-1 所示。图 4-1 设备固件功能结构图(2) USB 电气接口驱动(D12.C )USB 电气接口驱动(D12.C)实现的功能是与 PDIUSBD12 接口芯片之间的通信。源文件实现 4 个函数:d12comm()、d12read() 、d12write() 和 d12delay() 。d12comm( )函数的原型为 void d12comm(unsigned char comm.),实现的功能是向 D12 接口芯片的命令口写一个字节的命令字。D12 芯片的命令端口地址在本系统中为 0x11,定义为 unsigned pdata D12_COMM_at_0x11,在 D12.H 头文件中有定义。该端口为只读。d12read( )函数的原型为 char d12read(void),实现的功能是从 D12 接口芯片的数据口读一个字节的数据字。D12 芯片的数据端口地址在本系统中为 0x10,定义主程序 中断处理程序USB 协议USB 电气接口驱动扩展功能2013 届本科毕业设计(论文)为 unsigned char volatile D12_DATA_AT_0X10,在 D12.H 中定义。d12write( )函数的原型为 void d12write(unsigned char dat),实现的功能是向D12 接口芯片的数据口写一个字节的数据字。D12delay()函数的原型为 void d12delay(void),它的功能是在两次对 D12 芯片的操作间加入一定的延时,这个函数只能在上面 3 个函数中使用。D12 芯片要求在写命令端口的操作与读数据端口或写端口的操作之间至少 600ns 以上的延时,否则芯片工作结果不正确。一般将这个延时控制在 10ms 左右。(3) 主程序主程序(MAIN.C)完成的任务有设备上电后的初始化工作和主循环。在只实现基本 USB 设备功能的本系统中,目前单片机的外部器件中只需要对 D12 进行初始化。D12 一共有 4 条初始化的指令:设置地址/使能(set address/enable) 、设置端点/使能(set endpoint/enable ) 、设置模式(set mode )以及设置 DMA(set DMA)。说明:上电后默认地址为 0,暂时不需要改动,一般在收到设定地址的要求时再使用;SoftConnect 为断开状态,即这时主机检测不到设备的接入,需软件设置 SoftConnect 为连接状态后主机才能检测到设备接入;初始时钟输出为 4 M Hz,本系统要求的系统时钟为 12 M Hz 或 24 M Hz;而设置 DMA(set DMA)指令只要在设备内部的 D12 和存储器间使用 DMA 才会用到,本系统不用。所以,本系统上电时唯一需要用到的初始化指令是设置模式(set mode) 。以下是初始化D12 的 C51 语句:d12comm(0xf3);d12write(0x16);d12write(0x43);d12comm(0xf3)表示向 D12 的命令端口写字节 0xf3(即 set mode 的命令字) ,接着通过 d12write()函数向 D12 的数据端口写 2 个字节的数据 0x16 和 0x43,分别表示使 SoftConnect 状态变为连接以及更改 D12 对单片机的时钟输出为 12M Hz。(4) 中断处理程序本系统的中断处理程序(ISR.C)流程如图 4-2 所示。程序在进入中断处理函数入口后,先要读 D12 的中断状态寄存器(指令 F4) ,从读出的第 1 个状态字来判断引发这一次中断的是哪一个端点的哪一类传输(读中断状态寄存器的指令返回值的定义见表 4-1 所列) 。2013 届本科毕业设计(论文)图 4-2 中断处理程序流程图表 4-1 读中断寄存器返回值位 7 6 5 4 3 2 1 0初始值 0 0 0 0 0 0 0 0说 明挂起状态改变总线重置端点 2输入端点 2输出端点 1输入端点 1输出控制输入控制输出本系统设备中,固件程序只须处理端点 0 的输出和输入要求就可以完成设备的正常配置和基本工作。在图 4-2 中,SOF 包和总线重置的处理程序都是自定义的部分,是为了更好地配合设备工作而添加的代码,与设备的实质没有太大关系;而挂起状态改变引起的中断在这里不需要做处理;由于 USB 的数据传输都是由D12 自动完成,端点 1 和 2 的输出/输入中断处理就没有什么实质内容。注意:在对端点 0、1 和 2 的输出/输入引发中断的处理时,必须要做这样一步操作:读上次传输状态寄存器(4045) 。通过这条指令清除相应端点的中断状态,表示已读此端点,只有这样 D12 向单片机的中断请求才会撤除,否则单片机将不得不持续中断状态(中断方式为电平出发) 。所以,中断处理程序的功能就是从端点 0(控制端点)输出得到主机的各项设备要求,把设备要求发送 USB 协议层译码,得到相应的描述符,再把描述符

温馨提示

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

评论

0/150

提交评论