精华内容
下载资源
问答
  • 从零开始学USB(十四、USB数据传输的组织形式)
    千次阅读
    2018-12-31 19:00:00

    在前面的十一节中,学习了USB中传输中一个包是由多个域组成

    https://blog.csdn.net/qq_16777851/article/details/85226005

     

    在前面的十二节中,学习了USB传输中学习了包的形式有哪些(令牌包、数据包、应答包等),以及各自的特点和功能。

    https://blog.csdn.net/qq_16777851/article/details/85385889

     

    在前面的十三节中,学习了USB的一个事务是由多个包组成的(IN、OUT、SETUP事务等),以及四种传输类型,具体怎么组织事务(一个传输是由多个包组成)。

    https://blog.csdn.net/qq_16777851/article/details/85463744

     

    本节就站在传输的角度来总结一下几个的关系。

     

    控制传输

    更多相关内容
  • 通用串行总线(USB数据传输中要对数据进行非归零翻转(NRZI)编解码、添加/去除位填充和串并/并串转换。添加/去除位填充使每字节数据传输所需的时间发生变化,再加上收发器与协议层的时钟频率不同,从而可能导致...
  • USB数据传输

    千次阅读 2021-03-23 08:54:48
    USB系统中,正常状态下根集线器或集线器会一直周期性地发送SOF包,高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。如果USB线上一直处于空闲(Idle)状态超过3ms,设备应该把它当作一个挂起...

    在USB系统中,正常状态下根集线器或集线器会一直周期性地发送SOF包,高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。如果USB线上一直处于空闲(Idle)状态超过3ms,设备应该把它当作一个挂起(Suspended)信号,要求设备在10ms内进入挂起状态,并把设备所需的电流大小降到规定的值。设备处于挂起状态时,任何总线上的活动(非空闲信号)都可以把设备唤醒/恢复,从而退出低功耗模式。主机需要继续周期性地发送SOF包,否则设备又将进入suspend。

     

     

    包结构

    USB是以包为单位进行传输的,包只能在帧内传输。一个包包含多个域,不同的包包含不同的域,但都是以同步域(SYNC)开始,紧跟着包标识符(PID),最终以包结束符(EOP)结束。

    同步域:表示包要开始传输了,同时可以用来同步主机和设备的时钟。对于低速设备和全速设备,同步域使用的是00000001b;对于高速设备,同步域使用的是31个0后面跟1个1。

    包标识符:表示数据包类型。总共8bit,bit0~3表示PID值,bit4~7为PID的取反,用来校验PID。如上图PID为0101,表示SOF包。

    包结束符:表示数据包结束。

     

     

    包类型

    USB协议规定了四类包:令牌包(token)、数据包(data)、握手包(handshake)和特殊包(special)。

    令牌包:用来启动一次传输。由于USB是主从结构,一个USB主机可以对应多个设备,因此每次开启传输之前必须先使用令牌包和目标设备进行握手,告知设备本次传输的功能是什么、由谁来响应。

    令牌包有4种:输出(OUT)、输入(IN)、建立(SETUP)和帧起始(SOF)

    • 输出:通知某设备的某端点,主机将要输出一个数据包,请准备查收。
    • 输入:通知某设备的某端点,准备向主机输入一个数据包,请准备发送。
    • 建立:通知某设备的某端点(只能是端点0),主机将要输出一个数据包(只能是DATA0),该数据包是一个请求,请准备查收。
    • 帧起始:USB周期性发送帧起始包,全速设备每毫秒产生一个帧。USB主机会对当前帧号进行计数,通过SOF包发送帧号。

    数据包:用来传输数据。主机和设备都会维护自己的一个数据包类型切换机制,以解决握手包被损坏的情形:当数据包成功发送或者接收时,数据包类型切换。如果对方下一次使用的数据包类型跟自己不一致,则说明它刚刚已经成功接收到数据包;如果对方下一次使用的数据包类型跟自己一致,则说明刚刚的数据包没有发送成功,这是上一次的重试操作。

    握手包:用来表示一个传输是否被对方确认。

    • ACK:表示正确接收数据。
    • NAK:没有数据返回,或数据正确接收但没有足够空间容纳。主机接收到NAK后,会在合适时机重传。
    • STALL:设备无法执行这个请求,或端点已经被挂起。
    • NYET:本次数据已经正确接收,但没有足够空间来接收下一次数据。

     

     

    事务

    由于USB是主从结构,每一次交互都必须由主机发起,这样的过程称为一次事务:

    1. 主机通过令牌包发起。
    2. 数据包传送数据(可选)。
    3. 最后由接收者通过握手包确认。

     

     

    传输

    USB协议规定了4种传输类型:批量传输、等时传输、中断传输和控制传输。传输由一个或多个事务组成,其中批量传输、等时传输和中断传输都是一个事务;控制传输包括三个事务。

    批量传输:批量传输没有规定数据包中数据的意义和结构,具体的数据结构要由设备自己定义。通常用在数据量大、对数据的实时性要求不高的场合。批量传输分为:批量输出传输和批量输入传输。

    1. 批量输出传输:由OUT令牌包发起的一次事务。
    2. 批量输入传输:由IN令牌包发起的一次事务。

    中断传输:中断传输是一种保证查询频率的传输。主机保证在不大于某个时间间隔内安排一次传输事务。中断传输通常用在数据量不大,但是对时间要求严格的设备中。

    等时传输:等时传输用在数据量大、对实时性要求高的场合。等时传输过程中,主机不断安排传输事务。出现数据错误的时候不进行重传,因此也就没有应答包。

    控制传输:控制传输分为三个过程,建立过程、数据过程(可选)和状态过程。

    1. 建立过程:由SETUP令牌包发起的一次事务(只能发给端点0,只能使用DATA0)。
    2. 数据过程:数据过程是可选的,可以没有、包含一个或多个事务。数据过程第一个数据包必须是DATA1包,然后每次正确传输一个数据包后就在DATA0和DATA1之间交替。
    3. 状态过程:状态过程的传输方向和数据过程是相反的,状态过程只使用DATA1包。

     

     

    端点

    每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对USB设备进行访问。但是在设备内部地址会被分的更细,设备会分出一些端点来,每个端点在设备都会有唯一的端点号,这个端点号是设计设备时给定的。

    1. 端点号:一个设备最多可以包含16个端点,端点号为0-15。(每个USB设备必须要有端点0)
    2. 方向:其中每个端点地址对应一个方向。(端点0是双向的,既可以给主机发送数据,也可以从主机接收数据)
    3. 属性:一个具体的端点只能工作在一种传输模式下。例如:控制端点、批量端点、中断端点、等时端点。(控制端点0,作为对设备枚举和对设备进行基本的控制功能)

    控制端点:低速模式下,固定最大包长为8字节;全速模式下,可选8、16、32、64字节为最大包长;高速模式下,固定最大包长为64字节。

    等时端点:低速模式下,不支持等时传输;全速模式下,最大包长上限为1023字节;高速模式下,最大包长上限为1024字节;。

    中断端点:低速模式下,最大包长上限为8字节;全速模式下,最大包长上限为64字节;高速模式下,最大包长上限为1024字节。

    批量端点:低速模式下,不支持批量传输;全速模式下,可选8、16、32、64字节为最大包长;高速模式下,固定最大包长为512字节。

     

    展开全文
  • 针对现有喷码机通常采用RS-232作为数据传输系统接口存在传输速度慢的问题,本文基于通用串口数据总线(USB)的体系架构,设计了用于高解析喷码机的基于传输芯片PDIUSBD12和微控制器P89C60X2的USB数据传输系统,讨论...
  • 在CT图像重建系统中,高性能的DSP芯片具有高速的数据处理能力,利用设计的USB接口,能够快速方便地实现实时传输。经测试,该设计的USB接口传输速度可达35 Mb/s以上,具有较高的实用价值和良好的应用前景。
  • 在CT图像重建系统中,DSP处理的数据需要上传到PC机进行存储、显示或进行数据分析等,这就产生了PC机和DSP的数据传输问题。USB总线具有传输速度高,以及即插即用等特点,得到越来越广泛的应用,利用USB总线实现DSP和...
  • 行业分类-电子-具有USB数据传输的手腕佩带式电子器具
  • 本文研制了一种有线和无线USB共存的系统,使用CY-WUSB6935实现WUSB数据收发,使用CY7C68013实现有线USB数据收发,同时使用DSP实现两者之间的控制和数据处理。
  • 开源STM32F4xx自定义USB数据传输,支持Windows,Linux,Android,速度高达1MBytes
  • USB的协议对 USB数据传输类型进行了详细的分类,按照传输数据量的大小、传输速率的高低以及对时间的要求,可以分为 4 种传输类型:块传输、中断传输、同步传输和控制传输。USB 功能设备和USB 主机程序之间便是...
  • 因为老板认为wifi连接的方式传输数据太慢,想通过USB传输来实现与硬件的...本篇主要谈 usb数据传输。    数据传输流程:需要软件、硬件、驱动程序的共同配合  硬件部分:USB主控制芯片 (集成在计算机主板上

    因为老板认为wifi连接的方式传输数据太慢,想通过USB传输来实现与硬件的连接,所以通过android客户端作为主设备,终端硬件作为从设备。其中收到数据的处理和 下发设置帧的生成与wifi连接的方式都相同,就不赘述。本篇主要谈 usb的数据传输。

       

           数据传输流程:需要软件、硬件、驱动程序的共同配合

                 硬件部分:USB主控制芯片 (集成在计算机主板上,负责USB主机的功能实现)

                                   USB HUB芯片   (集成在计算机主板上,或者可以由外设USB HUB来实现,负责扩展USB接口数量)

                                   USB功能设备芯片  (集成在USB设备中, 完成传输的核心器件)

        软件部分:USB主机程序 (用户可以直接操作,常常具有人机交互页面,标准USB鼠标和标准USB键盘除外)

                                   USB总线驱动程序 (负责USB主机程序的请求响应)

           USB主控制器驱动程序(负责数据传输的事务处理)

           USB功能设备程序(负责USB设备的核心功能实现)

      

    USB下发数据 

                1)USB主机程序准备好待下发的数据,并将数据保存在USB发送断点的数据缓冲区,然后向USB总线驱动程序发送IO请求包(IRP),也就是数据传输请求。

             2)USB总线驱动程序响应USB主机程序的数据传输IO请求包(IRP),将其中数据转化为相应的USB事务处理格式,然后将该数据处理向下传递给USB主控制器驱动程序

       3) USB的主控制器驱动程序对每个接收到的事物进行处理,转化为一系列的事务处理队列

               4) USB主控制器将帧或者小帧为单位的事务处理队列以信息包的形式向外发送。按照规定的传输方式(块传输,控制传输,中断传输,同步传输)在USB总线上 传输

               5)外设USB芯片接收到总线的信息。通过SIE引擎自动解码出信息包,将其保存在指定USB端点的数据缓冲区,供USB设备处理

                 USB上传数据 与下发类似,整个流程正好反过来。



             四种传输方式

            


          中断传输 一般用于传输少量或中量数据,常应用于USB鼠标 USB键盘需要进行及时的人机交互,要求设备响应快,有固定的事务处理周期,对数据的需求低,不适用于本次项目。
           同步传输  适合于传输大量的,速率恒定的对服务周期有要求的数据,对正确性没有严格要求。常用于音视频设备,对数据正确性有一定容忍
            控制传输   适合于传输少量,严格要求传输正确性,对传输时间、传输速率和实时性均无要求,
           块传输   适合于传输大量的数据,要求传输的正确性,对传输时间速率实时性无要求。
         该项目中 主要待传输的数据有:
             硬件设置/查询帧(host to device):数据量小,要求实时性高,不定期发送,属于控制信息,准备采用控制传输的方式
     硬件查询响应回复帧 (device to host): 数据量小,要求实时性高,收到查询帧后需要立即回复,准备采用控制传输的方式
     功率谱帧 POA帧 TDOA帧 录音帧 IQ帧 (device tohost):,数据量大有一定的正确性,采用块传输的方式
             

    展开全文
  • Slave_FIFO USB数据传输系统设计与实现
  • C++ USB数据接收与发送

    2018-04-26 08:48:59
    C++ USB数据接收与发送,USB数据接收与发送,USB数据接收与发送
  • 基于LabVIEW的USB数据传输技术研究,教你在labview开发环境下和基于USB的下位机通信的方法。
  • 五、USB数据传输类型

    千次阅读 2018-12-25 00:21:27
    1、USB数据传输  US四种传输类型:控制传输、中断传输、批量传输和同步传输。  一次传输可以包含一笔或者多笔事务。 2、中断传输  中断传输(Interrupt Transfer), 可用于键盘、鼠标等 HID 设备的数据传输中, ...

    1、USB数据传输

      US四种传输类型:控制传输、中断传输、批量传输和同步传输。

      一次传输可以包含一笔或者多笔事务。

    2、中断传输

      中断传输(Interrupt Transfer), 可用于键盘、鼠标等 HID 设备的数据传输中, 由IN事务或 OUT 事务组成。

    中断传输IN事务、OUT事务的结构
    中断传输IN事务、OUT事务的结构

     

    (1)、中断传输的结构

      中断传输中包含了 2 种最基本的事务, 即输入 IN 事务和输出 OUT 事务, 而不包括设置 SETUP 事务。

      中断传输中, 无论是 IN 事务, 还是 OUT 事务, 都包含了令牌包、数据包和握手包。

      ①、令牌包阶段(将 IN 事务和 OUT 事务分别讨论):

            IN 事务: 主机通过发送输入包 IN(标识域 PID 为 IN), 来启动 1 个 IN 传输。

            OUT 事务: 主机发送输出包 OUT (标识域 PID 为 OUT), 启动 1 个 OUT 传输。

      ②、数据包阶段

            IN事务:设备忙,回复无效包NAK,事务提前结束。主机不断重试这个事务。

                           设备端点被禁止,回复错误包STALL,事务提前结束,总线进入空闲状态。

                           设备端点正常,且设备准备新的中断处理,则设备会按主机要求回复主机所需数据。

            OUT事务:结构相对较为简单, 主机将紧接着OUT令牌包, 就发送数据, 并按照DATA0 和 DATA1 数据包交替触发的顺序来发送数据。

      ③、握手包阶段

            IN事务:如果主机正确地接收到了数据, 那么就会给设备发送ACK; 如果数据包在传输过程中被破坏了, 那么设备就会不回复任何握手信息, 直接将总线转入空闲状态, 等待下一次传输。

            OUT事务:设备忙,返回无效包NAK,总线进入空闲,直到主机重试发送该数据

                              设备端点被禁止,回复错误包STALL,事务提前结束,总线进入空闲状态。果发送的数据没有错误, 并且设备成功地接收, 那么设备就返回ACK, 同时通知主机可以发送新的数据。如果数据包发生了CRC校验错误, 将不会返回任何握手信息。

    (2)、数据包发送的顺序

        中断传输中的数据包, 一定是从DATA0数据包开始, 然后是DATA1数据包, 接着又是DATA0, 依次重复下去。

    中断传输数据包发送顺序

     

    (3)、总线传输的特点

        中断传输中,USB主机是以周期性的方式对设备进行轮询, 以确定设备是否有数据发送。按照USB 的规定, 全速设备可以选择的轮询周期范围是1~255ms, 低速设备的轮询周期范围则是10~255 ms。

    (4)、数据包大小

        USB对于中断传输中的数据包的大小也有要求。低速设备的数据包大小可以是1~8字节, 全速设备的数据包大小是1~64字节, 而高速设备的数据包大小则可达到1~1024字节。

    (5)、支持设备类型

        低速、全速、高速和超高速设备均支持中断传输。

    3、批量传输

        批量传输(Bulk Transfer)主要用于大容量数据的传输中, 比如硬盘驱动器的接口、光盘刻录机接口及数码相机等等。

    (1)、结构

        批量传输的结构与中断传输的结构非常相似, 也是由IN事务或OUT事务构成。

    批量传输IN事务、OUT事务的结构

        批量传输中包含了2种最基本的事务, 即IN事务和OUT事务, 而不包括SETUP事务。

        批量传输中, 无论是IN事务, 还是OUT事务, 都包含了令牌包、数据包和握手包。

        ①、令牌包阶段

            IN事务:主机通过发送输入包 IN (标识域 PID 为 IN ), 来启动 1 个 IN 传输。

            OUT事务:主机发送输出包 OUT (标识域 PID 为 OUT), 启动 1 个 OUT 传输。

        ②、数据包阶段

            IN事务:设备忙,回复无效包NAK,事务提前结束。主机不断重试这个事务。

            设备端点被禁止,回复错误包STALL,事务提前结束,总线进入空闲状态。

            设备端点正常,且设备准备新的中断处理,则设备会按主机要求回复主机所需数据。

            OUT事务:结构相对较为简单, 主机将紧接着OUT令牌包, 就发送数据, 并按照DATA0和DATA1 数据包交替触发的顺序来发送数据。

        ③、握手包阶段

             IN事务:如果主机正确地接收到了数据, 那么就会给设备发送ACK; 如果数据包在传输过程中被破坏了, 那么设备就会不回复任何握手信息, 直接将总线转入空闲状态, 等待下一次传输。

            OUT事务:设备忙,返回无效包NAK,总线进入空闲,直到主机重试发送该数据设备端点被禁止,回复错误包STALL,事务提前结束,总线进入空闲状态。    如果发送的数据没有错误, 并且设备成功地接收, 那么设备就返回ACK, 同时通知主机可以发送新的数据。如果数据包发生了CRC校验错误, 将不会返回任何握手信息。

    (2)、数据包发送顺序

        批量传输的数据包的发送顺序 , 也与中断传输非常类似从DATA0数据包开始, 然后是DATA1数据包, 接着又是DATA0, 依次重复下去。

    批量传输的数据包发送顺序

     

    (3)、总线传输特点

        批量传输既没有固定的传输速率, 也不占有固定带宽。只有当总线处于空闲状态时, 批量传输才能够获得比较大的带宽。而当总线“忙”时, USB 就会优先进行其他类型的数据传输,而暂时停止批量传输的进行, 因而批量传输就会需要很长的时间才能完成。

    (4)、数据包的大小

        全速的 USB 设备的数据大小可设定为8、16、32 或 64 字节。 高速设备则必须设定为固定值 512 字节。数据传输过程中的每一个数据的大小必须满足上述的要求, 除了最后1个数据包。

    (5)、支持设备类型

        低速不支持,全速、高速和超高速都支持批量传输。

    4、同步传输

        同步传输( Isochronous T ransfer, 可简写为 ISO), 多用于音频流等需要恒定传输速率的数据传输中, 比如音箱、显示器和摄像头等设备的接口。

    (1)、结构

        同步传输的数据结构最为简单, 因为这类数据讲究的是传输速率的恒定, 而对于数据的准确性的要求不如批量传输那么严格。因此, 同步传输中没有握手包, 总线只优先保证其占用带宽, 而不对发送错误的数据进行重试。 同步传输仍然可由IN事务或 OUT 事务组成:

    同步传输IN事务、OUT事务的结构

     

        同步传输中, 总线优先支持其等时性, 即保证带宽, 因此, 对于数据的准确性的要求次之。基于此, 同步传输的事务中, 不包含握手包, 主机和设备都无需对接收到的数据返回握手信息。

        同步传输中包含了 2 种最基本的事务类型, 即 IN 事务和 OUT 事务, 同中断传输和批量传输一样, 它也不支持设置 SETUP 事务。

        ①、令牌包阶段:

            IN事务:主机通过发送输入包 IN(标识域 PID 为 IN), 来启动 1 个 IN 传输。

            OUT事务:主机发送输出包 OUT (标识域 PID 为 OUT), 启动 1 个 OUT 传输。

        ②、数据包阶段:

            IN事务:设备紧接着 IN 令牌包, 以 DATA0 和 DATA1 交替触发机制发送有效数据, 然后总线进入空闲状态, 准备进行下一次传输。

            OUT事务:同输入 IN 事务一样, 主机会紧接着 OUT 令牌包, 以 DATA0 和 DATA1 交替触发机制发送有效数据给设备, 然后总线进入空闲状态, 准备进行下一次传输。

    (2)、数据包发送顺序

        与中断传输和批量传输不同, 对于全速设备, 同步传输中不支持数据包的交替触发机制,而且第一个数据包被初始化为 DATA0, 因此 , 数据包将 一直以 DA TA0 发送 下去。 而高速和全速设备在一定条件下支持触发机制, 情况较为复杂。

    (3)、总线传输特点

        全速设备的同步传输,在1个帧内,可以包含1笔IN事务或OUT事务,而高速设备可以包含3笔事务。总线将会优先保证同步传输的带宽 , 甚至会因此而暂时中止批量传输的进行。

    (4)、数据包大小

        全速设备数据包的大小为 0~1023 字节,而高速设备为 1024 字节。

    (5)、支持设备类型

        只有全速和高速设备支持同步传输 , 而低速设备不支持同步传输。

    5、控制传输

        控制传输( Control Tran sfer)是最为复杂的传输类型, 也是最为重要的传输类型, 是 USB 枚举阶段最主要的数据交换方式。

    (1)、结构

        控制传输的核心是 SETUP 事务,USB 定义了较为复杂的控制传输的结构, 将其分为 3 个大的步骤 :初始设置步骤、可选数据步骤、状态信息步骤

        ①、初始设置步骤

            初始设置步骤,由一笔SETUP事务构成。这笔SETUP事务有令牌包、数据包和握手包组成。

                令牌包阶段 : 主机发送 SETUP 令牌包。

                数据包阶段 : 主机发送固定为 8 个字节的 DATA0 包, 并且有确定的结构, 将这 8 个字节分配给 5 种命令信息, 即 bmRequest Type、bRequest、wValue、wIndex 和 wLength。

                握手包阶段 : 设备在接收到主机的命令信息后, 返回 ACK。此后, 总线进入空闲状态,并准备“可选数据步骤”的开始。

    初始设置步骤SETUP事务

     

    ②、可选数据步骤

        如果在上一步骤中的命令要求读/ 写数据的话, 就由这一步骤来具体交换数据。如果没有数据交换要求的, 这个步骤就可以省去。

    可选数据步骤(IN、OUT事务)结构

     

        控制传输的“可选数据步骤”中包含了 2 种最基本的事务 , 即 IN 事务和 OUT 事务。

        控制传输的“可选数据步骤”中, 无论是 IN 事务, 还是 OUT 事务, 都包含了令牌包、数据包和握手包。

        令牌包阶段:

            IN 事务: 主机通过发送输入包 IN(标识域 PID 为 IN), 来启动 1 个 IN 传输。

            OUT 事务: 主机发送输出包 OUT (标识域 PID 为 OUT), 启动 1 个 OUT 传输。

                数据包阶段:需要特别注意的是, 由于“初始设置步骤”中已经包含了 1 个数据包阶段,其中的数据是 DATA0 包, 因此 “可选数据步骤”中数据包的第 1个包将是 DATA1包, 然后, 接下来仍将是 DATA0/ 1 的交替触发 :

            IN 事务 : 设备首先就会对接收到令牌包进行解析如下

                设备忙,回复无效包NAK,事务提前结束。主机不断重试这个事务。

                设备端点被禁止,回复错误包STALL,事务提前结束,总线进入空闲状态。

                设备端点正常,且设备准备新的中断处理,则设备会按主机要求回复主机所需数据。

            OUT 事务 : 结构相对较为简单, 主机将紧接着 OUT 令牌包, 就发送数据, 并按照DATA0 和 DAT A1 数据包交替触发的顺序来发送数据。

        握手包阶段:

            IN事务:如果主机正确地接收到了数据, 那么就会给设备发送ACK; 如果数据包在传输过程中被破坏了, 那么设备就会不回复任何握手信息, 直接将总线转入空闲状态, 等待下一次传输。

            OUT事务:设备忙,返回无效包NAK,总线进入空闲,直到主机重试发送该数据设备端点被禁止,回复错误包STALL,事务提前结束,总线进入空闲状态。    如果发送的数据没有错误, 并且设备成功地接收, 那么设备就返回ACK, 同时通知主机可以发送新的数据。如果数据包发生了CRC校验错误, 将不会返回任何握手信息。

    ③、状态信息步骤

        主机的控制读操作中,应用的是OUT事务;而控制写操作中应用的是IN事务。数据阶段中发送的数据均为DATA1包的0长度数据。

    控制传输的 “状态信息步骤”结构

        控制传输的“状态信息步骤”中包含了2种最基本的事务,即输入IN事务和输出OUT事务。IN事务代表主机的写操作, OUT事务代表主机的读操作。

        控制传输的“状态信息步骤”中,无论是IN事务,还是OUT事务,都包含了令牌包、数据包和握手包。

        令牌包阶段:

            IN 事务:主机通过发送输入包IN(标识域 PID 为 IN ), 来启动1个IN传输。

            OUT事务:主机发送输出包 OUT (标识域 PID 为 OUT), 启动 1 个 OUT 传输。

        数据包阶段 :

            IN 事务 :  如果设备没有准备接收新的数据 , 那么设备就返回NAK;如果相应的设备端点被禁止,那么设备就发送STALL包;如果设备端点正常,并且设备准备新的中断处理, 则设备就会按主机的要求发送所需0长度的数据。

            OUT事务:结构相对较为简单,主机将紧接着OUT令牌包,就发送0长度的数据,并按照 DATA0 和 DATA1 数据包交替触发的顺序来发送数据。

        握手包阶段 :

            IN事务:如果主机正确地接收到了数据, 那么就会给设备发送ACK; 如果数据包在传输过程中被破坏了, 那么设备就会不回复任何握手信息, 直接将总线转入空闲状态, 等待下一次传输。

            OUT事务:设备忙,返回无效包NAK,总线进入空闲,直到主机重试发送该数据设备端点被禁止,回复错误包STALL,事务提前结束,总线进入空闲状态。    如果发送的数据没有错误, 并且设备成功地接收, 那么设备就返回ACK, 同时通知主机可以发送新的数据。如果数据包发生了CRC校验错误, 将不会返回任何握手信息。

    (2)、控制传输数据发送顺序

    控制传输数据发送顺序

    (3)、总线传输特点

         对于低速和全速设备,总线将会为控制传输保证至少10%的带宽; 而高速设备的控制传输将会得到至少20%的带宽。这样,当有设备连接到主机上时,将会很快得到配置,而不必担心因主机正在进行的其他 USB 传输而耽误。

    (4)、数据包大小

        由于控制传输的3个步骤中都包含了数据包阶段,因此,数据包的大小也要分开讨论。在初始设置步骤中,已经知道是1个固定为8 字节大小的DATA0包。在可选数据步骤中,如果是低速设备,则数据包为8字节;全速设备的数据包大小可以是8、16、32和64字节; 而高速设备的数据包大小必须为 64 字节。

    (5)、支持设备类型

    既然控制传输是最为重要的一类传输类型 , 是所有 USB 设备被配置和使用的前提 , 因此 ,低速、全速和高速设备都支持控制传输。

    如有错误,请及时提出。谢谢谢!!!

                      上一篇                                                                        下一篇(软件篇)

    展开全文
  • 文章目录USB简介USB系统架构USB系统拓扑结构USB主控制器USB HUBUSB设备USB设备逻辑结构USB描述符设备描述符配置描述符接口描述符端点描述符USB数据传输控制传输中断传输等时传输批量传输USB设备枚举USB设备枚举八步 ...
  • 基于SlaveFIFO模式USB数据传输系统
  • 嵌入式Linux下USB设备的大容量数据传输驱动开发与实现.pdf
  • USB数据传输流程

    2013-04-07 21:02:00
    USB数据传输流程  USB总线协议对数据的传输进行了严格的定义,通过软硬件的协作可以方便地实现USB主机和设备之间的双向数据传输,通信的过程之上而下涉及四个部分:主机软件、USB总线驱动程序、USB主机控制驱动...
  • 本文所设计的基于USB接口的无线数据传输系统利用了USB接口的高传输速率、即插即用等优点,并结合了无线数据传输技术,实现了计算机之间的无线数据通讯,解决了传统通信技术带给我们的不便。 系统硬件设计 基于...
  • 自己写的一个小Dome,不是项目,主要是使用USB数据线来连接PC端和Android端进行一个数据的交互。一个PC端的客户端类,和Android端的服务端代码。
  • PC与Android设备进行USB文件传输

    热门讨论 2014-10-17 16:22:44
    上位机c#源代码:在PC上实现与Android设备的数据传输,完美使用ADB命令 功能包括: 1.上传文件 2.上传文件夹 3.下载文件 4.下载文件夹 5.删除Android文件 6.删除Android文件夹 7.创建Android文件夹
  • Android 使用USB进行数据传输

    万次阅读 2019-07-15 01:56:20
    1.Android通过两种模式支持各种USB设备 USB host 和USB accessory (Android3.1 API 12以上) USB Host Mode 主机模式:Android设备充当主设备,并为总线供电 USB Accessory Mode 附件模式:外部硬件充当USB主...
  • linux设备驱动之USB数据传输分析

    千次阅读 2015-09-10 17:23:57
    USB2.0 spec中定义了四种传输,为别为ISO,INTER,BULK,CONTORL.linux kernel为INTER,BULK,CONTORL的URB初始化提供了一些API,ISO的传输只能够手动去初始化.这些API如下: static inline void usb_fill_control_urb...
  • 基于CH375的USB数据传输 以CH375和单片机为核心内
  • 摘要:针对有线传输的缺点或不足,为避免经常插拔接口造成测试仪器损坏,设计基于USB2.0的红外数据传输系统。详细论述系统的总体结构和关键硬件电路的设计及实现,并阐述系统的固件程序、驱动程序及应用程序的设计...
  • 通过ADB+Socket实现USB数据传输
  • 端点长度为64,也就是单次最多可以传输64个字节数据。 STM32获取上位机下发的数据并将该数据通过USB原样返回,同时将数据打印输出。 上位机程序通过调用windows的API实现对HID设备的读写控制。 USB接口原理图: HID...
  • 摘要:提出了一种基于FPGA和USB的高速数据传输、记录及显示系统的设计方案,并对其中的低电压差分信号(LVDS)传输方式、FPGA功能模块以及USB传输模块等进行了介绍。该系统不但可以快速方便的传输、记录及显示雷达...
  • USB3.0数据传输系统

    2018-04-18 08:59:30
    usb3的数据传输接口设置以及固件代码设置,通过usb传输至电脑端,实现显示和控制。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,121
精华内容 27,248
关键字:

usb数据传输

友情链接: Matrix.rar