USB上必须将数据组织成 事务 才能够进行传输。事务常有两个或三个包。令牌包用于启动一个事务,由主机发送;数据包传送数据,方向由令牌包确定;握手包常是数据接收方发送的,用于表示接收数据的状态。USB协议规定了4种传输类型:批量传输,同步传输,中断传输,控制传输。

① 批量传输
这是总线状态图,从上向下看表示了依次出现在总线上的数据。
②中断传输
中断传输是一种保证查询频率的传输。中断端点在其端点描述符中应该明确其中断查询间隔,主机在读取此数据后,应保证在小于该查询间隔的时间里进行一次传输。
③同步传输
用于数据量大,实时性要求较高的场合,但对数据的正确性要求有所降低。从其传输方式也可以看出,数据传出后不要求有应答包,不保证数据的正确性。


 ④控制传输

控制传输包括三个阶段:建立阶段、数据阶段(可选)、状态阶段。
下图是建立阶段的流程。建立阶段是一个输出事务,但是与上文中的传输不同。设备端要么返回ACK保证接收正确,要么不返回,表示接收错误。
数据阶段和状态阶段都与批量传输是一样的。数据阶段是可以选择的,有些控制传输没有数据阶段。下图是典型的控制传输的实例。

注意:

①一个端点只能工作在一个传输模式下,如控制端点只工作在控制传输下;批量端点只工作在批量传输下。
②端点0是每个USB设备必须具备的控制端点。
③USB设备的端点描述符中定义了该端点可以传输的最大包长度,传输过程不能违背这一定义。

28.USB的传输类型的更多相关文章

  1. 嵌入式Linux驱动学习之路(二十)USB设备驱动

    USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID. 在主机端,D+和D-都是下拉接地的.而设备端的D-接上拉时,表明此设备为高速设备:12M/s. D+接上拉时则是全速设备 ...

  2. linux驱动之USB驱动程序

    1. USB是主从结构的 所有的USB传输,都是从USB主机这方发起:USB设备没有"主动"通知USB主机的能力. 例子:USB鼠标滑动一下立刻产生数据,但是它没有能力通知PC机来 ...

  3. USB鼠标按键驱动

    现象:把USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能 ...

  4. 【转】USB协议架构及驱动架构

    1. USB协议 1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器.USB主机控制器包含硬件.软件和固件一部分. 1.2 USB设备系统 ...

  5. 驱动07.USB驱动程序

    1 了解USB识别的过程 eg:在Windows系统下的一个现象:把手机的USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱 ...

  6. liunx驱动----USB驱动

    现象:把usb设备接入电脑 1.Windows发现设备 2.跳出一个对话框提示安装驱动程序 问1:既然没有驱动程序,为什么了够知道是什么驱动了?? 答1:Windows里面已经有了usb总线驱动程序, ...

  7. Linux驱动之USB总线驱动程序框架简析

    通用串行总线(USB)是主机和外围设备之间的一种连接.USB总线规范有1.1版和2.0版,当然现在已经有了3.0版本.USB1.1支持两种传输速度:低速为1.5Mbps,高速为12Mbps.USB2. ...

  8. ROS-RouterOS hAP ac2+usb 4G上网卡+小米新推的无线上网卡是绝配

    月租9元.每日缴1元.上网不限量 Model Tested RouterOS version Format Passthrough support TechnologiesZTE MF823 v6.8 ...

  9. USB设备驱动程序学习笔记(一)

    现象:把USB设备接到PC1. 右下角弹出"发现android phone"2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能知道 ...

随机推荐

  1. __main__:1: Warning: Unknown table 'employ' 0L

    __main__:1: Warning: Unknown table 'employ' 0L from warnings import filterwarnings import MySQLdb fi ...

  2. MYSQL--事务处理

    1.用begin,rollback,commit来实现 begin 开始一个事务 rollback 事务回滚 commit  事务确认 2.直接用set来改变mysql的自动提交模式 MYSQL默认是 ...

  3. Python搭建简易HTTP服务(3.x版本和2.x版本的)

    废话不多说,我们工作时经常会用到需要HTTP服务,如果不想搞那些复杂的Apache.IIS服务器等,这时我们就可以用python帮我们搭建一个简单的服务器.操作如下: 1.下载并安装一个python: ...

  4. nice和taskset命令

    taskset -c 9,10 bash domain_analysis.sh && /home/work/odp/php/bin/php hourly_localdns_hijack ...

  5. Can Live View boot up images acquired from 64bit OS evidence?

    Some said Live View could only boot up images acquired from 32bit OS evidence. I have to say that it ...

  6. Windows server 2008R2部署服务批量安装Windows7教程

    利用Windows server 2008 R2下的Windows部署服务可以批量安装Windows 7,以下简称WDS. WDS需要用到域和dhcp.DNS服务,所以,基础环境必须要有域控制器,dh ...

  7. JS常用小技巧

    iframe子窗口调用父窗口方法 parent.functionName(); 二.iframe 父窗口和子窗口相互的调用方法 1.IE中使用方法: 父窗口调用子窗口:iframe_ID.iframe ...

  8. C puzzles详解【26-30题】

    第二十六题(不会) The following is a simple program which implements a minimal version of banner command ava ...

  9. linux系统下将php和mysql命令加入到环境变量中的方法

    在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行 “php -v”命令查看当前php版本信息时时 ...

  10. JAVA编程思想第一题出现错误

    //: object/E01_DefaultInitialization.java public class E01_DefaultInitialization{ int i ; char c ; p ...