出版时间:2009-1 出版社:北京航空航天大学出版社 作者:刘荣 页数:313
Tag标签:无
前言
USB作为一种计算机总线技术,在如今的个人计算机上已经是必不可少的了。看看我们身边的计算机外部设备,有多少是通过USB口与计算机连接的?鼠标、键盘、游戏手柄、打印机、扫描仪、MP3、数码相机、U盘、移动硬盘及移动光驱等,另外,还有一些我们不太常见的USB设备,例如一些具有USB口的仪表仪器、开发用的调试器、烧录机、USB网卡、USB耳机、USB话筒及USB电话,甚至一些移动电话(手机)也具备USB口。总之,只要是与计算机通信的外部设备,似乎都可以用USB来连接,这足见USB之强大。USB之所以使用得如此广泛,是因为它具有连接简单、速度快、可扩展性强、支持热插拔操作和标准统一等特点。由于USB协议详细地规定了各种参数以及数据结构、格式,因而使得各厂生产出来的设备都能够很好地相互兼容。不过,这却给USB设备开发者带来了一些麻烦。USB设备开发者首先要很清楚USB协议才能开发出符合协议的USB设备,然而USB协议本身是一个比较复杂、庞大的系统,再加上众多的子类协议,使得很多设计者望而生畏,或者时间上不允许。所以有一些小公司将USB部分外包或者使用别人现成的USB模块来加快开发进度。如果你会开发USB相关设备的话,可能会获得不少机会哦。不过,虽然圈圈(就是笔者我啦,读者一定要牢记这点,不然把你弄晕了我可不负责)会一点USB,但目前还是穷光蛋一个。当然,你也可以学圈圈这样,写本书出来忽悠忽悠。虽然USB这么好用,但是教你如何设计USB设备的书在市面上却是少见,大部分都是对USB协议翻译,只有少量的内容是实际开发的内容和代码。圈圈从2003年年底(大二)开始学习USB,花了约一年的时间(主要是利用课余时间)阅读了一些USB书籍和文档后,才真正开始动手做自己的第一个USB设备:一个基于AT89C52+PDIUSBD12的假U盘。圈圈自认自己资质不差,却让一个小小的USB困扰了这么久,我想除了自己的原因之外,还跟USB协议本身的复杂性和没有一些好的书籍有很大关系。在整个USB学习过程中主要都是靠自己慢慢摸索,走了一些弯路。现在回过头再来看看,如果当初能有一个整体的认识,按照合理的步骤来操作,就不会走这么多弯路了。因此圈圈意识到,迫切需要写一本能让USB初学者少走弯路、快速入门和上手的书籍。圈圈写这本书,是真心地想要更多的人能够学会USB,会.开发USB设备。本书并不是对USB协议简单地进行翻译,而是尽量用圈圈自己的语言来进行描述。
内容概要
通过U盘、USB鼠标、USB键盘、USB MIDI键盘、USB转串口、自定义的USB HID设备和自定义的USB设备等几个具体的USB例子,一步步讲解USB设备及驱动程序和应用程序开发的详细过程和步骤。最后两章介绍USB WDM驱动开发,并给出一个简单的USB驱动和USB上层过滤驱动的实例。 本书附带的光盘中有USB学习板的电路图以及所有实验的完整源代码包(C/C++语言)。 本书的读者对象主要是USB设备与驱动设计的初学者和提高者,以及所有对圈圈的支持者。
作者简介
刘荣,一位电子技术及计算机技术爱好者。利用业余时间学习了大量电子技术及计算机技术相关知识,并设计了很多相关作品。网名“computer00”,也叫“电脑圈圈”,211C中国电子网论坛“技术交流”版版主。个人博客《电脑圈圈的家当》及《圈圈的USB专区》为业内知名网点。
书籍目录
第1章 USB概述及协议基础 1.1 USB是什么 1.2 USB的特点 1.3 USB的拓扑结构 1.4 USB的电气特性 1.5 USB的线缆、插头及插座 1.6 USB的插入检测机制 1.7 USB的描述符及其之间的关系 1.8 USB设备的枚举过程 1.9 USB的包结构及传输过程 1.9.1 USB的包结构及包的分类 1.9.2 令牌包 1.9.3 数据包 1.9.4 握手包 1.9.5 特殊包 1.9.6 如何处理数据包 1.10 USB的四种传输类型 1.10.1 USB事务 1.10.2 批量传输 1.10.3 中断传输 1.10.4 等时传输 1.10.5 控制传输 1.10.6 端点类型与传输类型的关系 1.10.7 传输类型与端点支持的最大包长 1.11 本章小结第2章 硬件系统设计 2.1 方案及芯片的选定 2.2 D12引脚功能说明 2.3 D12与AT89S52的连接 2.4 串口部分电路 2.5 按键部分 2.6 指示灯部分 2.7 IDE接口部分 2.8 单片机部分 2.9 元件安装 2.10 电路调试 2.11 测试程序的编写和调试 2.11.1 建立一个工程 2.11.2 为工程添加源文件 2.11.3 KEIL工具栏及仿真介绍 2.11.4 按键驱动的编写 2.11.5 串口驱动的编写 2.11.6 PDIUSBDl2读写函数及读ID的实现 2.12 本章小结第3章 USB鼠标的实现 3.1 USB鼠标工程的建立 3.2 USB的断开与连接 3.3 USB中断的处理 3.4 读取从主机发送到端点O的数据 3.5 USB标准请求 3.5.1 USB标准设备请求的结构 3.5.2 GET_DESCRIPTOR请求 3.5.3 SET_ADDRESS请求 3.5.4 SETCONFIGURATION请求 3.6 设备描述符的实现 ……第4章 USB键盘的实现第5章 用户自定义的USB HID设备第6章 USB转串口第7章 USB MIDI键盘第8章 U盘第9章 自定义USB设备及驱动开发第10章 USB过滤驱动开发附录 第3章实例的完整调试信息参考文献后记
章节摘录
插图:要正确地使用一个芯片,首先要阅读它的数据手册(datasheet)。数据手册是芯片厂商提供给用户使用该芯片的技术文档,通常包括芯片功能简介、方框图、内部工作原理、寄存器排布、控制命令、引脚分布、电路图和封装等各种重要信息。数据手册通常可从芯片公司的网站下载,或者在一些技术论坛也会提供下载。用该芯片的型号加pdf作为关键字,使用搜索引擎搜索通常也可以搜索到数据手册。初学者一定要学会去查找和阅读数据手册,不要怕麻烦。拿到数据手册后,先大概浏览一遍,看自己需要的信息在哪里。实际使用时,再对需要的信息细读。下面介绍D12的引脚分布。图2.2.1就是从D12的数据手册中复制来的引脚分布图。通常,从这些引脚名上可以看出很多有用的信息。例如,图2.2.1中DATA(O>~DATA表示数据口,而GND则表示地线。ALE(Addrass Latch Enable)也是很常用的,是地址锁存使能;CS(Chip Select)表示片选,后面加个N就表示低电平有效(有时也会在标号上加横杠或者在前面加斜杠),即低电平时选中该芯片;INT表示中断请求信号;RD表示读选通信号;WR表示写选通信号;RESET表示复位。这些引脚后面的N都表示它们是低电平有效的。XTAL1和XTAL2是接晶体的。
后记
经过两个多月的苦战,终于完成了本书的初稿。圈圈想说,写书真的是件挺辛苦的事。就算拿本几百页的书,全部敲到计算机中也不容易,何况自己写几百页出来呢。不过看到网上很多网友对本书的期待,以及周围朋友的支持,给了圈圈很大动力。在这里圈圈要对他们说声谢谢。这是圈圈第一次写书(应该叫处女作比较专业),所以没啥经验,不知道最后出来的效果咋样。圈圈从小就害怕写作文(读书时为了应付作文,经常找一些书来抄,或者找家长代劳),语文成绩也一直是刚刚及格的水平,所以写出来的文章干巴巴的,有点像记流水帐(很多语文老师对圈圈的作文如此评价)。为了让读者能够更容易理解和接受,圈圈尽量使用一些简单、通俗的句子,有很多地方还有重复的说明,以让读者能够得到确切的答案。如果你觉得本书说得太简单,或者有些重复,那很正常,因为这本书主要面向的是初学者。限于圈圈的水平,同时为了减少读者的负担,后记也就只能凑出这么几百个字了。如果你对本书有什么好的建议,请不要吝啬,可以给圈圈发邮件或者留言;如果你觉得本书写得不错,请多多宣传一下;如果你觉得本书写得不好,也可以给圈圈扔砖头,因为鲜花与砖头永远是共同存在的;如果你在找书垫桌子脚时,请不要用本书,如果真的要用,也请麻烦顺手把封面朝上……最后,感谢广大网友、读者以及家人和朋友支持,感谢北航出版社,感谢胡编,感谢21IC,感谢CEPARK,感谢EDN,感谢OURAVR,感谢圈圈,感谢CCTV……
编辑推荐
《圈圈教你玩USB》是作者专门为广大USB入门和提高者而编写的USB入门级教材。作者在经过长期、大量的USB学习和开发后,按照自己的理解以及汉语的思维方式编写了《圈圈教你玩USB》,同时将USB学习和开发过程中总结的一些经验和方法溶入了书中。《圈圈教你玩USB》的特点足以实例的方式,一步步讲解USB设备与驱动程序和应用程序开发的详细过程及步骤,同时在光盘中附带了完整的源代码(C/C++语言)。为了照顾初学者,书中语句尽量做到通俗易懂,少用专业词汇。
图书封面
图书标签Tags
无
评论、评分、阅读与下载