微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > LPC1114/LPC11U14和LPC1343对比学习(八)USB

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

时间:11-27 来源:互联网 点击:
这3种芯片的功能非常多,到此基本上我们已经介绍完成,只有AD、WDT等没有介绍,鉴于其难度不大这方面的内容就不再说明。下面将进行终极篇的学习----USB学习,由于USB难度非常大,这一贴可能会编写很长时间,这里将主要学习HID的应用。

LPC1114没有USB功能,所以这里只能针对LPC1343和LPC11U14进行说明。对于这两种有USB功能的芯片其还是区 别,LPC1343内部集成了USB驱动,而LPC11U14没有此功能,所以LPC1343USB开发比较简单一点,价格也要贵一点。为了编写出通用的 USB驱动代码,这里将先对LPC11U14 USB进行学习,之后在移植到LPC1343。

鉴于USB开发难度,这里将不会从零开始开发USB驱动,我们将对NXP设计的USB驱动进行学习,并改进成一个自定义的HID,应用在自己的项目中。

USB HID(NXP原厂代码).rar

对于USB的硬件设计非常简单,具体设计如下图所示:

1. 除了连接好USB的两路差分信号线外,还必须连接好电源,对于P0_3是非常重要,不管是否使用USB电源供电,此管脚必须接高电平,否则无法设别USB设备。而且,如果要应用USB ISP功能,此管脚也必须接高电平。

2. P0_6管脚为软件连接端口,可以通过此管脚连接或断开USB设备。

3. 全速和高速设备的上拉电阻接在D+端,而低速设备是接在D-端的。

4. USB设备取电:在设备没有配置之前最多只能从Vbus上获取100mA电流,电流的大小是由设备配置的,配置后最多可获取500mA电流。

USB基础知识:

1. 在USB1.0和USB1.1中只支持1.5M/s的低速模式和12M/s的全速模式,在USB2.0中又加入了480M/b的高速模式,而在USB3.0中速度到达5GB/s。

2. USB集成器只能扩展USB接口,而能扩展带宽,一个主控制器的带宽是固定的。

3. 在USB1.1中集成器最多4层,USB2.0中最多6层。

4. 低速和全速模式下采用电压差分传输信号,在高速模式下,采用电流传输。

5. USB采用NRZI编码方式,0数据电平翻转,1数据电平不翻转。

USB的描述符应该是USB开发主重要的部分,如果能够正确的配置好描述符,USB开发就完成了一半了。

描述符:

对于HID设备的描述除了5个USB的标准描述:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符。

HID设备还有3个特点描述符:HID描述符、报告描述符、实体描述符。

在5个标准描述符中与HID设备有关的部分有:

1. 设备描述符中bDeviceClass、bDeviceSubClass、bDeviceProtocol三个字段的值必须为零。

2. 接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为1时表示Boot Device,即表示HID是一个启动设备。

面的描述符之间有一定的关系,一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。这间描述符是用一定的字段构成的,分别如下说明:

报表描述符

报表描述符定义了执行设备功能的数据格式和使用方法。

报表描述符和USB的其他描述符是不一样的,它不是一个简单的表格,报表描述符是USB所有描述符中最复杂的。报表描述符非常复杂而有弹性,因为它需要处理各种用途的设备。报表的数据必须以简洁的格式来储存,这样才不会浪费设备内的储存空间以及数据传输时的总线时间。

实际上可以这样理解,报表内容的简洁,是通过报表描述符全面的、复杂的数据描述实现的。

报表描述符必须先描述数据的大小与内容。报表描述符的内容与大小因设备的不同而不同,在进行报表传输之前,主机必须先请求设备的报表描述符,只有得到了报表描述符才可正确解析报表的数据。

报表描述符是报表描述项目(Item)的集合,每一个描述项目都有相对统一的数据结构,项目很多,通过编码实现。

在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.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top