📄 usb设备开发实例.htm
字号:
<TD align=right width=158>
<SCRIPT language=JavaScript type=text/JavaScript>
var day="";
var month="";
var ampm="";
var ampmhour="";
var myweekday="";
var year="";
mydate=new Date();
myweekday=mydate.getDay();
mymonth=mydate.getMonth()+1;
myday= mydate.getDate();
myyear= mydate.getYear();
year=(myyear > 200) ? myyear : 1900 + myyear;
if(myweekday == 0)
weekday=" 星期日 ";
else if(myweekday == 1)
weekday=" 星期一 ";
else if(myweekday == 2)
weekday=" 星期二 ";
else if(myweekday == 3)
weekday=" 星期三 ";
else if(myweekday == 4)
weekday=" 星期四 ";
else if(myweekday == 5)
weekday=" 星期五 ";
else if(myweekday == 6)
weekday=" 星期六 ";
document.write(year+"年"+mymonth+"月"+myday+"日 "+weekday);
</SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE class=td003 cellSpacing=0 cellPadding=0 width=777 align=center
border=0><TBODY>
<TR>
<TD vAlign=top>
<TABLE cellSpacing=0 cellPadding=2 width="100%" align=center border=0>
<TBODY>
<TR>
<TD bgColor=#000000 height=1>
<DIV align=center></DIV></TD></TR>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=center width="82%"> <IMG height=14
src="USB设备开发实例.files/arrow.gif" width=11 align=absMiddle>
USB设备开发实例 </TD>
<TD width="18%"> <FONT
color=red>热</FONT> <FONT
color=#009900></FONT> </TD></TR></TBODY></TABLE></TD></TR>
<TR vAlign=center align=middle>
<TD bgColor=#f2f2f2 colSpan=2 height=36><FONT
size=2><STRONG>USB设备开发实例</STRONG></FONT> </TD></TR>
<TR align=middle>
<TD colSpan=2>[
作者:佚名 转贴自:bookroad.net 点击数:881 更新时间:2004-9-5 文章录入:东南飞0510
]</TD></TR>
<TR>
<TD colSpan=2>
<TABLE style="WORD-BREAK: break-all" cellSpacing=5 cellPadding=0
width=740 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top height=200>
<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD><A
title=【USB开发网】一直以来使用的空间!:http://www.51web.cn/?flag=10036
href="http://www.51web.cn/?flag=10036"
target=_blank><IMG
src="USB设备开发实例.files/200471712529637.gif" border=0></A>
</TD></TR></TBODY></TABLE>通用串行总线(Universal Serial Bus
<BR>
USB),是一种快速、灵活的总线接口。与其它通信接口比较,USB接口的最大特点是易于使用,这也是USB的主要设计目标。作为一种高速总线接口,USB适用于多种设备,比如数码相机、MP3播放机、高速数据采集设备等。易于使用还表现在USB接口支持热插拔,并且所有的配置过程都由系统自动完成,无需用户干预。<BR>
从表1可知,数据传输速率高是USB接口的另一特点。USB接口支持1.5Mb/s(低速)、12Mb/s(全速)和高达480Mb/s(USB
<BR>
2.0规范)的数据传输速率,扣除用于总线状态、控制和错误监测等的数据传输,USB的最大理论传输速率仍达1.2Mb/s或9.6Mb/s,远高于一般的串行总线接口。<BR>
USB接口芯片价格低廉,一个支持USB
<BR>
1.1规范的USB接口芯片价格大多在$1~2之间,跟一个232或485接口芯片价格差不多,这也大大促进USB设备的开发与应用。<BR>
在进行一个USB设备开发之前,首先要根据具体使用要求选择合适的USB控制器。目前,市场上供应的USB控制器主要有两种:带USB接口的单片机(MCU)或纯粹的USB接口芯片。<BR>
带USB接口的单片机从应用上又可以分成两类,一类是从底层设计专用于USB控制的单片机,比如Cypress公司的CY7C63513(低速)、CY7C64013(全速),但由于价格、开发工具以及单片机性能有限等问题,所以一般不推荐选用。另一类是增加了USB接口的普通单片机,例如Intel公司的8X931(基于8051)、8X930(基于高速、增强的8051)、Cypress公司的EZ-USB(基于8051),选择这类USB控制器的最大好处在于开发者对系统结构和指令集非常熟悉,开发工具简单,但对于简单或低成本系统,价格高将会是最大的障碍。一般来说,后者的价格是前者价格的10倍。<BR>
纯粹的USB接口芯片仅处理USB通信,必须有一个外部微处理器来进行协议处理和数据交换。典型产品有Philips公司的PDIUSBD11(I2C接口)、PDIUSBD12(并行接口),NS公司的USBN9603/9604(并行接口),NetChip公司的NET2888等。USB接口芯片的主要特点是价格便宜、接口方便、可靠性高,尤其适合于产品的改型设计(硬件上仅需对并行总线和中断进行改动,软件则需要增加微处理器的USB中断处理和数据交换程序、PC机的USB接口通信程序,无需对原有产品系统结构作很大的改动)。<BR>
在选定USB控制器以后,如果是带USB接口的单片机,则是一般单片机应用系统的开发;反之,就是如何把USB接口芯片与单片机应用系统融合的问题,一般USB接口芯片都支持多种并行总线结构(复用/非复用),可以方便的与多种单片机接口。硬件设计中要注意的就是USB接口芯片的时钟速度比较高,如果芯片内部没有PLL来倍频,则外部晶体振荡电路(多数在48MHz)的设计就应该特别注意,包括晶体的选择(负载电容大小)、匹配网络的设计以及PCB布线。<BR>
USB设备的软件设计主要包括两部分:一是USB设备端的单片机软件,主要完成USB协议处理与数据交换(多数情况下是一个中断子程序)以及其它应用功能程序(比如A/D转换、MP3解码等)。二是PC端的程序,由USB通信程序和用户服务程序两部分组成,用户服务程序通过USB通信程序与系统USBDI(USB
<BR>
Device
<BR>
Interface)通信,由系统完成USB协议的处理与数据传输。PC端程序的开发难度比较大,程序员不仅要熟悉USB协议,还要熟悉Windows体系结构并能熟练运用DDK工具。<BR>
USB接口软件主要完成USB协议的处理和数据的交换,一定要严格遵循USB2.0规范第九章的规定(详见 Universal
Serial
<BR>
Bus Specification Revision 2.0 : Chapter 9.USB Device
Framework
<BR>
<A
href="http://www.usb.org/">http://www.usb.org/</A>)。<BR>
要快捷、成功的开发一个USB设备,正确、合理的调试方法是必不可少的环节。调试基本分三步进行:首先对外部设备(单片机部分)借助PC调试软件(芯片生产商提供或从网上下载WINRT-USB、Kernel
<BR>
Driver等调试软件)将设备端的USB协议(主要有描述符请求、端口配置、地址设置以及基本数据交换)调通。然后,用调试好的USB设备接口来开发、调试PC软件,这一步相对比较容易。最后,加上USB设备端的其它用户程序,对整个完整的系统进行系统调试。<BR>
下面从硬件、软件两方面具体介绍作者设计的一个便携式USB数据采集设备,重点介绍USB接口部分。该数据采集系统以AD公司的带8通道12位A/D、2路12位D/A的52内核单片机ADuC812作为系统控制器,采用Philips公司的PDIUSBD12作为USB接口芯片。USB接口电路原理图如图1所示。由于系统中需要断电后保存采集数据,扩展了两片28F040,因此在这里把PDIUSBD12与CPU的接口采用了总线复用方式,通过ALE信号把数据分离出来,并把低64K
<BR>
RAM空间全留给PDIUSBD12(ADuC812的RAM空间有1M,分页管理,每页64K,共256页,对应DPP寄存器值0~255,PDIUSBD12占第0页,即DPP=0),地址线A(P2.0)作为PDIUSBD12的指令/数据选择线,则地址000100H写指令、000000H读写数据;单片机的P3.5口线提供PDIUSBD12的复位信号,接非门是保证单片机复位时PDIUSBD12也复位。PDIUSBD12与单片机的数据交换采用中断方式(INT0),实际应用中如果系统中断资源不够(特别是系统改型设计时),也可以接成查询方式,只是注意查询间隔不要超过USB接口的最大等待时间(最大500mS)。PDIUSBD12的GOOD-LINK指示灯(LED)在USB通信时会闪烁,常亮或一直不亮说明USB接口有问题,调试时非常有用。PDIUSBD12采用PLL倍频产生系统时钟,只需外接低频晶体,PCB设计比较方便。<BR>
单片机软件设计主要注意以下几点:<BR>
*
<BR>
PDIUSBD12的中断输出引脚只要中断寄存器不为0就保持低电平,所以单片机的对应中断(INT0)应设置成电平触发;中断处理后要用读上次传输状态寄存器清除中断寄存器中对应位(D0-D5)。<BR>
*
PDIUSBD12靠软件控制USB端口的连接,程序在系统初始化处理完后软件设置连接到USB端口,然后开中断。<BR>
*
<BR>
PDIUSBD12对内部寄存器的读写没有边界限制,程序设计中一定不要读写超过端点深度的数据。特别对于描述符请求,由于其长度大于Control
<BR>
IN 深度(16
Bytes),要分几个数据周期传输。<BR>
*
<BR>
描述符一定要设置正确,并且注意USB协议中所有字数据均定义为低字节在前传输(LSB),例如Phlips的ID为471H,应在iDVendor中定义成71H、04H。<BR>
* 在接收到Setup包后,一定要用ACK Setup指令来重新使能Control IN 和Control
<BR>
OUT端点。向IN端点写数据后,要用Validate
<BR>
Buffer指令使数据可以在下一个IN数据周期发送。从OUT端点读数据后,要用Clear
<BR>
Buffer指令来清空缓冲区,否则后面OUT周期传输的数据将被丢弃(返回NAK)。<BR>
*协议的处理一定要按USB规范要求进行,对无效请求,用Set Endpoint Status指令将Control
IN和Control
<BR>
OUT端点Stall即可。<BR>
PC机软件作者用VC6.0开发,分USB接口通信程序和应用程序两部分,其开发以及系统调试过程与前文所述相同,此处不再赘 述。■<BR>
<BR>
参考文献<BR>
1 Jan Axelson.USB Complete.Lakeview
Research,1999<BR>
2 Don Anderson.Universal Serial Bus System
Architecture.Addison
<BR>
Wesley
Longman,Inc,2000<BR>
3 ANALOG DEVICES.ADuC812 User's Manual,2000
</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD colSpan=2>
<TABLE
style="BORDER-TOP: #6687ba 1px solid; BORDER-BOTTOM: #6687ba 1px solid"
height=50 cellSpacing=5 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<LI>上一篇文章: <A
title="文章标题:即插即用USB连接技术在测量和控制中的应用 作 者:ni 更新时间:2004-9-5 15:05:21 点击次数:213"
href="http://www.usbing.net/Article_Show.asp?ArticleID=305">即插即用USB连接技术在测量和控制中的应用</A>
<BR>
<LI>下一篇文章: 没有了 </LI></TD></TR></TBODY></TABLE></TD></TR>
<TR align=right>
<TD colSpan=2>【<A
href="http://www.usbing.net/Article_Comment.asp?ArticleID=306"
target=_blank>发表评论</A>】【<A
href="http://www.usbing.net/SendMail.asp?ArticleID=306"
target=_blank>告诉好友</A>】【<A
href="http://www.usbing.net/Article_Print.asp?ArticleID=306">打印此文</A>】【<A
href="javascript:window.close();">关闭窗口</A>】</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle height=3>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center
border=0>
<TBODY>
<TR>
<TD height=3></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" align=center border=0>
<TBODY>
<TR>
<TD vAlign=top width=250>
<TABLE height="100%" cellSpacing=0 cellPadding=1 width="100%"
border=0>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -