关于USB网上有很多现成的资料,我这里对其中一些基本资料进行了下总结。
i.USB的优点
<!--[endif]-->
(1)使用简单。支持热插拔。
(2)应用范围广。USB系统数据报文附加信息少,带宽利用率高,可同时支持同步传输和异步传输两种方式。
(3)较强的纠错能力。USB系统可实时地管理设备插拔。在USB协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。
(4)总线供电。USB总线可为连接在其上的设备提供5V电压、100mA电流的供电,最大可提供500mA的电流。USB设备也可采用自供电方式。
(5)低成本。USB接口电路简单,易于实现,特别是低速设备。USB系统接口/电缆也比较简单,成本比串口/并口低。
2. USB硬件结构
<!--[endif]-->USB采用四线电缆,其中两根用来传送数据的串行通道,另两根为下行设备提供电源。USB是基于令牌的总线。类似于令牌环网络或FDDI基于令牌的总线。USB主控制器广播令牌,总线上设备检测令牌中的地址是否与自身相符,通过接收或发送数据给主机来响应。USB通过支持悬挂(suspend)/恢复(resume)操作来管理USB总线电源。USB系统采用级联星型拓扑,该拓扑由三个基本部分组成:主机(Host),集线器(Hub)和功能设备。
3.USB设备的传输类型 <!--[endif]-->
1)控制传输(control transfer)
控制传输发送设备请求信息,主要用于读取设备配置信息及设备状态、设置设备地址,设置设备属性、发送控制命令等功能。全速设备每次控制传输的最大有效负荷可为64个字节,而低速设备每次控制传输的最大有效负荷仅为8个字节。
2)同步传输(isochronous transfer)
同步传输仅适用于全速/高速设备。同步传输每毫秒进行一次传输,有较大的带宽,常用于语音设备。同步传输每次传输的最大有效负荷可为1023个字节。
3)中断传输(interrupt transfer)
中断传输用于支持数据量少的周期性传输需求。全速设备的中断传输周期可为1~255ms,而低速设备的中断传输周期为10~255ms。全速设备每次中断传输的最大有效负荷可为64个字节,而低速设备每次中断传输的最大有效负荷仅为8个字节。
4)块数据传输(bulk transfer)
块数据传输是非周期性的数据传输,仅全速/高速设备支持块数据传输,同时,当且仅当总线带宽有效时才进行块数据传输。块数据传输每次数据传输的最大有效负荷可为64个字节。
4.USB设备的软件设计
USB设备的软件设计主要包括两个部分:
USB 设备端的单片机软件:主要完成USB协议的处理与数据交换。
PC端的程序:由USB通信程序和用户服务程序两部分组成。其中用户服务程序是通过USB通信程序与系统USBDI进行通信的。
对USB设备软件的调试基本上分为以下三个步骤:
1.借助PC端的调试软件,将外设端的USB协议调通
2.用调试好的USB外设接口来开发、调试PC端软件
3. 加上USB外设的其他用户程序,对整个系统进行系统调试
5.Wince6.0下USB系统的组成
下图展示了WINCE6.0下的USB系统结构。
wince6.0 下USB系统结构
USB系统软件由两层组成:较高的USB设备驱动层和较低的有wince实现的USB函数层。
USB系统结构中中间的一层则是由较高的通用串行总线驱动程序USBD模块和较低的控制器驱动程序HCD模块组成。HCD模块给USBD模块提供底层的支持,USBD模块实现高层的USBD接口函数。USB设备驱动程序使用USBD提供的接口函数和外围设备进行通信。
6.wince6.0下USB设备驱动程序的编写
wince6.0下,USB驱动程序的编写可以采取以下三种方式:
使用USBD模块提供的函数操作USB设备
使用流接口函数
使用现有的WINCE传输函数
其中USBD的传输函数有:
AbortTransfer
CloseTransfer
GetIsochResults
IssuBulkTransfer
IssueControlTransfer
IssueIsochTransfer
IssueInterruptTransfer
IsTransferComplete