新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于HID协议的工控自定义键盘接口设计

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

作者:时间:2014-03-05来源:网络收藏
基于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(用于上层协议处理,比如,大容量存储设备协议)、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设计,电路简单,成本低廉,无需驱动自动识别,具有很高的实用价值和广阔的应用前景。


上一页 1 2 下一页

评论


技术专区

关闭