LPC1114/LPC11U14和LPC1343对比学习(八)USB
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就别点亮了。
这种方法只是验证本实验是可以的,但是要开发其他USB功能设备就不行了,下面我们介绍一种通用的方法。
2. 使用Bus Hound软件验证,这个软件,刚开始很多人都不会用,这里将详细点。
打开软件,在设备项选择我们的USB设备,如下图
需要注意的是在发送数据时,需要选择USB人体学输入设备,而不是下面的HID-compliant device。如果是双击HID-compliant device弹出的窗口中并没有端点,是不能通信的,应该双击USB人体学输入设备,弹出如下界面:
通过上图,我们可以看出,端点和我们定义的是一样的
下面我们就可以选择端点进行数据通信了,选择需要端点,填写发送数据长度,在下面输入要发送的数据,选择“Run”,就可以把数据发送出去了。 之后把软件切换到Capture,可以捕获输入输出数据,如下图。
通过上面的验证,我们可以得知,实验结果和我们想要的是一样的,以后对于多字节的收发,我们就可以通过Bus Hound软件进行验证了。
自定义多字节发送的实现:
下面我们只需要修改几个部分就能实现了。
1. 修改报告描述符:
2. 修改端点描述符:
3. 修改输入输出变量:
4. 修改其他与InReport和OutReport相关的地方。
5. 编写代码实现接收后原样返回。
6. 试验一下:
LPC1114LPC11U14LPC1343US 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)