新闻中心

EEPW首页>嵌入式系统>设计应用> LPC1114/LPC11U14和LPC1343对比学习(八)USB

LPC1114/LPC11U14和LPC1343对比学习(八)USB

作者: 时间:2016-11-27 来源:网络 收藏

在HID的8种描述符中,最为重要而且复杂的应该是报表描述符,其定义了数据的存储格式和实际意义。如果能够正确的理解报表描述符,那么对数据的处理就能达到应用自如了,所以在设计描述符的时候,一定好多话费时间来理解和编写这一部分的内容。特别要主要以下几点:

1. 输入输出等项使用的数据必须是整数字节,如果没有完全使用到,也必须通过说明来补齐。

2.主要报表的三种项的应用及使用范围。

命令请求:

HID设备类特定的命令有6个:Get_Report、Get_Idle、Get_Protocol、Set_Report、Set_Idle、Set_Protocol。

通过近段时间来对NXP的HID例程的学习,对其有了个大致的了解,USB一个包含以下几个文件:

1. hid.h文件对HID协议中使用到的各种描述符、字段等进行了全面的描述和定义,在需要更改其他应用时,只需要选择相应的宏就可以,非常清晰明确。

2.hiduser.c/hiduser.h文件对HID中需要使用到的6中设备命令请求函数进行了编写描述。

3.usb.h文件对USB标准中需要使用的报告和描述符进行全面的定义。

4.usbcfg.h文件对USB中应用到的电源、端点、接口、缓冲等进行配置说明,完全可以根据自己的需要来配置USB。

5.usbcore.c/usbcore.h文件是USB协议内核文件,是各种USB开发必备文件,完成了USB的核心内容,也是USB开发的难点和重点。

6.usbdesc.c/usbdesc.h文件为USB各种描述符的实现代码,开发不同的HID设备时,需要在此文件中更改相应描述。

7.usbhw.c/usbhw.h文件实现与USB相关的硬件配置等。

8.usbuser.c/usbuser.h文件实现各种事件和端点的实现代码,根据自己的应用更改端点代码实现USB通信。

在HID开发中,报告描述符是最关键而且最复杂的描述符,因为它没有专门的格式,随意性比较大,但是HID的数据解析完全是依靠此描述符。

下面是NXP例程中的HID的报告描述符:

程序代码都注释了,这里不再详细说明,需要注意中间三段代码:

1. 第一段中定义了一个Input,数据为1位,一共有3个这样是数据;

2. 第二段中定义了一个Input,数据为1位,一共有5个这样是数据,不过需要注意,这里定义的是常量。就是说这里的5个位并没用实际意义,完全是为了补齐一个字节的。这一点要注意,在报告描述符中,必须使用整数字节。

3. 第三段中定义了一个Output,数据为1位,一共有8个这样的数据,也就是说,由8个位组成的一字节输出数。

到此我们不难看出此HID使用的是1字节是输入和1字节是输出,只是在1字节输入数据中,这里只使用了3为。对于其他的描述符这里就不再说明,可以直接对照上面的描述符格式就可以看懂,需要注意HID必须设置的几个字段就行了。

其他描述符:

在这些描述符中我们可以看出设备的具体功能,以及通信使用的端点,缓存等

通过上述对描述符的了解,基本的HID信息我们已经了解,下面就可以编写程序,通过把获取的数据进行验证了,这里我们是通过按键按下给PC发送数据,通过PC发送数据在设备上通过LED显示的。

到此就可以把代码下载到开发板上,并通过实验进行验证了。下面我们采取两种方法:

1.使用周工例程中的HID Client上位机软件,进行验证。

把开发板下载代码后插入PC,通过Device选择我们的“LPC11Uxx USB HID”设备,下面我们可以看出,设备在没有键按下时读取为0x01,当按下键时,读取为0x00。在Outputs中勾选相应的复选框,我们可以看到开发板上相应的LED就别点亮了。



评论


技术专区

关闭