当前位置:首页 > 工业控制 > 工业控制
[导读]摘要:设备智能化改造大趋势下,嵌入式计算机大量的应用到工控系统中,自定义工控键盘的应用也变得越来越广泛。本文提出一种基于USB HID协议的自定义键盘设计,设计简单功能实用,免驱动自动识别。很好的解决了按需

摘要:设备智能化改造大趋势下,嵌入式计算机大量的应用到工控系统中,自定义工控键盘的应用也变得越来越广泛。本文提出一种基于USB HID协议的自定义键盘设计,设计简单功能实用,免驱动自动识别。很好的解决了按需定制键盘设备的设计要求,方便了系统上位机软件编程,贴近工程实践,应用前景广阔。

随着智能化工控设备的推广,越来越多的工控设备采用嵌入式计算机作为其控制核心。以嵌入式计算机系统为平台进行产品开发,需要进行控制单元硬件和用户应用软件设计。在应用软件设计环节,不可避免的需要用到人机交互设备,以完成操作人员对计算机系统的控制,工控键盘作为最常用的一类输入设备,进入了我们的视线。

工控键盘区别与标准键盘,它所有按键是为满足特定产品需求而设计,常用接口有PS/2和USB。USB设备具有支持热插拔和桢采集速率高等优点,正逐步取代原来的PS/2设备,成为市场的主流。本文主要介绍一种USB接口的自定义工控键盘的设计,解决智能化数控设备中键盘定制的问题。

1 USB BID简介

USB接口是一种即插即用型的串行总线通信端口,广泛应用于各类计算机系统。HID类设备属于人机交互操作的设备,是USB设备中比较大的一个类,用于控制计算机操作,如USB鼠标,USB键盘等设备。操作系统自带了HID类的驱动程序,免去了驱动程序的编写,因此一些简单的USB设备,喜欢枚举成HID设备,方便了设计也方便了使用。

所有HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。控制管道主要用于:接收USB主机的控制请示及相关的类数据;在USB主机查询时传输数据;接收USB主机的数据。中断管道主要用于:USB主机接收USB设备的异步传输数据;USB主机发送有实时性要求的数据给USB设备。

要让计算机将一个HID设备识别为键盘设备,要完成的主要工作是修改HID设备的描述符。HID设备的描述符主要包括5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)和3个HID设备类特定描述符(HID描述符、报告描述符、实体描述符)。修改描述符可以将HID设备枚举为鼠标、键盘及其他HID设备。

2 系统方案设计

USB自定义工控键盘从系统构成上看主要分为键盘部分设计和USB接口设计两部分。系统组成框图如图1所示。

其中键盘扫描部分软硬件设计根据具体键盘定制要求,预留足够的I/O,设计方案大致相同。USB接口部分,目前微处理器实现USB通信的方案比较多,主要有以下3种:1)单片机+PDIUSBD12芯片结构;2)采用Cypress公司的集成了USB2.0协议的微处理器CY7C68013A芯片;3)选用基于ARM Cortex-M3内核的STM32系列处理器。3种方案各有优势,单片机+PDIUSBD12芯片结构,设计简单,成本低廉;采用CY7C68013A芯片,集成度高,自带协议开发方便;选用STM32系列处理器,电路简单、性能优异、扩展性强、有丰富的固件资源,方便开发。

作为新一代32位处理器STM32系列,性能提升是显而易见的,价格也比较合理,性价比非常高,有很广阔的应用前景。因此,这里构建USB工控键盘硬件平台采用STM32F103C8T6处理芯片。

3 硬件设计

STM32F103C8T6是中等容量的STM32产品,它基于ARM的Cortex-M3内核,具有64K片上闪存,LOFP-48封装,USB接口及丰富的其他外设接口。使用STM32F103C8T6设计USB通信接口,电路简单,性能稳定,电路原理图如图2所示。

图中J1为USB接口直接与STM32处理器PA11、PA12相连,J3、J4为键盘扫描接口,共引出16个IO,最多可扫描8*8矩阵键盘即64个按键。其余电路为处理器最小系统电路。

4 软件设计

ST公司给我们提供了详尽的The USB—FS—Device library固件库,固件库程序结构清晰,主要分为底层和上层两个部分。

1)底层结构包括5个文件:usb_core.c(USB总线数据处理的核心文件),usb_init.c,usb_int.c(用于端点数据输入输入中断处理),usb_mem.c(用于缓冲区操作),usb_regs.c(用于寄存器操作)。

2)上层结构总共5个文件:hw_config.c(用于USB硬件配置)、usb_pwr.c(用于USB连接、断开操作)、usb_istr.c(直接处理USB中断)、usb_prop.c(用于上层协议处理,比如HID协议,大容量存储设备协议)、usb_desc.c(具体设备的相关描述符定义和处理)。

基于STM32 USB固件库的主程序设计流程如图3所示。

设备初始化所做的工作主要有:初始化时钟系统、GPIO及相关设备;配置USB所用到的中断;配置和使能USB时钟;初始化全局指针。

进入主程序大循环后,扫描按键改动,按键有变动,通过SendReport()函数将按键状态发送到USB主机。实际上这里只是将数据写入IN端点缓冲区,主机的IN令牌包来的时候,SIE负责把它返回给主机。

5 系统测试与应用

软件设计完成后,将程序下载到STM32处理器中,连接计算机USB给处理器上电,在完成设备初始化后,打开计算机设备管理器可以看到键盘设备中新增一项HID Keyboard Device(如图4),这时键盘设备已经作为标准HID设备被计算机识别了。

接下来要进行的工作要根据键盘定制要求,查阅HID用途表文档,确定工控键盘上行列值对应的按键代码,修改函数SendReport(),完成键盘定制程序设计。函数SendReport()返回8字节报告暂存在数组Buf[8]中。通过报告描述符的定义及HID用途表文档,可知Buf[0]的D0是左Ctrl键,D1是左Shift键,D2是左Alt键,D3是左GUI(即Window键),D4是右Ctrl,D5是右Shift,D6是右Alt,D7是右GUI键。Buf[1]保留,值为0。Buf[2]-Buf[7]为键值,最多可以有6个。

6 结论

在工业控制应用领域,工控键盘定制屡见不鲜。本文通过对USB HID设备的研究,提出自定义USB工控键盘设计,电路简单,成本低廉,无需驱动自动识别,具有很高的实用价值和广阔的应用前景。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭