历史上的今天
返回首页

历史上的今天

今天是:2025年02月04日(星期二)

2018年02月04日 | 基于HID协议的工控自定义键盘接口设计方案

2018-02-04 来源:eefocus

内容摘要:设备智能化改造大趋势下,嵌入式计算机大量的应用到工控系统中,自定义工控键盘的应用也变得越来越广泛。本文提出一种基于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所示。

基于HID协议的工控自定义键盘接口设计

    其中键盘扫描部分软硬件设计根据具体键盘定制要求,预留足够的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所示。

基于HID协议的工控自定义键盘接口设计

    图中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所示。

基于HID协议的工控自定义键盘接口设计

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

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

    5 系统测试与应用

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

基于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工控键盘设计,电路简单,成本低廉,无需驱动自动识别,具有很高的实用价值和广阔的应用前景。


推荐阅读

史海拾趣

ANADIGICS公司的发展小趣事

ANADIGICS是一家曾经存在的半导体公司,总部位于美国新泽西州的华兹堡市。以下是ANADIGICS公司发展的相关故事:

  1. 创立与初期发展:ANADIGICS公司成立于1985年,最初专注于开发射频(RF)集成电路和功率放大器。公司在其创始人的领导下迅速崛起,以其创新的技术和产品在无线通信领域赢得了声誉。

  2. 产品创新与市场占有率提升:ANADIGICS公司在其创立初期就致力于开发高性能的射频和功率放大器产品。随着移动通信技术的迅速发展,ANADIGICS的产品得到了广泛应用,其在市场上的份额逐渐增加。

  3. 全球扩张与市场渗透:ANADIGICS公司通过建立全球性的销售渠道和生产基地,扩大了其产品的市场覆盖范围。公司在美国、欧洲和亚洲等地设立了销售办事处和生产工厂,加强了与客户的联系,并提高了产品的交付效率。

  4. 技术领先地位与合作伙伴关系:ANADIGICS公司不断投入研发,保持技术领先地位。公司与各大手机制造商和无线通信设备供应商建立了合作伙伴关系,共同推动技术创新和产品发展。

  5. 挑战与破产:然而,随着市场竞争的加剧和技术变革的不断推进,ANADIGICS公司在市场上的地位逐渐受到挑战。公司陷入了财务困境,于2016年申请破产保护,并逐步停止了业务。最终,ANADIGICS公司在同年被日本半导体公司II-VI收购,结束了其独立运营的历史。

以上是ANADIGICS公司发展的一些主要故事,展示了该公司从创立到破产的发展历程。

Digital Voice Systems Inc公司的发展小趣事

Digital Voice Systems, Inc.(DVSI)于1988年成立,当时正值数字通信技术的兴起阶段。公司创始人凭借对语音编解码技术的深刻理解和前瞻性的市场洞察力,决定投身于这一领域。他们开发出了具有专利保护的基于鲁棒性多带激励模型(MBE Model)的低码率语音压缩算法,如IMBE和AMBE编解码系统。这些算法在当时的市场上独树一帜,为DVSI赢得了第一桶金。

在创立初期,DVSI面临着资金、技术、市场等多方面的挑战。然而,他们凭借着坚定的信念和不懈的努力,逐步克服了这些困难。他们不断投入研发,优化算法,提高产品的性能和稳定性;同时,他们积极开拓市场,与各大通信设备制造商建立合作关系,将产品推向市场。

随着时间的推移,DVSI的产品逐渐在市场上获得了认可。他们的编解码系统被广泛应用于移动通信、卫星通信、军事通信等领域,为客户提供了高效、稳定的语音通信解决方案。DVSI也因此逐渐崭露头角,成为了电子行业中一颗耀眼的明星。

故事二至五框架概述

  1. 技术创新与突破:DVSI在语音编解码技术方面的持续创新,如推出新一代的高效压缩算法,进一步提升了产品的竞争力。
  2. 市场拓展与国际化:随着公司实力的增强,DVSI开始拓展国际市场,与全球多家知名企业建立合作关系,实现了国际化发展。
  3. 合作与竞争:在电子行业中,DVSI与其他企业的合作与竞争并存。他们通过合作共赢的方式,共同推动行业的发展;同时,也面临着来自竞争对手的挑战和竞争压力。
  4. 企业文化与团队建设:DVSI注重企业文化建设,倡导创新、协作、共赢的价值观。他们注重团队建设,吸引了一批优秀人才加入公司,为公司的发展提供了有力的人才保障。

以上故事和框架概述仅供参考,您可以根据这些线索进一步挖掘和编写关于DVSI公司的故事。

DIALIGHT公司的发展小趣事

随着业务的不断发展和市场的不断扩大,DIALIGHT公司逐渐实现了全球化布局。他们在美国、英国、丹麦、德国、马来西亚、新加坡、澳大利亚、墨西哥和巴西等地设立了分支机构或办事处,为全球客户提供及时、高效的服务。此外,DIALIGHT还积极寻求与其他企业的合作与共赢,通过战略合作协议的签署,为双方带来新的业务机遇和合作空间。这些举措不仅增强了DIALIGHT的市场竞争力,也为其未来的发展奠定了坚实的基础。

请注意,由于篇幅限制,以上三个故事仅为DIALIGHT公司发展历程的简要概述。如需更详细的信息和更多故事,建议查阅相关资料或访问公司官网。

ASM公司的发展小趣事

ASM公司的创始人阿瑟·德尔·普拉多(Arthur del Prado)在移居美国后,遇到了半导体产业的蓬勃发展。他敏锐地洞察到了这一行业的巨大潜力,并决定投身其中。起初,他只有有限的资源和500美元的资金,但他凭借着对市场的深刻理解和不懈的努力,成功地在欧洲市场打开了局面。1964年,他在荷兰创立了先进半导体材料公司(ASM),这标志着ASM公司的正式诞生。

All Sensors公司的发展小趣事

近年来,All Sensors通过与深圳电通纬创微电子股份有限公司的合作,成立了中美合资企业——深圳华美澳通传感器有限公司。这一合资企业的成立,不仅加强了All Sensors在中国市场的地位,也为其在全球范围内的业务拓展提供了有力支持。华美澳通公司利用All Sensors的专利技术,专业从事MEMS压力传感器及应用模组的研发、生产及销售,为电子行业提供了更多优质的产品和服务。

硕颉(BITEK)公司的发展小趣事

硕颉科技股份有限公司成立于1999年11月,总部设在台北市。自成立以来,公司一直专注于积体电路的设计、研发与销售,致力于为客户提供高质量的电子产品解决方案。在创立初期,硕颉便以其创新的技术和严谨的研发态度,迅速在电子行业崭露头角。公司资本额为新台币三亿三仟万元,为公司的稳健发展提供了坚实的资金基础。

问答坊 | AI 解惑

数字电路非常基础的教材

数字电路非常基础的教材…

查看全部问答>

来讨论下VHDL里边的库吧

最近用VHDL编程,发现有很多时候遇到《Error (10327): VHDL error at and2.vhd(11): can\'t determine definition of operator \"\"+\"\" -- found 0 possible definitions》这样的问题,开始不知道为什么,后来在知道不同的数据类型的运算是定义在 ...…

查看全部问答>

你如何定义射频?

此前一直在说射频,但是具体到概念,心里还真有些迷糊,呵呵,网上查了查,有个概念 射频表示可以辐射到空间的电磁频率,频率范围从300KHz~30GHz之间。 在电磁波频率低于100khz时,电磁波会被地表吸收,不能形成有效的传输,但电磁波频率高于100 ...…

查看全部问答>

为什么9650预览的图像很红?

原来我的9650输出图像时30万像素的,可以正常显示图像。 可是我从代理要到了130万像素的配置后,图像发红,而且是很红。 不知道有没有遇到这种情况的?是如何解决的?…

查看全部问答>

去各位救急!!!

那位可以为小弟买到一套。44b0的散件。全部。包括电容、电阻之类的东西。不要成品。想自己动手做板子。小弟这里的市场什么都没有。只有一些电视机的配件别的一概没有啊! 谢谢!…

查看全部问答>

做一个受欢迎的提问者

要想让你的问题尽快得到解答,我想以下几条是你应该注意的: 1.首先说清楚你使用的软,硬件平台。比如:我使用wince5.0在 2440上做开发... 2.问题要尽量具体,不要问诸如:我要做一个什么项目,该怎么做?或者我要做一个什么软件,该怎么做这类的 ...…

查看全部问答>

uversion如何知道arm的程序内存占用情况

我用的uversion4,lm3s8962的芯片。 我建立一个全局变量 uchar a[9000]100]; 按道理应该超过ram的容量了,但是怎么编译后不报错呢?如何才知道内存有没有超?…

查看全部问答>

生产厂家规范的-- LED驱动电源测试报告范例

replyreload += \',\' + 1365593;这份报告是基于一个8W LED驱动电源临时做的一个基本范例,是考虑有公司商业机密的问题,略作修改: 1.不对版权负责,只供参考. 2.不对内容负责,不做解释.每家公司各不相同,难于解释不同.敬请谅解. Timson,如果您要 ...…

查看全部问答>

ad测量通过串口发出的程序,只能发出FF

我用AD采样,然后想通过串口发出,结果只能得到FF。大家帮我看看那里出现了问题,谢谢 #include  \"msp430g2553.h\" #define uchar unsigned char long temp; void uart_init(void) {         BCSCTL1 = CAL ...…

查看全部问答>