严成武
摘 要:本文介绍了一种实用的利用单片机来实现U+P鼠标接口判断的方法。首先分析电脑的USB接口和PS/2接口在电气上的区别,并根据这种区别,给出利用单片机判断这两种接口的方案。
关键词:单片机;PS/2接口;USB接口;接口判断
U+P鼠标如图1,可直接用在USB接口;经过图2的转接头(USB转PS/2),也可以用在PS/2接口上。它能自动识别是插在了USB接口还是PS/2接口,如果是插到了USB接口,则进行USB初始化,然后按照USB协议与电脑通信;如果是插到了PS/2接口,则进行PS/2初始化,然后按照PS/2协议与电脑通信。本文将重点讨论:电脑的USB接口与PS/2接口的硬件特性,以及利用单片机判断的方法。
1、电脑USB接口与PS/2接口的硬件特性。
1.1、USB接口硬件特性。
电脑USB接口与外设的连接有4根线,分别为VCC,D-, D+,GND。其中VCC为电源正极(+5V),GND为电源负极,D-,D+为信号线。在电脑内部,D-、D+各有一个15K的下拉电阻。当没有接外设时,因15K下拉电阻的存在,D-、D+均为低电平。
根据USB协议,只要外设的电路不改变D-、D+的低电平状态,则电脑会一直保持这种状态,即:D-、D+保持低电平。
2,PS/2接口硬件特性。
电脑PS/2接口与外设的连接有6根线,但只用了4根线,分别为VCC,数据(DATA), 时钟(CLK),GND。其中VCC为电源正极(+5V),GND为电源负极,DATA为数据线,CLK为时钟线。在电脑内部,DATA、CLK各有一个约5K的上拉电阻。当没有接外设时,在正常状态下,因5K上拉电阻的存在,DATA、CLK均为高电平。如果键盘PS/2接口有通信时,电脑会在鼠标PS/2接口的CLK线上输出一个低电平,但DATA仍保持高电平。如果电脑在禁止PS/2接口时,也会在CLK上一直输出低电平,禁止通信。
根据PS/2协议,只要外设的电路不改变DATA、CLK的电平状态,则电脑会一直保持它原来的状态,即:CLK正常为高电平,另一个PS/2接口有通信或禁止接口时,为低电平;DATA一直保持高电平。
2、两种接口的连接关系。
当U+P鼠标通过转接头接到PS/2接口上时,U+P鼠标的四根线可定义为:VCC,D-/DATA,D+/CLK,GND。
3、接口判断方法。
根据两个接口以上的硬件特性,在鼠標上电时,通过判断D-/DATA,D+/CLK的电平,即可判断出是哪个接口。在D-/DATA、D+/CLK上接500K的上拉电阻是为了防止接触不良时,D-/DATA、D+/CLK不会处在悬空状态。
如果接到了USB接口,虽然D+、D-有500K的上拉电阻,但电脑内部有15K的下拉电阻,D+、D-还是低电平。
如果接到了PS/2接口,DATA上都是上拉电阻,而且根据PS/2协议,电脑不会主动输出低电平,所以肯定为高电平;CLK上也都是上拉电阻,正常也为高电平,只是在另一个PS/2接口有通信或禁止接口时,为低电平。
具体电路如图3,判断步骤如下:
①当接口判断电路接到电脑的USB接口(或PS/2接口)时,51单片机从VCC,GND上得电,上电复位后,延时500MS,等待接口接触良好。
②读D-/DATA(P0.0)、D+/CLK(P0.1)的状态。
③如果P0.0、P0.1均为低电平,则初步认为是USB接口;每隔1MS读一次P0.0、P0.1,如连续20次均保持这种状态,则确认为USB接口。否则重新回到2。
④如果P0.0为高电平,不管P0.1为高电平还是低电平,都认为是PS/2接口;每隔1MS读一次P0.0、P0.1,如连续20次均保持这种状态,则确认为PS/2接口。否则重新回到2。
4、结束语
这种方法经过上万次的测试,均能正确判断接口;2007年用在了公司的U+P鼠标产品上,并批量生产,直到现在,客户没有这方面的投诉。
参考文献:
[1]《单片机原理与应用技术》,付晓光编著,清华大学出版社,2008年修订。
[2]《单片微型计算机》,徐惠民,安德宁编著,北京邮电学院出版社。