首页>
技术资讯>
详情

wince下USB总线驱动分析

2016-05-12 来源:佚名 阅读量: 0
关键词: WINCE

    关于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

热门推荐 查看更多