PS2鼠标使用USB接口的转换器

发布者:创意火花最新更新时间:2013-09-11 来源: dzsc关键字:PS2鼠标  USB接口  转换器 手机看文章 扫描二维码
随时随地手机看文章
    为了出差方便,笔者购置了笔记本电脑,由于笔记本电脑已淘汰了PS2接口,于是家中的PS2鼠标就被闲置了起来,笔者突发奇想,USB鼠标可以通过一个简易的转接器插到台式机的PS2口中使用,反过来行不行呢?笔者做了试验,结果却很失望,根本不行。看来需要另辟蹊径,于是,一不做二不休,用PDIUSBD12和51单片机设计了一个PS2转USB的协议转换器。原本其实并不抱太大的希望,结果却神奇般地成功了,而且不需要另外编写驱动,采用USB直接供电,识别为USB鼠标,十分好用,现将制作成果分享如下。

  硬件设计

  电路原理图如图1所示。


  其中鼠标PS2接口的引脚定义如图2。


  电路的主体为ATMEL公司的51系列芯片ATMEL89S52(以下简称S52)和PHILIPS公司的并行传输USB接口芯片PDIUSBD12(以下简称D12)。S52相信读者已经非常熟悉了,最高24MHz的主频,256字节的RAM,4组8位I/O口,没有什么特别的功能,一切中规中矩,本设计在此仅用到一个外部中断。但这同时也说明,任何51内核(带总线)的单片机都可以适用。

  PDIUSBD12是应用十分广泛的并行接口USB控制芯片,作为实现USB接口的标准组件,D12使设计者能够灵活选择合适的MCU,用最经济最快的方式实现USB外设的解决方案。

  S52主要完成PS2接口鼠标的控制与数据获取,并通过PDIUSBD12与PC完成鼠标协议数据的传输。

  为了精简电路,S52使用D12的可编程时钟源,通过编程输出高达24MHz的时钟,供S52使用;观察调试输出的Uart波特率需要为19200bps,便于快速输出信息,不耽误正常的USB枚举。

  软件设计

  鼠标的工作模式有四种,分别为Reset模式,Wrap模式,Remote模式和Stream模式。前两种作为测试用,Remote模式为主机有需要时,发送命令使鼠标回送位移数据,Stream模式是上电的初始模式,每当鼠标产生位置或者按键状态的改变就自动发送数据。显而易见,第四种模式最为合适。正常读取鼠标数据前只需发送命令(0xF4),此命令告知鼠标,主机已经准备完毕,可以接受位移数据。

  但是这样简单的初始化存在着一个显著的缺陷,就是笔者发现滚轮无法使用了。这个问题困扰了笔者很久,原以为是软件编写出现小错误,引起鼠标能工作,但工作不正常。后来仔细查看了相关文档才发现,鼠标的初始化远没有那么简单,有点复杂却非常有趣:首先进行复位,这时的鼠标还是不带滚轮的,然后依次设置鼠标的采样率为200、100、80,这时候,就可以被识别为带滚轮的鼠标了,随后就根据需要,设置所需的采样率,一般默认的100即可。

  PS/2鼠标与控制器间履行一种双向同步串行数据帧协议,每帧为11~12Bit,如图3所示。


  按照标准的三键鼠标的数据包有效数据为3个字节,如图4所示。


  读取PS/2鼠标数据后需要按照USB鼠标的格式进行转换。USB鼠标的数据格式如图5所示:

  此鼠标的重点调试重点是S52的USB控制代码。笔者参考了PHILIPS的标准固件驱动代码,并进行了一定优化。[page]

  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次后放弃;


  (6)SetCorfiguration、GetConfiguration和Getlnterface等调用,对设备的状态进行最后的配置即完成设备的枚举。

  在编写USB固件程序时需要注意:

  (1)S52的中断应设置为电平触发,中断后必须读上次传输状态寄存器命令0x40-0x45,以清除中断寄存器中的中断标志,只有这样D12的中断输出才能变回高电平;

  (2)在接收到Setup包后必须调用ACKsetup命令重新使能端口0;

  (3)在向IN端点写完数据后必须调用ValidateBuffer命令(0xFA)指明缓冲区中的数据有效,可以发送到主机;

  (4)当读完数据后必须调用ClearBuffer命令(0xF2),以保证可以接收新的包;

  (5)在调试过程中,可使用USBVIEW等工具软件,外加代码中的串口输出调试信息配合完成;

  (6)在代码中涉及到鼠标报告描述符MouseReportDescriptor,可以使用HID Descrptor

  Tool工具生成。

  USB鼠标的软件流程如下:

  完成后的截图如图7所示。


  图7为在设备管理器中看到的识别为“USB人体学输入设备”以及“HID-compliant mouse”;在“人体学输入设备”查看属性,可看到“位置0(LLH-HXY’MOUSE)”。


  图8为使用USBVIEW调试工具看到的USB鼠标信息。


  图9为笔者的做的实物图,正在使用中。

  该USB鼠标经过笔者的长时间测试使用,性能比较稳定。在实际使用过程中应对鼠标的移动速度进行调整,以更加适应自身的使用习惯。除此之外,硬件焊接正确无需调试便可正常工作。笔者已经附上全部的代码以及调试输出信息,供读者进行参考。

  本文利用ATMEL89S52完成了鼠标移动数据的读取与PC机通信数据的传送,其实质为PS/2到USB协议的转换,有兴趣的读者可以使用更加小巧、低电压的芯片进行改造,使结构更加合理,外观更加美观。从学习USB协议的通用性和易用性上说,具有广泛的价值。

关键字:PS2鼠标  USB接口  转换器 引用地址:PS2鼠标使用USB接口的转换器

上一篇:USB充电器套件制作原理解说
下一篇:USB电源解决方案

推荐阅读最新更新时间:2024-05-02 22:46

一种非标准VGA-TV转换器的实现
    摘要: 介绍了以AL128芯片为核心设计的一种将非标准视频显示模式转换为标准电视视频制式的视频模式转换器。对该视频模式转换器的工作原理、硬件构成及设计思路等给以了详细的介绍。     关键词: AL128A-TV数字视频转换芯片 标准电视制式 非标准VGM显示模式 标准VGA显示模式 分光光度仪 视频采集卡 AL422视频存储器 AV9173视频锁相环芯片 由于历史原因,在标准VGA图形显示模式为广大生产厂家接受以前,许多仪器设备制造商都为自己的微机控制设备定制了专用的显示输出设备,特别是一些国外的医疗仪器、化学分析仪器及工业控制仪器的制造商。这些显示输出设备与其控制主机相连的方式是多种多样
[电源管理]
电源转换器实现高性能电源管理
为工业、网络/通信及最新的消费类应用设计负载点系统的工程师必须不断地确保设计上的许多权衡。基于分立解决方案衡量器件的优劣之处并将其与集成型解决方案进行比较,成为最近较为重要的权衡方法之一,因为每种选择都有其需要权衡之处。此外,工程师还必须考虑将此选择设计到应用及将产品投放到市场所需的时间。最后,系统可靠性、高密度及单一供应商能力也都是在选择电源转换器时的重要考虑因素。 除上述所有考虑之外,负载点系统工作在低占空比时所需的两级功率转换将会占用许多昂贵的电路板空间和电能,因为它将产生两组级间转换损耗。本文将对设计人员所面临的权衡类型以及特定解决方案的优点进行讨论。 节省昂贵的电路板空间和电能 节省电路板空间和电能最有效的一
[电源管理]
电源<font color='red'>转换器</font>实现高性能电源管理
AnalogicTech推出电池充电器、降压型转换器和线性稳压器三合一方案
超小型封装简化了超低功率便携平台的设计 AnalogicTech 推出了业界第一款在一个超小型的 3 × 4mm 封装内集成了一个 500mA 电池充电器、 250mA 降压型转换器和 300mA 低压差( LDO )线性稳压器的功率管理芯片 AAT2554 。 作为 AnalogicTech 迅速扩大的 SystemPower 产品系列的一部分,这款多功能器件为超低功率产品的设计者提供一个非常简便的电源管理解决方案,它可减小产品尺寸并简化设计的复杂性。 所有这三项功能针对那些以一块单片锂电池为电源的超低功率的应用进行了优化。电池充电器工作的输入电
[新品]
MAX8570系列LCD升压转换器
MAX8570系列LCD升压转换器采用内部n沟道开关和p沟道输出隔离开关。这些转换器采用2.7V至5.5V的电源电压,输出可达28V。   独一无二的控制技术能够在各种负载条件下提供最高的转换效率。内部MOSFET开关减少了外部元件的数量,高开关频率(800kHz)允许使用微小的表面贴封装元件。具有三种电流限制选项,MAX8570和MAX8572采用110mA的电流限制以减小低电流应用中的波纹干扰和元件尺寸。对于大功率应用,MAX8574和MAX8575使用500mA电流限制,在20V时可提供20mA电流。MAX8571和MAX8573采用250mA的电流限制,以便在波纹干扰和功耗指标间取得平衡。内部保护电路在发生故障时保护内部
[模拟电子]
MAX8570系列LCD升压<font color='red'>转换器</font>
CS50363内置MOS可升压16V,高效率升压DC-DC转换器
CS50363E是一款采用CMOS工艺升压型开关稳压器,其主要包括一个参考电压源,一个振荡电路,一个误差放大器,一个相位补偿电路,通过PWM/PFM切换控制电路。CS50363E内置MOS的设计,只需极简的外围电路,可以最大限度的保证电源模块的可靠性以及避免电源模块设计的复杂化。CS50363E最高可提供16V恒定的电压输出;最大可保证8A的均值电流下负载稳定工作.低至2.5V的启动电压,3~15V的宽工作电压范围,可最大限度的适用于各种终端设备,扩频功能最大限度的限制开关信号对外的辐射。 CS50363E提供了ESOP10的封装类型,其额定的工作温度范围为-40℃至85℃。 输入电压范围:2.5~15V 可调电压输出最高
[嵌入式]
CS50363内置MOS可升压16V,高效率升压DC-DC<font color='red'>转换器</font>
高可靠的新型DC/DC变换器模块设计
  0 引言   目前,在高端电子设备领域,高等级的DC/DC电源模块主要还是依赖国外进口,因此,尽快实现高质量等级DC/DC电源模块国产化迫在眉睫。本文以一种质量等级为H级的DC/DC电源模块的设计为例,从电路、工艺等方面详细介绍了H级DC/DC电源模块的设计思想。   1 模块主要指标   该DC/DC电源模块是为整机配套使用的。其要求的输入电压为20~35V,输出电压为10~10.1V/10~10.2 V(-55℃~+125CIC)、5~-5.1V/5~-5.2 V(一55℃~+125℃),负载调整率和电压调整率均小于1%,输出纹波电压小于40 Mv   2 电路设计   2.1 非平衡双路功率电压输出设计
[电源管理]
高可靠的新型DC/DC变换器模块设计
迟滞型转换器控制高亮LED分析
迟滞型转换器(Hysteret ic converter)被广泛用于 驱动 新兴照明应用中的 LED 。这种转换器非常容易使用,其拓朴结构也相当稳定,因此已经成为高效 电感 式 开关 稳压器解决方案的首选。这种简单拓朴可以用在许多不同配置中,有时甚至可以超越一般的使用范围。不过仍有不少问题需要解决,而了解这种转换器的局限性也有助于提高系统性能。 本文将透过不同电路配置实例详细介绍这种转换器的拓朴结构,并讨论一些内在问题,以及这些问题对某些特殊应用的影响。 拓朴结构 迟滞型转换器实际上采用的是一种开关(on-off)拓朴结构。它可以用在降压、升压或降压-升压配置中,而其超强的稳定性使它最适合用于降压
[电源管理]
迟滞型<font color='red'>转换器</font>控制高亮LED分析
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved