关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 基于HID协议的USB人机交互设备的接口设计

基于HID协议的USB人机交互设备的接口设计

作者: 时间:2010-09-15 来源:网络 收藏

定义了11种请求命令,通过这些请求来获得设备的信息及对设备进行设置。类设备除了要支持这11种标准的请求外,还要实现以下6种特定请求:

本文引用地址://m.amcfsurvey.com/article/202511.htm

  ① Get_Report——主机用控制传输从设备接收数据,所有类设备都要支持这个请求;

  ② Set_Report——设备用控制传输接收主机的数据,设备可以不支持此请求;

  ③ Get_Idle——主机读取设备当前的空闲速率,设备可以不支持此请求;

  ④ Set_Idle——设置闲置状态,设备可不支持此请求;

  ⑤ Get_Protocol——主机获得设备的当前活动是引导还是报告;

  ⑥ Set_Protocol——在引导协议和报告协议间切换,设备如果支持系统引导(如键盘和鼠标),就必须支持Get_Protocol和Set_Protocol请求。

  2接口固件设计与实现

  该设备采用C8051F120微控制器和PDID12芯片来实现,如图3所示。


图3 HID系统结构框图

  因为PDID12的主端点(Endpoint2)具有64字节的双缓冲,能够提供比较高的速度,所以在端点描述符里把它配置为中断传输方式,而Endpoint1没有使用。PDIUSBD12通过中断触发CPU来响应主机的各种请求。

  此系统采用的USB协议版本是1.1,所以能够支持中断输出传输。为了让主机把设备识别为HID类别,定义设备接口描述符时类别这一字段的值必须设置为0x03(HID类别),这样主机就会继续请求获得设备的HID描述符和报告描述符。在主机Get_Descriptor请求中,当值字段的高位字节为0x21时,表示主机要求获得HID描述符;当值字段高字节为0x22时,就是主机要求获得报告描述符。对于报告描述符,可以参考HID Usage Tables规范。HID Descriptor Tool工具可以帮助建立和测试编写的报告描述符。这里定义了一个输入和输出64字节数据的报告描述符。

  code unsigned char szReport[] = {

  0x06,0xA0,0xFF,//用法页(FFA0h, vendor defined)

  0x09, 0x01,//用法(vendor defined)

  0xA1, 0x01,//集合(ApplicaTION)

  0x09, 0x02 ,//用法(vendor defined)

  0xA1, 0x00,//集合(Physical)

  0x06,0xA1,0xFF,//用法页(vendor defined)

  //输入报告

  0x09, 0x03 ,//用法(vendor defined)

  0x09, 0x04,//用法(vendor defined)

  0x15, 0x80,//逻辑最小值(0x80 or -128)

  0x25, 0x7F,//逻辑最大值(0x7F or 127)

  0x35, 0x00,//物理最小值(0)

  0x45,0xFF,//物理最大值(255)

  0x75, 0x08,//报告长度Report size (8位)

  0x95, 0x40,//报告数值(64 fields)

  0x81, 0x02,//输入(data, variable, absolute)

  //输出报告



评论


相关推荐

技术专区

关闭