第一次拆开老式台式机时,那个紫色和绿色的圆形接口总是特别显眼。这种被称为PS/2的接口,其实是上世纪80年代IBM个人计算机的遗产。"PS/2"这个名字来源于IBM的第二代个人电脑系统"Personal System/2",虽然IBM的硬件早已退出主流市场,但这个接口标准却意外地存活了二十多年。
现在的年轻工程师可能更熟悉USB接口,但在工业控制、嵌入式系统等特殊领域,PS/2接口依然有其独特的优势。它采用简单的四线制(电源、地线、时钟和数据),不需要复杂的协议栈就能实现稳定通信。我去年参与的一个工业键盘项目就选择了PS/2接口,原因很简单——在电磁环境复杂的车间里,它的抗干扰能力比USB强得多。
标准的PS/2接口采用6针mini-DIN连接器,但实际上只使用其中4个引脚。这种设计导致了一个有趣的现象:市面上既有6针的PS/2插头,也有简化版的4针版本。我在设计电路板时发现,富士康的MH11061-P36-4F插座是个不错的选择,尺寸18×20mm,兼容性很好。
关键引脚定义如下:
PS/2设备的工作电压是严格的5V±5%,但有个设计细节容易被忽视:DATA和CLK线都是集电极开路输出,必须外接上拉电阻。根据我的实测,2.2kΩ~10kΩ的电阻都能工作,但推荐使用4.7kΩ,这个值在信号质量和功耗之间取得了最佳平衡。
信号时序方面,时钟频率通常在10-16.7kHz之间。有趣的是,这个频率不是固定的,设备会根据实际情况动态调整。我曾经用示波器观察过多个键盘的通信波形,发现不同品牌的时钟频率差异能达到±15%。
DATA和CLK线的上拉电阻不能随便选。电阻值太小会导致功耗增加,太大又会影响信号上升时间。我的经验公式是:
code复制R = (Vcc - Vol) / Iol
其中Vol是输出低电平电压(通常0.5V),Iol是输出低电平电流(PS/2规范要求至少4mA)。代入计算得到最小电阻值为1.125kΩ,考虑到余量,4.7kΩ是最稳妥的选择。
PS/2接口经常需要热插拔,静电防护必不可少。我推荐使用TVS二极管阵列,如Semtech的RClamp0524P,它在5V工作电压下钳位电压只有9.2V,响应时间小于1ns。布局时要注意TVS器件要尽可能靠近接口端子,接地回路要短而粗。
PS/2设备的5V电源需要特别处理。我的标准做法是:
下面是一个经过验证的PS/2接口电路:
circuit复制PS/2 Connector
│
├───┬── 4.7kΩ ─── VCC(5V)
│ │
│ TVS
│ │
├───┴── DATA ─── MCU
│
├───┬── 4.7kΩ ─── VCC(5V)
│ │
│ TVS
│ │
├───┴── CLK ──── MCU
│
├────── GND
│
└────── VCC ──┬── 10Ω ─── 100nF ─── GND
│
└── 10μF ─── GND
我曾经犯过一个错误:把PS/2走线布在了开关电源下方,结果键盘经常失灵。后来用频谱分析仪发现是开关噪声耦合到了时钟线上。这个教训告诉我,看似简单的接口也需要认真对待EMC设计。
最常遇到的三个问题:
我工具箱里常备三样东西:
用示波器观察通信波形时,要特别注意时钟信号的占空比。规范的PS/2设备应该保持40%-60%的占空比,如果看到异常的脉冲波形,很可能是阻抗匹配出了问题。
虽然PS/2是老旧标准,但通过一些技巧可以让它更好地适应现代系统:
我在一个医疗设备项目中就采用了第三种方案,使待机功耗降低了0.5mA。关键是在MCU GPIO和PS/2接口之间加入了一个MOSFET开关,由软件控制上拉电阻的通断。
利用PS/2协议可以轻松实现自定义键盘。我曾经用ATmega32u4做了一个工业控制面板,通过PS/2接口连接了24个按键。核心思路是:
这种设计比直接使用USB HID更简单可靠,特别适合恶劣环境。
PS/2鼠标的数据包格式相当简单,三个字节分别包含位移量和按钮状态。我开发过一个质检设备,通过解析PS/2数据流来记录操作员的鼠标轨迹,用于分析操作规范性。关键是要处理好数据包的同步问题——PS/2协议没有前导码,需要靠超时机制来识别帧起始。