工程设计报告

  • 1.51 MB
  • 17页

工程设计报告

  • 17页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'工程设计报告设计题目:PS2转USB鼠标接口实现方法探讨学院:电子工程学院专业:电子信息工程班级:020912学号:02091168学生姓名:张海军电子邮件:790457264@qq.com时间:2012年11月成绩:指导教师:余柏生刘清华 西安电子科技大学电子工程学院工程设计(报告)任务书学生姓名张海军指导教师余柏生刘清华职称高工讲师学生学号02091168题目PS2转USB鼠标接口实现方法探讨任务与要求任务:对用51单片机PS2转USB鼠标转接器进行探讨,具体要求如下:1.AT89C2051单片机和PDIUSBD12实现USB与PS2数据转换的实现方案进行探讨,提出合理实现方法;2.用单片机控制USB接口芯片实现USB枚举,单片机与PS2鼠标通信;3.自行收集与设计题目内容有关资料,进行综合,设计出系统方案保证作品的简单化、先进性、实用性和创新性;4.完成上述任务算法设计和工程设计论文一篇。开始日期2012年11月1日完成日期2012年11月25日课程设计所在单位电子工程系2012年11月1日 摘要本文介绍了USB工作原理PS2鼠标接口的工作原理,提出了基于PS2接口的三键滚轮鼠标为单片机输入,由单片机控制的USB接口芯片的USB接口为输出的PS2到USB转接方案。关键词:PS2鼠标单片机USBAbstractThisarticledescribestheworkingprincipleofthetheUSBworksPS2mouseinterfaceisproposedbasedonthethree-buttonwheelmousePS2interfaceforthemicrocontrollerinput,USBinterfaceUSBinterfacechipcontrolledbymicrocomputerprogramfortheoutputofthePS2toUSBadapter.Keywords:PS2mousemicrocontrollerUSB 目录一.概述………………………………………………………………1二.任务研究工作中涉及的理论基础的介绍…………………………1三.系统工作任务及工作指标介绍……………………………………5四.系统组成及工作原理介绍…………………………………………5五.主要硬件电路设计及讨论…………………………………………6六.系统软件工作任务及软件工作流程介绍…………………………6七.主要软件功能模块讨论…………………………………………8八.结束语………………………………………………………………12 概述一·概述鼠标价格低廉、方便高效,目前已经成为计算机系统不可或缺的输入设备,然而关于鼠标在单片机系统中使用的相关文献报道甚少。事实上,目前适合单片机使用的各种规格的液晶或CRT显示器价格不断下降,因此在单片机系统中引入鼠标,用以取代常用的按钮,将会提高可靠性、可维护性和工作效率,方便实用。由于单片机一般不具备PS/2鼠标接口,也不支持PS/2的接口规范,加上鼠标工作信息是以连续增量流方式发送,因此在程序设计中必须充分考虑到PS/2鼠标的工作特点。本文主要探讨89C51系列微控制器与PS/2鼠标接口的软硬件设计。二.任务研究工作中设计的理论基础的内容1.USB及其工作原理介绍启动主机后,它会查询所有与总线相连的设备,并为每个设备分配一个地址。这个过程称为枚举——在将设备连接到总线时,主机也会枚举它们。此外,主机还会查出每台设备要执行的数据传输类型。中断——鼠标或键盘等设备发送的数据非常少,它们会选择中断模式。批量——打印机等设备接收的数据包含在一个大的数据包中,它们会使用批量传输模式。这种模式会将大块数据发送到打印机(块的大小为64个字节),并对这些数据进行验证,以确保它们的正确性。同步——流式设备(如扬声器)都使用同步模式。在这种模式下,设备与主机之间的数据是实时传输的,其间没有数据纠正过程。   此外,主机还可以通过控制数据包发送命令或查询参数。列举设备时,主机会一直跟踪所有同步和中断设备所请求的总带宽情况。如果总带宽为480Mbps(兆比特每秒),这些设备最多可占用90%的带宽。在用完这部分带宽后,主机就会拒绝访问任何其他同步或中断设备,控制数据包和用于批量传输的数据包将使用剩下的带宽(至少有10%)。通用串行总线会将可用带宽分成多个帧,而主机则控制着这些帧。每个帧包含1,500个字节的数据,每隔一毫秒就会启动一个新帧。在形成帧的1 PS2转USB鼠标接口实现方法探讨过程中,将为同步和中断设备分配一个槽,以便保证它们得到所需要的带宽。批量和控制传输将使用剩下的空间来传输数据。USB接口规范:现在电脑系统连接外围设备的接口并无统一的标准,如键盘用PS/2接口,连接打印机要用25针的并行接口,鼠标则要用串行或PS/2接口。USB则将这些不同的接口统一起来,使用一个4针插头作为标准插头。通过这个标准插头,采用菊花链形式可以把所有的外设连接起来,并且不会损失带宽。 USB规范中将USB分为五个部份:控制器、控制器驱动程序、USB芯片驱动程序、USB设备以及针对不同USB设备的客户驱动程序。根据设备对系统资源需求的不同,在USB规范中规定了四种不同的数据传输方式:等时传输方式(Isochronous)、中断传输方式(Interrupt)、控制传输方式(Control)和批(Bulk)传输方式,这些传输方式各有特点,分别用于不同的场所。USB需要主机硬件、操作系统和外设三个方面的支持才能工作。目前主板一般都采用支持USB功能的控制芯片组,而且也安装了USB接口插座。Windows98操作系统内置了对USB功能的支持(但WindowsNT尚不支持USB)。目前已经有数字照相机、数字音箱、数字游戏杆、打印机、扫描仪、键盘、鼠标等很多USB外设问世。随着大量的支持USB的个人电脑的普及以及Windows98的广泛应用,USB逐步成为PC机的一个标准接口已经是大势所趋。最新推出的PC机几乎100%支持USB,另一方面使用USB接口的设备也在以惊人的速度发展。USB是英文UniversalSerialBus的缩写,中文含义是“通用串行总线”。它不是一种新的总线标准,而是应用在PC领域的新型接口技术。早在1995年,就已经有PC带有USB接口了,但由于缺乏软件及硬件设备的支持,这些PC机的USB口都是闲置未用的。1997年,微软在WIN95OSR2(WIN97)中开始以外挂模块的形式提供对USB的支持,1998年后随着微软在Windows98中内置了对USB接口的支持模块,加上USB设备的日渐增多,USB逐步走进了实用阶段。2 任务研究中设计的理论基础的内容1994年,Intel、Compaq、Digital、IBM、Microsoft、NEC、NorthernTelecom等七家世界著名的计算机和通讯公司成立了USB论坛,花了近两年的时间形成了统一的意见,于1995年11月正式制定了USB0.9通用串行总线(UniversalSerialBus)规范,1997年开始有真正符合USB技术标准的外设出现。USB1.1是目前推出的在支持USB的计算机与外设上普遍采用的标准。1999年初在Intel的开发者论坛大会上,与会者介绍了USB2.0规范,该规范的支持者除了原有的Compaq、Intel、Microsoft和NEC四个成员外,还有惠普、朗讯和飞利浦三个新成员。USB2.0向下兼容USB1.1,数据的传输率将达到120Mbps~240Mbps,还支持宽带宽数字摄像设备及下一代扫描仪及存储备。2.PS2协议及其基本介绍a.电气特性1DATAKeyData2n/cNotconnected3GNDGnd4VCCPower,+5VDC5CLKClock6n/cNotconnected 3PS2转USB鼠标接口实现方法的探讨b.数据格式1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。ps2设备的clock和data都是集电极开路的,平时都是高电平。当ps2设备等待发送数据时,它首先检查clock是否为高。如果为低,则认为PC抑制了通讯,此时它缓冲数据直到获得总线的控制权。如果clock为高电平,ps2则开始向PC发送数据。一般都是由ps2设备产生时钟信号。发送按帧格式。数据位在clock为高电平时准备好,在clock下降沿被PC读入。数据从键盘/鼠标发送到主机或从主机发送到键盘/鼠标,时钟都是PS2设备产生.主机对时钟控制有优先权,即主机想发送控制指令给PS2设备时,可以拉低时钟线至少100μS,然后再下拉数据线,最后释放时钟线为高。PS2设备的时钟线和数据线都是集电极开路的,容易实现拉低电平。单片机与PS2鼠标通信1.PS2向单片机发送一个指令按下列步骤进行:2.检测时钟线电平,如果时钟线电平为低,则延时50us;4 任务研究中设计的理论基础的内容1.检测判断时钟信号是否为高,为高,则向下执行,为低,则放弃发送2.检测数据线是否为高,如果为高则继续进行,如果为低,则放弃发送(此时单片机向PS2发送数据,所以ps2设备要转移到接收程序处接受数据)4.延时20us(如果此时正在发送起始位,则应延时40us);5.输出起始位(0)到数据线上,这里要注意的是:在送出每一位后都要检测时钟线,以确保单片机没有抑制PS2设备,如果有则中止发送;6.输出8个数据位到数据线上;7.输出校验位;8.输出停止位(1);9.延时30us(如果在发送停止位时释放时钟信号则应延时三.系统工作任务及工作指标系统工作任务:AT89C2051单片机与PS2鼠标和PDIUSBD12接口芯片通信,实现USB与PS2数据转换,并使主机鼠标能够使用鼠标。系统工作指标:鼠标各功能能够正常工作,手感与功能与USB鼠标无异。四.系统组成及工作原理介绍本系统主要由3部分组成:PS2接口,单片机,USB接口。其中PS2接口负责单片机与鼠标的通信。单片机为数据的枢纽,并向鼠标和USB接口芯片发送命令。USB接口负责与PC主机的通信。本系统的工作流程:1.初始化鼠标和USB接口芯片5PS2转USB鼠标接口实现方法的探讨 1.完成USB枚举,是该系统被主机识别为USB鼠标2.工作循环:读取鼠标发送的数据包,转成USB鼠标的数据格式,并通过USB接口发送到主机五.主要硬件电路及其讨论其中D12的时钟由6M晶振提供,单片机的时钟由D12产生的24M时钟提供,其他连接均遵照手册。六.系统软件工作任务及软件工作流程介绍由于PS/2鼠标接口采用5V工作电压,且兼容TTL逻辑电平,因此89C51单片机本身具备直接接口能力,同时51系列的准双向I/0口满足集电极开路条件,因此采用下图所示的硬件连接方案。需要说明的是,由于正常工作时,上行信息的发送是随机的,因此为了保证快速的响应,CLK引脚必须采用中断输入,即接到P3.2(1NTO),而DATA则可以接到任何一根准双向引脚,这里就近接到了P3.3。6系统软件工作任务及系统软件工作流程介绍 单片机起动后,通过发送启动命令启动鼠标,同时也可以通过其他命令对鼠标进行必要的设置。之后,鼠标即可随着拖动或按钮操作向单片机发送动作信息,经接口模块翻译即可反映鼠标位置和按钮状态。如果鼠标错误或者不存在,命令发送模块将在相当短的时间内返回错误信息,不会导致系统死锁或延误其它任务。鼠标接口程序由初始化、命令发送、读信息、中断服务等4个模块组成。初始化部分设置程序工作参数,并启动鼠标;中断服务模块接收并识别鼠标所有上行信息,并进行错误识别,然后根据得到的有效信息刷新鼠标信息缓冲区;主机通过读信息模块取得鼠标信息;所有下行命令由命令发送模块完成。完整的鼠标接口程序流程见下图。在初始化阶段,首先检查标是否存在,根据结果设置标志位,以备以后取鼠标信息时判断用,同时根据需要设定鼠标初始位置、按钮原始状态,最后设置定时器并开放鼠标中断。鼠标发送信息时,每3个字节为一个完整的信息报告(个别命令响应除外)。89C51每接收到一个有效信息报告,则刷新内部光标位置和鼠标按钮状态,如果允许,同时刷新用户鼠标信息。用户模块读信息模块获得当前光标位置和鼠标按钮状态。7PS2转USB接口实现方法的探讨 七.软件功能模块讨论  鼠标的工作模式有四种,分别为Reset模式,Wrap模式,Remote模式和Stream模式。前两种作为测试用,Remote模式为主机有需要时,发送命令使鼠标回送位移数据,Stream模式是上电的初始模式,每当鼠标产生位置或者按键状态的改变就自动发送数据。显而易见,第四种模式最为合适。正常读取鼠标数据前只需发送命令(0xF4),此命令告知鼠标,主机已经准备完毕,可以接受位移数据。但是这样简单的初始化存在着一个显著的缺陷,就是笔者发现滚轮无法使用了。这个问题困扰了笔者很久,原以为是软件编写出现小错误,引起鼠标能工作,但工作不正常。后来仔细查看了相关文档才发现,鼠标的初始化远没有那么简单,有点复杂却非常有趣:首先进行复位,这时的鼠标还是不8软件功能模块讨论 带滚轮的,然后依次设置鼠标的采样率为200、100、80,这时候,就可以被识别为带滚轮的鼠标了,随后就根据需要,设置所需的采样率,一般默认的100即可。  PS/2鼠标与控制器间履行一种双向同步串行数据帧协议,每帧为11~12Bit,如图3所示。  按照标准的三键鼠标的数据包有效数据为3个字节,如图4所示。  读取PS/2鼠标数据后需要按照USB鼠标的格式进行转换。USB鼠标的数据格式如图5所示:此鼠标的重点调试重点是S52的USB控制代码。笔者参考了PHILIPS的9PS2转USB接口实现方法的探讨 标准固件驱动代码,并进行了一定优化。  USB的控制代码通常由三部分组成。  (1)初始化:初始化主要对S52以及外围电路的初始化,通过复位,初始化USB并读取D12的ChipID进行确认(D12的ChipID为0x1012);  (2)中断服务:用于对主机的令牌包的响应,主要包括StandardDeviceReq标准请求,VendorDeviceReq用户厂商请求和ClassFunctionReq类设备请求等,其中比较重要的为标准请求。标准请求的作用是告诉PC这是一个什么样的USB设备,包括USB类型、USB设备的描述符等;  (3)主循环处理数据:用于对获得的USB鼠标数据的处理填充,并等待PC要求数据时将数据传送给PC。  Windows对USB设备的枚举顺序:  (1)GetDeviceDescriptor:主机主要对Length感兴趣,即第2字节type必须为0x01,即Device,否则PC将重复2次后放弃(注意:此步只发送前16字节设备描述符);  (2)SetAddress:一般为02或者03;  (3)GetDeviceDescriptor:读取全部设备描述符,一般为18字节分为2次传输,如果不正确PC重复2次后放弃(与(1)步相比,此步发送全部的18字节设备描述符);4)GetConfigDescriptor:注意第2字节一定为0x02即Config;  (5)GetStringDescriptor:根据在设备描述符中的第15、16、17字节索引顺序而定,一般先读取LanguageID再读取ProductString读取全部ConfigDescriptor,次数根据描述符的大小决定,端点个数不同,描述符大小不同。至此PC已经能正确识别设备并安装驱动,如果不正确PC将重复2次后放弃;10软件功能模块讨论   (6)SetCorfiguration、GetConfiguration和Getlnterface等调用,对设备的状态进行最后的配置即完成设备的枚举。  在编写USB固件程序时需要注意:  (1)S52的中断应设置为电平触发,中断后必须读上次传输状态寄存器命令0x40-0x45,以清除中断寄存器中的中断标志,只有这样D12的中断输出才能变回高电平;  (2)在接收到Setup包后必须调用ACKsetup命令重新使能端口0; (3)在向IN端点写完数据后必须调用ValidateBuffer命令(0xFA)指明缓冲区中的数据有效,可以发送到主机;11 PS2转USB接口实现方法的探讨(4)当读完数据后必须调用ClearBuffer命令(0xF2),以保证可以接收新的包;(5)在调试过程中,可使用USBVIEW等工具软件,外加代码中的串口输出调试信息配合完成;(6)在代码中涉及到鼠标报告描述符MouseReportDescriptor,可以使用HIDDescrptorTool工具生成。八·结束语该系统以超出预期的效果实现了所设计的功能,总的来说还是比较成功的,但是仍有很多方面需要改进:1,该系统是在万用版上实现的,稳定性不如PCB板,并且遗留了调试过程中用到的串口,复位键,电源开关等。2,同时实现鼠标和键盘的转接是有可能的,但是键盘的工作原理与鼠标不同,其中有大量的轮寻算法,51的性能不能做到完全实时,所以没有实现。致谢:感谢孙铭同学与我合作完成此项目,感谢余柏生、刘清华老师对我们的悉心指导。参考文献:《PS/2技术参考》著AdamChapweske译RoyShow《圈圈教你玩USB》著刘荣北京航空航天大学出版社12 附录:'