USB+HID数据通信接口的设计与实现

更新时间:2023-09-03 21:16:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

USB+HID数据通信接口的设计与实现

USBHfD数据通信接口的设计与实现

USB

Designand

HID数据通信接口的设计与实现

RealizatiOn0fUSBHfDInterfaceforDataTra仟ic

扶文树

陆信如

(南京北方信息产业集团有限公司,江苏南京211153)

提出了一种USBHID数据通信接口设计方案;根据主机在枚举期间的请求,详细论述了USBHID固件程序的设计过程;介绍了如何在VisuaIC++6.0集成开发环境下进行USBHID主机应用程序的开发;最后对整个方案进行了验证,验证结果表明按照该方案设计的数据通信接口运行稳定可靠。

关键词:USB,H}D,固伟程序,主机应用程序

Abst旧cl

projectofdesignjngtheUSBHIDInterfacefordatatra什icisbroughtfonvardTheprocessof

discussedin

detajI

On

designingUSB

HID

f;mlwarejsintroduced

thebasiSof

lherequestthatthehOst

deveIopedinbythe

Send|nthecOurseofenumefating.The

meansis

bywhichfheUSBHlDhostappIicationis

designed

VisuaIC++6.O.FinaIIythe

js

pro.E}ctisvaIidatedandthe

resuItjndicatesthafthedatatra仟icsystem

K唧fds:data

project

abIetorun

slabIy,

tra仟jcsystem,USB,HfD.firmwafe,hos£appIlcatjon

目前越来越多的测控系统、信号处理系统和智能仪器选用USB接口与PC机进行高速、海量的数据通信。但是。相对UART(通用异步串口)、LPT(打印机并行端口),USB的开发难度要大的多。采用HID(HumanInterfaceDevice,人机接口设备)的设计方案则可以很好的解决这一矛盾。在众多的US8设备类型中,HID是Windows完全支持的第一批设备类型。在运行Win98以上版本的PC机上,用户无需为HID开发、安装驱动,主机应用程序可以直接的使用WindowsAPI函数与之进行数据通信。此外。HID的数据报表非常灵活、富有弹性,可以实时的传输各种类礁的数据。因此,采用HID规范设计USB接口可以在不影响数据通信能力前提下大幅度降低设计的难度。

HID的固件程序设计

描述符的实际大小;主机向地址1、设备端点O请求设置配置;主机向地址1、设备端点0请求设置闲置;主机向地址1、设备端点O请求116字节的报表描述符。

1.2USBHID对主机请求的解析

USB控制器在接受图1所示的一笔设置事务后触发中断,设置相应的标志位供固件程序查询,固件程序在得知有设置事务来到后,对该事务的数据信息包DArA0进行解析,以确定如

何响应请求。图1中DMA0包中的数据域(Data)的格式是固

定的,可用C语言的结构体数据类型描述如下:

HID的固件程序分为USB控制器的初始化、主机请求响应和通信数据收发三个部分:USB控制器的初始化包括端点的使能、中断方式或DMA的配置、数据缓存的没置等等,依具体的USB控制器而定;USBHlD类设备固件程序至少需要响应获取描述符(GELOESCRIPl_0R)、设置地址(SET-ADORESS)、

田1一笔设置摹务

typedefstruct—host—request

unsignedcharunsignedchar

unsigned

bmRequesfrype:b只equest:

shOrtintWVaIue:

设置配置(S叫ONFIGURAT

ION)、设置闲置(Set-ldIe)四种

请求;通信数据收发部分的主要工作是以中断或DMA方式是向数据缓冲区读写数据。GET-DESCRIP丁OR、SET_.ADDRESS、SET.CONFIGURATION是USB规范中的标准请求。而SeLJ—

unsignedshOrtintwInde×:

unsignedshortintwLength:

lHOSLREOUEST:

dIe则是HID类设备的特定请求。其中GELDESCRlPTOR分

为请求设备描述符、请求配置描述符、请求报告描述符,并分别限定了描述符的最大长度。

1.1HlD的枚举

可分以下几种情况对数据域进行解析:

1)当bmRequestType=oX80且bRequesl-0×06,主机请求类型为GET-DESCRIPTOR,此时若wVaIue的高字节为O×01表明主机向设备请求设备描述符;为ox02表明主机向设备请求配置描述符;为0x22表明主机向设备请求报表描述符。

2)当bmRequeslType=0x00且bRequest=0x05,主机请求类型为SET二.ADDRESS,wVaIue的高字节为设置的地址值。

3)当bmRequestType=0×00且bRequesl=0x09,主机请求类型为SELCONFIGURATION,wVaIue的低字节指示了一个设置配置。

4)当bm只equestType=0x21且bRequesl=0x0A,主机请求类型为Sel-Jdle,该请求的作用是限制中断输入端点的报表频率来节省总线带宽,wVaIue的高字节设置了报表之间的最大

时间间隔,低字节设置了设备所支持的报表类型。

枚举是主机与USB设备最初的数据交换过程,USBHID固件程序中大多数代码是为了响应主机在枚举期间的请求而设计的。因此了解这一枚举过程是有必要的。需要指出的是,对于不同的HJD,该过程有所不同,以下是一种比较典型的过程,由高端的USB分析仪对典型的HID分析而得,可概括为如下11个步骤:主机向地址0、设备端点0请求18字节的设备描述符;主机向地址0、设备端点0请求设置地址;主机向地址1、设备端点0请求18字节的设备描述符;主机向地址1、设备端点0请求9字节配置描述符;主机向地址1、设备端点0设备请求255字节的配置描述符;重复;重复;重复,但请求的字节数为中配置

万方数据

USB+HID数据通信接口的设计与实现

<工业控制计算机》2009年22卷第2期

1.3USBHID枚举期间对主机请求的响应

1.3.1枚举期间发送的描述符结构体

USBHID类设备在枚举期间要发送的描述符的组成在参

考文献[5—6]有详细的描述,同样可用C语言的结构体表示。以下是本文中描述符对应的结构体名:

设备描述符一USB—DEV—DESCR;配置描述符一USB—CONFIG—DESCR;接口描述符一USB-INTERF_DESCR;HID类描述符一USB—HlDLDESCR;端点描述符一USB-EP_DESCR;报告描述符.二USB—HIDREP-DESCR:定义描述符的集合:

typedefstrucf—usb_-descr{

∥配置描述符:

USB_cONFIG—DEscRconf.gDescr://接口描述符:

USB—INTER已DESCR

InterfaceDescr:

//HID类描述符:

USB—HIDLDESCR

HidDesr:

//OUT端点描述符:

USB—EP—DESCROutEpDescr:

//lN端点描述符:

USB—EP..DESCR

InEpDescr:

}USB—DESCR:

1.3.2固件程序响应请求的过程

1)初始化1.3.1的描述符结构体常量;

2)当设备请求设备描述符时,发送USB—DEV—DESCR结

构体常景;

3)当设备请求配置描述符且请求的字节为9字节,发送USB—CONFIG—DESCR结构体常量响应;

4)当设备请求配置描述符且请求的字节为255或41,发送USB—DESCR结构体常量响应;

5)当设备请求配置描述符且请求的字节为255或41,发送USB—DESCR结构体常最响应;

6)当设备请求报表描述符时,发送USB.-HIDREP-DESCR结构体常量响应;

7)当设备请求为SET.-ADDRESS、SELCON

FIGURATION、

Sel-IdIe,发送O字节数据响应。

USBHID主机应用程序设计

USBHlD主机应用程序一般运行在PC机上,其功能主要

是查找指定的HID并与之进行数据通信,常常会有人机界面供

用户操作。

2.1相关动态链接库的调用

本文的USBHID主机应用程序是在VisualC++6.0集

成开发环境下、调用Windows的API函数来开发的,这些API函数包含在kemel32.dlI、hid.dlI和setupapi.dll中。kemel32.d¨

的调用是由VisuaIC++6.O编译和链接程序完成的,而h.dd¨

和selupapi.d¨则需要由应用程序隐含链接来进行调用,具体的方法如下:

1)按图2所示添加hid.I.b与setupapi.1ib;2)在应用程序合适的文档内引入头文件:

e)(1em”C”I

#incfude”hidsdih”#incIude<setupapi.h>

完成以上两步需要WindawsDDK(驱动开发组件)提供的

万方数据

圈2添加HID函数库到工程内

以下是USB

HlD类设备主机应用程序从kernel32.d|I、

1)HidDLGetHidGu.d一获取HID类设备的全局唯一标识

(GUID);

2)SetupDiGelClassDevs一获取一个设备信息群.该群包3)SetupDiEnumDeviceInterfaces一获取设备信息群内指4)SetupDiGetDevlceInterfaceDetai卜_获取指定设备的路径;5)Creale刚e一开启指定设备;

6)HidD—GetAtfr.butes一获取指定设备的厂商lD、产品ID、版本号;

7)HidD.-GetPreparsedData一获取含有指定设备能力信息的缓冲区指针;

8)HidP—GetCaps一获取指定设备的能力;9)WriteF¨e一发送一个报表给设备;10)ReadFiIe一从指定设备读取一个报表;

圈3

HID应用程序的流程

文档hidsdi.h、hidpi.h、hidusage.h、hid.“b和setupapj,Iib。

hid.d¨和setupa叫d¨依次调用的函数的名称及功能:

含HlD类别内的所有设备;

定设备接口的信息;

USB+HID数据通信接口的设计与实现

10

USBHID数据通信接口的设计与实现

11)WaitForSingIeObject一等待ReadFiIe完成或超时。

2.2USBHID主机应用程序的流程

如图3,USBHID类设备主机应用程序的基本思路是先查

找指定的USBHlD,再与之进行数据通信。USBHlD类设备在的厂商lD、产品ID和版本号由设备描述符USB—DE、,.DESCR设定,其中厂商ID和产品ID在设备枚举成功后,对用户是可见的.是设备的唯一标识,利用二者查找设备是较为理想的选择。HlD的通信能力是由报告描述符USB—HIDREP.DESCR指定,其中包含了收发数据的长度和类型。3设计方案的实现

选用ARM控制器LPC2378应用模块作为USBHID的硬件平台。将LPC2378片上的USB控制器的初始化程序和和本文的固件程序在Ke¨斗Vision3集成开发环境下调试通过,将生成的可执行代码下载到LPC2378片上的FIaSh程序存储器中,这样就完成了USBHID的设计。

USBHID主机应用程序的人机界面如图4所示,本文的主

圈4

USB

HID主机应用程序的人机界面

二者间的实时数据通信准确无误,这表明文中固件程序和主机应用程序对设计HID类USB数据通信接口有较高的参考价值。

参考文献

[1】萧世文,宋延清.USB2.O硬件设计[M].2舨.北京:清华大学出版

社,2006

[2]刘立,澍剑斌,等.基于HID类的USB接口技术研究[J].计算机工程

与科学,20Q3。25(5):82—85

[3]詹克团,侯国志.USBHID类设备的开发[J].电溯与仪表,2004。41

(5):48—50

[4]张念淮,江浩.USB总线接口开发指南[M].北京:国防工业出版社,

2001

机应用程序含在该界面对应的程序模块中。在查找到LPC2378应用模块对应的HlD后,在多媒体定时器中断事件中用Wr.1e-F.Ie函数以5ms的间隔向HID发送数据,每次发送的数据为64字节,数据的变化规律用C语言表示如下:j++://j为unsignedchar型

for(i=0:i<64:i++)//I为unsignedchar型

TxD【日=H://要发送的数据,unsIgnedchar型

LPC2378应用模块接收后立即向PC机回发收到的数据,主机应用程序在数据接收线程中利用ReadF¨e函数和Wait.ForSIngIeObject函数接收回发的数据,并将其存储在硬盘上。在以上数据交换过程进行了若干小时后。点击图4所示的“暂停”,再点击“验证”。“验证”对应的代码从硬盘上读取接收的数据,按照发送数据的规律对读取的数据进行逐一校验。

4结束语

[5]Univer髓I

seriaI

BusSpecification

Revisbn2.O

fZ】.compaq.

(HID)

HewIe仕一PaCkard.…。2000

[6]附ice

CIassDefinition

forHum醐InterfaceDevices

Fj朋wareSpeci“cation【Z】.USB

lmplementer’sForum.2001

[收稿日期:200&10.17】

经过长时间的实验,HlD和其主机应用程序运行稳定、可靠,

-●H—+——■—-..--—卜——+.-■——-.——一.一 ..——..——一.— ..——_.—-—卜嶙■— —+—.+-—卜—■一—■一-—--..—— +--+——+--_.一 —卜——+——+ —■——■——一.——..一—■—— +--■一 —卜喟+—+—+ + + +-+-+—+ (上接第7页)

1MB/S。

№2■

石而

{;D由嗣栅伽帅削

.一一.一弛■3

2.4系统软件设计

整个系统的软件设计包含用户界面和控制程序两个部分。用户的界面包含三个磁道的写读磁内容设置.磁道选择等。控制程序包含磁条内容的解码和PCI一1751的控制指令的发出,程序的编写全部采用DeIphi语言编译,在这里就不详细描述。

3结束语

;i

再i酾————]广一

龋————‘*】,,,H,】}粤—一;;{■■—『-;;■_;;——

r1一^n一一一一r1一一r1广——一

翻,■_—————1

髓伽一

圈4

一■翻I口h岫埘帆翟黼一哦脯

采用计算机配合数据采集卡完成读写磁系统的实现,简单方便,可移植性好.在今后产品的柔性化设计中,利用计算机和数据采集卡进行的产品实现将占有重要地位。

参考文献

[1]张波.批量写磁打卡的程序设计[J].中国信用卡,2000(8):32—34【2]徐冠捷,曹柏荣.基于单片机的磁卡读写机[J].单片机开发与应用。

2006(1):100一103

MAG—TEK21006505各信号时序圈

2.33PCI一1751数据采集卡介绍

研华PCI一仃51是一款基于PCI总线的48位数字量I/o卡,还提供一个事件计数器和2个16位的定时器。PCI一仃51仿真8255PPl模式O,但它的缓冲电路能够提供比8255更高的驱动能力。

PCI一1751仿真两个8255PPI芯片,提供48位数字量I/O,其中48位被分为6个8位I/O。用户可以通过软件对每个端口进行配置。双中断处理能力增加用户使用板卡的灵活性。PCI一1751板卡使用高密度的SCSI68引脚接口,使与现场设备的连接方便,可靠。

此卡与工控机通过PCI接口进行通讯,其传输速度为

[3]汪建宇.PP一1型磁卡读/写器[J].中国仪器仪表,2005(11):91—93[4]国家质量监督检验检疫总局,GB—T15120【1卜1994识别卡记录技术[S].北京:中国标准出版杜,1995[5]PCI一1751快速安装手册[K]

[6]薛鸿贵,李振华.磁卡电话机原理使用与维惨[M】.北京:人民邮电出

版杜,1995

[收稿日期:2008.10.6]

万方数据

USB+HID数据通信接口的设计与实现

USB HID数据通信接口的设计与实现

作者:作者单位:刊名:英文刊名:年,卷(期):引用次数:

扶文树, 何军, 陆信如

南京北方信息产业集团有限公司,江苏,南京,211153工业控制计算机

INDUSTRIAL CONTROL COMPUTER2009,22(2)0次

参考文献(6条)

1.萧世文.宋延清 USB 2.0硬件设计 2006

2.刘立.谢剑斌.卢力.余理富 基于HID类的USB接口技术研究[期刊论文]-计算机工程与科学 2003(5)3.詹克团.侯国志.吕铁良.袁国顺 USB HID类设备的开发[期刊论文]-电测与仪表 2004(5)4.张念淮.江浩 USB总线接口开发指南 2001

5.Universal Serial Bus Specification Revision 2.0 2000

6.Device Class Definition for Human Interface Devices(HID) Firmware Specification 2001

相似文献(10条)

1.期刊论文 倪陈强.陈贇.NI Chenqiang.CHEN Yun 基于C8051f340单片机的USB HID类设备设计 -现代电子技术2007,30(18)

USB作为近年来计算机和嵌入式领域中的热点,推动了计算机外设的飞速发展,各种具有USB接口的嵌入式系统不断涌现.但是,USB协议复杂,若为每种设备都开发相应的设备驱动程序,开发周期势必加长.介绍一种USB外设的实现方案,该方案采用C8051F340单片机内置的USB接口,实现了基于HID类协议的USB设备的设计.采用该方案实现USB设备,无需专门开发设备驱动程序.该方案实用性强,可大大缩短开发周期.

2.期刊论文 胡晓宏.解成俊.HU Xiao-hong.XIE Cheng-jun 基于嵌入式系统的USB(HID))设备设计 -微计算机信息2009,25(17)

由于目前USB设备多是由专门的USB控制芯片来实现其应用控制,芯片内集成了USB协议,成本较高,PCB板的面积较大.对于成本敏感的应用有很大限制.本文提出了仅用一片MCU(微处器-单片机)或嵌入式系统芯片来实现其与PC机通讯的方法.该方法使用微控制器仿真USB设备,极大地方便了用户的开发,同时降低了功耗、成本.

3.期刊论文 彭琰.曾云.王太宏.帅金晓.PENG Yan.ZENG Yun.WANG Tai-hong.SHUAI Jin-xiao 基于HID类USB外设功能控制器的ASIC设计 -微电子学与计算机2009,26(4)

针对USB1.1协议及HID1.1规范,提出了一种基于HID类设备控制器的内部功能控制器的ASIC设计.用硬件电路的方式对HID功能控制器进行设计,由于不需要使用MCU,从而降低了成本,并提高了运行速度.采用Modelsim软件进行功能仿真的结果表明,设计达到了预期的功能和性能要求.

4.期刊论文 齐治文.蒋韶生 基于USB HID规范的网络电话的研究 -电脑开发与应用2007,20(1)

种类繁多的设备使用同一个USB接口实现不同的功能,用其与HID规范结合,实现与主机的通信,重点阐述了基于USB HID规范的网络电话和程序设计方法与实现技术.该技术的关键是主机与设备的通信,因而添加、查找、读写USB与检查设备状态等模块即是该网络电话程序的核心模块,预计网络电话将成为第三代电话.

5.期刊论文 杨晶晶.江春华.Yang.Jingjing.Jiang.Chunhua USB HID设备驱动程序设计 -微计算机信息2006,22(17)

USB(Universl Serial Bus)即"通用串行总线"是一种应用在计算机领域的新型接口技术.它的出现大大简化了PC机和外围设备的连接过程,使PC机接口的扩展变得更加容易.USB作为近年来计算机和嵌入式领域中的热点,推动了计算机外设的飞速发展.本文介绍了适用于PC的嵌入式操作系统的USB HID设备驱动的设计,并给出了具体的实现方法.

6.期刊论文 涂晓强.周洪利.Tu Xiaoqiang.Zhou Hongli 基于HID类的USB人机接口设计 -单片机与嵌入式系统应用2007(6)

USB设备及其驱动程序的复杂性给开发人员带来了很大的开发难度.本文给出一种采用C8051F120微控制器和PDIUSBD12 USB控制器结合的方式实现人机接口设备(Human Interface Devices)的方法,以及如何编写应用程序来对它进行访问.此设备无需编写USB设备驱动程序,Windows系统能够自动识别.

7.学位论文 周程 基于USB HID类的γ能谱数据采集系统研究 2006

野外地面γ射线能谱测量主要研究地壳岩石土壤中产生的能量范围约为30keV-3000keV的γ射线,这里面包含着铀、钍、钾等天然放射性核素信息,核工程活动产生的大量人工放射性核素信息以及γ射线与地壳相互作用产生的相关信息。γ射线能谱数据采集系统的研究则是整个核信息探测研究项目的基础和重要课题。 本设计构建在以ARM7TDMI(-S)处理器为核心的硬件、软件架构研究基础上,引入了USBHID接口技术,即充分发挥了USB接口的通用普及、传输速率快和简单易用的特性,又使得具有USB接口的仪器无需驱动程序即可和上位机进行数据通讯,具有即插即用自识别功能,极大地方便了操作,同时缩短整个仪器的开发周期,提高开发效率。 与国内外现有的γ谱数据采集系统相比,本论文研究成果有以下特点:1.数据采集系统以32位ARM7TDMI(-S)为控制核心,外围电路带有LCD显示以及键盘、时钟和存储电路.无需计算机,用户就可与之进行交互工作,完成对数据的采集、存储、计算分析等过程。系统具有低功耗、小型化、高性价比等特点。 2.实现了γ数据采集系统与PC主机USB接口通讯。随着PC机的迅速发展,USB技术将会取代RS-232在核仪器中的应用。在此,研究USB技术在核仪器中的应用是具有实用意义的。 3.基于USB接口技术,本设计实现了USB设备的HID类设计,即PC机将本系统识别为是一个HID类设备(如同PC机识别鼠标或者键盘等)。这样,无需编写烦琐的驱动程序就可实现PC机与本系统的数据通讯。大大缩短了开发周期,提高了开发效率,并且便于系统的维护与升级。 4.引入了32位ARM技术,在更高的技术起点上研究和设计核能

USB+HID数据通信接口的设计与实现

谱数据采集系统,为研发新一代核仪器作好了必要的技术储备。

8.期刊论文 詹克团.侯国志.吕铁良.袁国顺 USB HID类设备的开发 -电测与仪表2004,41(5)

对HID类设备的描述符结构、功能特征、数据传输特点和设备请求进行了详细的阐述,并介绍了HID类设备开发的主要任务和基本方法.

9.期刊论文 李国.李桂满.谈娴茹.王莉.LI GUO.LI Gui-man.TAN Xian-ru.WANG Li 基于USBHID类的实时数据采集系统设计 -微计算机信息2008,24(31)

本文提出了一种基于USB HID类的实时数据采集系统.详细地介绍了该实时系统的软件设计方案和固件、硬件设计方案,并给出了实际的测试结果,操作简便、采集数据可靠,效果良好.同传统的数据采集系统相比,该方案使用USB HID类,避免了编写上位机复杂的USB驱动程序,具有无驱动、简单、实时和多路采集处理等优点.

10.期刊论文 刘立.谢剑斌.卢力.余理富 基于HID类的USB接口技术研究 -计算机工程与科学2003,25(5)

本文首先简单介绍了USB和HID类的基础知识,然后详细地阐述了基于HID类的USB接口应用的总体结构、硬件设计和软件实现,最后说明了实际应用中的注意事项.

本文链接:http://www.77cn.com.cn/Periodical_gykzjsj200902005.aspx

下载时间:2010年3月20日

本文来源:https://www.bwwdw.com/article/8bpi.html

Top