圈圈教你玩USB
圈圈教你玩USB,USB入门者的必备参考学习资料334TP334331【博客藏经阁丛书】圈圈教你玩USB刘荣[网名电脑圈圈]编著袁挑史航无头荸出版内容简介通过U盘、USB鼠标、USB键盘、 USB MID键盘、USB转串口、自定义的 USB HID设备和自定义的USB设备等几个具体的USB例子,一步步讲解USB设备及驱动程序和应用程序开发的详细过程和步骤。最后两章介绍 USB WDM驱动开发,并给出一个简单的USB驱动和USB上层过滤驱动的笑例。本书附带的光盘中有USB学习板的电路图以及所有实验的完整源代码包(C/C++语言)。本书的读者对象主要是USB设备与驱动设计的初学者和提高者,以及所有对圈圈的支持者。图书在版编目(CIP)数据圈圈教你玩USB/刘荣编著.一北京:北京航空航天大学出版社,2009.1ISBN978-7-81124-600-1I.圈…Ⅱ.刘…Ⅲ.电子计算机一接口Ⅳ.TP334中国版本图书馆CIP数据核字(2008)第159685号Q2009,北京航空航天大学出版社,版权所有。未经本书出版者书面许可,任何单位和个人不得以任何形式或手段复制本书及其所附光盘内容。侵权必究。圈圈教你玩USB刘荣[网名电脑圈圈」编著责任编辑张冀青北京航空航天大学出版社出版发行北京市海淀区学院路37号(100191)发行部电话;010-82317024传真:010-82328026http://www.buaapress.comcnE-mail;emsbook@gmail.com涿州市新华印刷有限公司印装各地书店经销开本:787mmx960mm1/16印张:20.5字数:459千字2009年1月第1版2009年1月第1次印刷印数:5000册ISBN978-7-81124-600-1定价:39.00元(含光盘+PCB板)前言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+ PDIUSBDI2的假U盘。圈圈自认自己资质不差,却让一个小小的USB困扰了这么久,我想除了自己的原因之外,还跟USB协议本身的复杂性和没有一些好的书籍有很大关系。在整个USB学习过程中主要都是靠自己慢慢摸索,走了一些弯路。现在回过头再来看看,如果当初能有一个整体的认识,按照合理的步骤来操作,就不会走这么多弯路了。因此圈圈意识到,迫切需要写一本能让USB初学者少走弯路快速人门和上手的书籍。圈圈写这本书,是真心地想要更多的人能够学会USB,会开发USB设备。本书并不是对USB协议简单地进行翻译,而是尽量用圈圈自己的语言来进行描述。所以,本书的一大特点就是语言有些口语化,逻辑不是太严密,有些语句也可能存在刖画着错误。但我想这样读起来也许会更轻松些,太严谨、太严密的描述,可能会显得有些乏味。)另外,有些地方可能会存在一些重复性描述,主要是想方便理解和加深印象。本书通过U盘↓USB鼠标、USB键盘 JUSB MID键盘、USB转串口、自定义的 USB HID③设备和自定义的USB设备等几个具体的USB例子,来介绍USB设备设计的具体流程。提到|自定义的USB设备,就不可避免地要提到自己开发USB的驱动程序。本书最后两章简单地介绍了[ SB WDM驱动的开发,并给出一个简单的USB驱动和一个USB下层过滤驱动的实例。驱动程序开发更深层次的研究不属本书范畴,留给读者自行深究。另外,本书也包括了些圈圈在USB的学习和实际设计过程中总结的一些电路设计和程序设计的经验及方法,希望能够帮助大家更好地学习和设计USB系统。本书主要面向的读者是刚接触USB开发的电子设计人员,需要有一定的电子技术、计算机技术和C语言基础。对于已经熟悉USB的读者意义不大,应以官方的数据手册和文档为主。本书为了让读者快速人门,可能会对一些模型做简化处理,也可能有一些地方是圈圈本身理解偏差或者错误的,当本书与官方的协议和文档不一致或者冲突时,以官方文档为准。书中的实例,都是基于圈圈设计的USB学习板之上的。本书附带的光盘中有该学习板的电路图(pdf格式)以及所有实验的完整源代码包,电路图和实验的代码包也可以到圈圈的USB小组或者博客中下载。作为一个人或一本书,出错之处在所难免如果大家发现有错误的地方,请告诉圈圈一声。你可以在圈圈的USB专区里给圈圈留言,也可以去个人博客里留言。圈圈的个人博客地址:http://blog.ednchina.com/computer0o/或http://computer00.2lic.org注意是电脑圈圈,是两个数字0,而不是字母O。如果你记不住这些地址也没关系,直接去网上搜索“电脑圈圈的USB专区”或者“电脑圈圈”,也可找到它们。在此感谢北京航空航天大学出版社嵌入式系统事业部主任胡晓柏先生对出版本书的关心和支持;感谢同学以及网友对本书的建议和支持;感谢家人对我的支持和理解,尤其是要感谢老婆,为了写书,少了很多陪她的时间.谢谢她的支持理解和爱;同时也要感谢购买本书的读者—你电脑圈圈2009年1月于广州目录第1章USB概述及协议基础1.1USB是什么………………………………1.2USB的特点…。·电南鲁申审审审自虚香·會.曹·鲁垂费曹更曹1.3UsB的拓扑结构………1.4USB的电气特性……1.5USB的线缆、插头及插座61.6USB的插入检测机制·.;:由“由;出古d...·.::···.中·中···中中中中······a1.7USB的描述符及其之间的关系……………………………………………101.8USB设备的枚举过程……………………………………………111.9USB的包结构及传输过程1.9.1USB的包结构及包的分类吾吾番密垂平是善甲型鲁兽要费·鲁鲁非申·兽申中申鲁鲁即即申鲁自鲁申「鲁·自……131.9.2令牌包151.9.3数据包…………………………………………………………………161.9.4握手包…平········中·1.9.5特殊包_tt重面由t普曲t普重事,垂甲事垂事垂·喜即甲重更即申事「善即息罪曹鲁1.9.6如何处理数据包…面量吾出日是吾田当·日.!.·鲁,,中··中申中··明·曹鲁·即…………181.10UsB的四种传输类型………………………………………………11.10.1USB事务10.2批量传输10.3中断传输21.10.4等时传输221.10.5控制传输兽·“中中中丰:丰221.10.6端点类型与传输类型的关系………24目录1.10.7传输类型与端点支持的最大包长24.11本章小结…24第2章硬件系统设计2.1.方案及芯片的选定t由t252.2D12引脚功能说明鲁喜寻■■■■■262.3D12与AT89S52的连接………302.4串口部分电路…322.5按键部分332.6指示灯部分…平鲁吾342.7IDE接口部分……………………………………3428单片机部分………………………………………………………………………352.9元件安装352.10电路调试……………………………………………………………………………382.11测试程序的编写和调试……………………………………………………………392.11.1建立一个工程…………………………………………………………402.11.2为工程添加源文件………………………412.11.3KEIL工具栏及仿真介绍………………………………………………432.11.4按键驱动的编写……………………………………………………………………462.11.5串口驱动的编写甲兽甲中申曹鲁鲁鲁甲留鲁鲁普鲁普鲁番番番音番量面杨画面音面由音面m522.11.6 PDIUSBL12读写函数及读ID的实现572.12本章小结62第3章USB鼠标的实现3.1USB鼠标工程的建立…633.2USB的断开与连接633.3USB中断的处理673.4读取从主机发送到端点0的数据……………………683.5USB标准请求……753.5.1USB标准设备请求的结构7535,2 GET DESCRIPTOR请求773.5.3 SET ADDRESS请求“*中·783.5.4 SET CONFIGURATION请求783.6设备描述符的实现·..:·:!:.;.;吾品k‘“";"h*…·m…···"··79目录3.7设备描述符的返回··首由由座833.8设置地址请求的处理933.9配置描述符集合的结构…953.9.1配置描述符的结构953.9.2接口描述符的结构…画普鲁和鼻‘暑审■963.9.3端点描述符的结构…审·咖音由鱼是是「申973.9.4HID描述符的结构983.10配置描述符集合的实现以及返回…993.11字符串及语言ID请求的实现…1033.12设置配置请求的实现,,,………………1093.13报告描述符的结构及实现……1123.14报告的返回……………………1183.15 Bus hound工具的简介…………1223.16本章小结…………124第4章USB键盘的实现4.1UsB键盘工程的建立…………………………………………1254.2设备描述符的实现垂磊…………………1254.3配置描述符集合的实现…∴………………………1264.3,1配置描述符………………………………………1264.3,2接口描述符1274.3.3HID描述符∴…………………1274.3.4端点描述符………………1274.4字符串描述符………………………1304.5报告描述符a·自审加画面量音面垂由香普·申善···即1304.6输入和输出报告的实现甲甲中申申由量「量由唐吾曹1334.7USB键盘实例的测试量面晋量重………………………………………1364.8再谈 USB HIL的报告描述符………………………1384.9带鼠标功能的USB键盘(方法一)………·*中#*··*由“hA;.吾."············…1404.10带鼠标功能的USB键盘(方法二)…………………………1464.11多媒体USB键盘……41544.12本章小结……………………………………………………………………160目录第5章用户自定义的 USB HID设备.1 My UsbHid工程的建立1615.2描述符的修改1613报告的实现…………………………………………………………………………1635.4对用户自定义的 USB HID设备的访问1655.5访问HID设备时所用到的相关函数…………………………………………………1665,5.1获取HD设备的接口类GUID的函数…………………16655.2获取指定类的所有设备信息集合的函数…1665.3从设备信息集合中获取一个设备接口信息的函数………………………1675.5.4获取指定设备接口详细信息的函数:1685.5.5打开设备的函数…1695,5,6获取HID设备属性的函数………1705.5,7从设备读取数据的函数……217055.8往设备写数据的函数番量普普量音量5.5.9通过控制端点0读取报告的函数:………………1715.5.10通过控制端点0发送报告的函数音画a…,1715.5.11关闭句柄的函数鲁·鲁由。浦自·即申普善曹市鲁是吾吾吾晋面画面普量普面量面…………1725.5.12需要包含的库文件……………………11725.6访问 USB HID设备的上位机软件的实现1725.6.1上位机程序编写的思路…………………………………………1725.6.2查找及打开HID设备的代码……………1735.6.3读输入报告线程的代码·即申日申中「鲁曹曹晋番晋垂量量量量c非画1785.6.4写输出报告的代码(发送LED的状态)…………1815,6.5写输出报告线程的代码…1835.6.6线程的创建以及设备插拔事件的注册……………………………………1845.6.7对设备状态改变事件的处理鲁量量量出由面垂南着·都鲁18657软件界面以及使用方法1875.8本章小结188第6章USB转串口6.1串口家族历史1896.2串口接头的引脚分布及功能1896.3USB转串口的实现方法1906.4设备描述符…1916.5字符串描述符:日““““a···:····甲日里鲁中日斗普量量画………-192
暂无评论