您现在的位置: USB开发网 > USB开源项目 > Easy USB 51 Programer Plus
- Easy USB 51 Programer Plus

如何学习USB开发

------分隔线----------------------------

  经常有人问我如何学习USB,怎么样学习才能快速入门,在这里,根据百合电子工作室的经验,讲讲如何学习USB开发,希望大家能少走弯路。

  上一节讲到USB开发远比传统串口(RS232)和并口(LPT)复杂,所以学习USB开发不是一蹴而就的事,需要多花些精力来学习,不过也不要被吓倒,只要撑握了方法,学习USB的过程也是比较轻松的,下面给出我的建议以作参考,并不是非得按我的方法来,也许您有更好的学习方法。

  USB协会发布的USB协议,包括基础协议,也包括针对不同应用的子协议,内容相当多,可以说包罗万象,我不建议大家对协议进行通读,这个工作量太大了,这里建议大家看看我列出需要学习的内容,USB协议文档应该作为一个手册来使用,需要用到的时候作为参考书来用。

1、了解USB通信特点

   内容很少也很简单,前面章节中已经介绍过,这里再总结一下:USB接口是一种快速、灵活的总线接口。与其它通信接口比较,USB接口的最大特点是易于使用,这也是USB的主要设计目标。作为一种高速总线接口,USB适用于多种设备,比如数码相机、MP3播放机、高速数据采集设备等。易于使用还表现在USB接口支持热插拔。另外,USB接口还向设备提供5V最大500mA电源,在许多应用场合可以省掉外接电源,这无论对设计者还是用户来说都是一个比较有诱惑力的特性。

2、了解USB通信物理模型

  这部分内容虽然比较简单,但我认为也很重要,有必要了解一下。

  USB协议里虽然对USB物理层描述得非常详细,但正因为过于详细,学习者需要花大量时间来阅读,况且大部分内容对于大部分人来说是多余的,没有必要全部都了解。本站“USB技术文档”栏目下《USB物理模型简介(USB接口、USB电缆、USB总线拓扑结构》对此有阐述。

3、了解USB的识别(即枚举)、通信过程

  在本站“USB技术文档”栏目下的“USB入门”子栏目中有一篇文章专门有讲解。

4、USB协议

  USB协议包括基础部分,就是一般我们说的USB协议,英文叫Universal Serial Bus Specification。但这并不是USB协议的全部,根据不同应用,还要许多子协议,如HID设备类(USB鼠标和USB键盘都属于这个类)的《HID usage table》和《HID defination》。各种协议这么多,不可能都要学,给您几年可以也学不完。至少基本协议部分要学,然后根据您的项目所涉及的设备类别查询相应子协议,不过只要学会了其中一种设备类别的开发后会很容易地学会其它类别设备的开发。

  USB基础协议部分也不用全部仔细看,大致了解都有些什么内容就行,我认为基础协议里最关键的部分是各种描述符,区别设备的种类就靠各种描述来实现,大家应该着重看这部分内容,本站有篇文章总结了这方面的内容,大家可以先看看这篇文章:《USB命令请求及描述符详解(速查手册) 》,但不是非常全面,在实际工作中遇到文章里查不到的内容时可以查阅USB协议。

  上面提到设备的识别靠各种描述符,初学者也许对这一名词感到迷惑,这里我简单讲讲什么是描述符。在USB设备的枚举过程中,USB设备需要对主机发来的命令请求作出正确回应,这些应答数据都有规定的数据格式,在USB规范里把这些有固定结构的数据包称为描述符。

  通过USB枚举实例过程,结合《命令请求及描述符详解(速查手册)》一文强化协议中有关命令及描述符相关内容。

5、通过实例来学习

  完成上面的学习内容后,我觉得可以结合一个实例来学习USB开发,这应该是最快的方式了。由于USB设备种类非常多,有HID(人机接口)设备类、打印机类、智能卡类、CDC数据类、无线控制器类、音频类等(没有列完),不可能每种都学,我建议大家先学学HID设备类,因为HID设备类有一个特点,操作系统都自带了电脑端的驱动程序,设计者不用编写操作系统一端的驱动程序。可以用HID设备来实现常规数据交换功能,可以满足大部分应用需求,比如此开源项目中51编程器实例就是一个HID设备类。学会种设备类的开发后就知道开发其它种类的设备。

6、有关USB控制器(USB接口芯片)

  本站有篇文章介绍了不同的USB控制器,此开源项目中用到的USB控制器是PDIUSBD12,有些网友在学习过程中看了PDIUSBD12的数据手册一遍又一遍,分析了PDIUSBD12固件驱动代码一遍又一遍,我认为没有这个必要,一般芯片厂商都提供了范例代码,我们只需要了解范例代码的大致结构,使用时在范例的基础上只作小小修改就可以了,一般都是修改与描述符有关的内容。如果从零开始写所用USB控制的驱动代码的话,必须对USB协议吃得非常透,对所用到USB控制器数据手册也得读透,这样会耗费大量时间和精力,通常USB通信只是实际项目中很小的一部分,没有必要从头做起。

------分隔线----------------------------
联系我们
  • Q Q: 1148374829 点击这里给我发消息
  • 旺旺:jhoneqhsieh 点击这里给我发消息
  • 电话:(0)15923141204
  • 淘宝网店