贾书飞 商俊燕 宋洁
摘要:该文提出了一种基于USB HID协议的工控键盘,采用 PDIUSBD12芯片作为USB接口芯片,使用STC15F2K60S2芯片微处理器,其管脚多、性能好、制作成本低,可同时与标准大键盘使用或独立使用。
关键词:USB;HID;工控键盘;PDIUSBD12芯片
中图分类号:TN-9 文献标识码:A 文章编号:1009-3044(2018)29-0257-02
随着用工荒出现,越来越多企业需要智能化设备来替代部分人工,而在这些智能化设备中,核心控制设备就是嵌入式计算机,键盘是一种重要的人机交互设备,方便用户操作工业设备。工控键盘与标准键盘的区别在于,工控键盘可以为满足特定要求而设计,常用的接口有PS/2和USB两种,目前随着技术发展,USB接口以其热拔插、采集速率高等特定,应用越来越多。该文中采用USB接口来设计键盘。
1 HID协议简介
USB HID类是一个比较大的类,其设备属于人机交互操作的设备,用于控制计算机操作USB方面的操作:USB键盘、USB鼠标、USB触摸板、USB游戏操作杆、电话拨号设备、VCR遥控等设备。另外,一般操作系统会自带HID类的驱动程序,用户在开发是无须再开发驱动程序,只需要直接进行API调用完成通信即可,因此很多简单的USB设备采用HID设备。
HID设备主要使用USB的中断管道和控制管道和主机进行通信。其中必须使用端点为0的控制管道,它的主要用途是传输类请求代码、USB描述符以及提供查询消息数据;中断管道必需中断输入管道,它的作用是传输主机到设备的输入数据。
在进行设计时,如需把设备识别为HID类必须遵守HID规范。HID设备的描述符有5个USB的标准描述符:设备描述符、接口描述符、配置描述符、字符串描述符、端点描述符;3个HID设备类特定描述符:HID描述符、物理描述符、报告描述符。
2 系统方案设计
自定义工控键盘主要分为两部分进行设计:键盘和USB接口部分,其系统的组成图如图1所示。
该自定义工控键盘的设计主要包含两部分:硬件设计和软件设计。
2.1 硬件设计
USB接口部分,目前微处理器实现USB通信的方案比较多,我们采用的是:单片机加PDIUSBD12芯片结构。
PDIUSBD12芯片,作为USB器件它的性能优化,常用在微控制器的系统与微控制器通过高速通用并行接口进行通信的场合。PDIUSBD12芯片的USB接口实现通过模块化方法来实现USB,并允许选择最合适的作为系统微控制器,同时也能兼容现有的体系结构还能是其他的固件减少到最小。通过这种方式可以降低开发时间、风险和成本, 所以使用PDIUSBD12芯片来开发USB外围设备的解决方案,是一种高效、低成本的方案,在很多外围设备如数码相机、扫描仪、打印机等都会使用这种方案。
单片机采用的是宏晶STC15F2K60S2,其LQFP44脚封装,管脚多、体积小、成本低廉,在本应用中用来进行矩阵键盘扫描,配合PDIUSBD12接口芯片,将扫描到的键值变化通过HID协议发送给USB主机。其电路原理图如下图2所示。
2.2 软件设计
通过单片机给PDIUSBD12芯片发送命令和数据来实现PDIUSBD12和单片机之间的通信。PDIUSBD12芯片的命令字有三种:初始化命令字、通用命令字和数据流命令字。其工作流程为:1)单片机发地址命令给PDIUSBD12芯片;2)芯片根据命令要求来读取或发送数据。
编写固件程序主要作用是能是操作系统能检测、识别设备。在设计工控键盘的USB固件程序分為三部分:首先进行单片机和外围电路的初始化,接着设计主循环部分,注意其中的任务可以中断,最后中断服务程序。
在USB协议里,从主机开始进行传输,前台工作设备为单片机需要等待中断。工作流程为:首先发令牌包给PDIUSBD12芯片的USB设备,接着PDIUSBD12芯片接收到令牌包给单片机发中断命令,然后单片机接受到命令后进入中断服务程序,读取PDIUSBD12芯片的中断寄存器,并判断令牌包的类型并执行操作。
3 系统测试与应用
自定义工控键盘测试,使用JAVA编写一个提供键盘测试界面,可识别键盘接口电路发送上来的键值,并做反显显示,具体应用时可对不同的按键值赋予不同的功能,从而实现工业控制要求。
首先将工控键盘通过USB接口接入嵌入式计算机后,当我们按下工控键盘上的1键,则测试软件界面上1黄色反显,类似方法,测试出其他按键都正常运行。其运行效果如下图3所示:
4 结束语
在工控领域,工控键盘设计方案很多,该文介绍了一种基于单片机和PDIUSBD12芯片结合的设计,其性能高、速度快、使用方便以及成本低廉,具有很高的实际应用价值和广阔的应用前景。
参考文献:
[1] 荣剑, 赵同林. 基于PS/2接口的工控特殊键盘设计[J]. 电脑知识与技术, 2010(19).
[2] 戴捷, 胡晓吉. 基于光传输的USB键盘鼠标一体化设计[J]. 计算机工程与设计, 2012(7).
[3] 董钢. 基于PDIUSBD12与单片机设计的智能USB软件狗[J]. 电脑迷, 2017(1).
[4] 秦德乐, 谢文娣. 基于STC15F2K60S2的动态扫描LED多功能旋转屏设计[J]. 计算机工程与设计, 2017(z1).
[5] 滕鹏, 姜昌华. 基于HID类的USB手势输入系统设计与实现[J]. 数字技术与应用, 2017(2).
【通联编辑:谢媛媛】