USB通讯协议 && 数据传输

USB2.0通讯协议(spalish)

1.包(packet)

包是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。USB包由五部分组成,同步字段(sync)、包标识符(PID)、数据字段、CRC和包结尾字段(EOP)。

包类型(由PID区分):

令牌:OUT   IN  SOF  SETUP

数据:DATA0  DATA1

握手:ACK  NAK  STALL

特殊:PRE

2.事务(transaction)

USB系统上一次接收或发送的处理过程称为事务。事务处理的类型有:输入事务,输出事务,设置事务,帧开始,帧结尾

还有一个特殊的事务类型:拆分事务(split transaction),用来支持高速hub上连接低速或全速设备。这种特殊事务类型只是和host和hub有关,但是对设备是透明的。

3.传输

控制传输、中断传输、批量传输、等时传输

所有的四种传输方式都由上面的事务来处理,也就是说传输由不同类型的事务组成,事务由不同类型的的收发组成

3.包传送和frame的关系?帧(frame)和微帧(microframe)

USB总线上的传输由帧组成。

低速或全速设备通过帧来传送,周期1ms

高速设备通过微帧,周期125us

host每1ms产生SOF包(相当于微帧的时候是每8个微帧产生一个SOF包)

一个帧可以包含多个事务。每N个帧总线会分配带宽给中断传输或是等时传输

可以这么理解:总线时隙分成一个个帧,每个帧里面由事务组成。host controller的作用就是根据传输类型合理分配这些事务在总线上的调度。

USB  最主要的的是要理解   USB主机发送命令给设备,设备要对主机的命令进行响应, USB通讯的基本单位为 “包”   理解好“包”这个概念是学习USB的关键所在。 
包有如下分类: 
分别是令牌包、数据包、握手包和特殊包(其实是由PID决定的) 
令牌包:可分为输入包、输出包、设置包和帧起始包(注意这里的输入包是用于设置输入命令的,输出包是用来设置输出命令的,而不是放据数的)其中输入包、输出包和设置包的格式都是一样的: 
SYNC+PID+ADDR+ENDP+CRC5(五位的校验码) 
帧起始包: 
SYNC+PID+11位FRAM+CRC5(五位的校验码) 
数据包:分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式如下: 
SYNC+PID+0~1023字节+CRC16 
握手包:结构最为简单的包,格式如下 
SYNC+PID

下面举几个例子来说明USB的通讯过程: 
1:主机想要向设备传送一串数据。 过程如下: 
(1)   主机向从机发送 “令牌包”,令牌包的类型为输出包,表示主机要向从机发送数据了。 
(2)   主机向从机发送完令牌以后,USB处理器件根据发送的令牌,会将中断状态寄存器标志置位,从机CPU通过查询USB处理器件的中断状态寄存器,对主机的令牌包进行响应 
(3)   从机判别出中断类型,于是,准备从主机接收数据。 
(4)   从机准备好了,于是主机开始发送“数据包” 这时,USB处理器件会自动将从主发送过来的数据放如它的内部缓冲区内,接收完这个数据包后,从机向主机发送“应答包”  
这就是一个完整的通讯过程。 
由以上可以看出,USB若是想要传送数据,那么主机必须先发一个 IN 或OUT的令牌包,然后发送DATA0,或DATA1数据包。 
简单的用现实生活中的事件进行描述:  老板想让员工去做一件事情,老板 先会发出命令,告诉要做什么事情,员工准备好以后呢,老板再把做这件事情的经费发放给员工,当员工把发放的经费清点以后,发现数目正确,他会给老板一个回应信息,告诉老板,钱已经收到了,而且数目正确。 
老板想让员工做的事:  对应USB通讯里的令牌包。 
老板想要发放的经费:  对应USB通讯里的数据包。 
员工给老板的回应:    对应USB通讯里的握手包。 
这里尤其需要注意一个问题就是: 
USB主机向设备发送令牌包的时候,接收令牌是有USB器件来完成的,而不是有从机CPU来完成的,如主机发送一个如下的令牌: 
SYNC+PID+ADDR+ENDP+CRC5 
USB器件回根据PID的类型来判断是哪种类型的令牌 根据ADDR的值来判断是否是和自己通讯,根据ENDP的值来判断是和哪个端点进行通讯,根据校验来判断,数据传送是否无误。根据以上的令牌包信息,USB器件会将其内部的中断状态寄存器相应的位置位,从机CPU可以查询这个中断状态寄存器来进行相应的操作。

原文地址:https://www.cnblogs.com/tianqiang/p/10893412.html

时间: 2024-08-30 16:03:00

USB通讯协议 && 数据传输的相关文章

USB通讯协议之深入理解

0. 基本概念 一个[传输](控制.批量.中断.等时):由多个[事务]组成: 一个[事务](IN.OUT.SETUP):由一多个[Packet]组成. USB数据在[主机软件]与[USB设备特定的端点]间被传输.[主机软件]与[USB设备特定的端点]间的关联叫做[pipes].一个USB设备可以有多个管道(pipes). 1. 包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的.数据在 USB总线上的传输以包为单位,包只能在帧内传输.高速

关于物联网通信协议(通讯协议)

一.区分通讯与通信协议:1.传统意义上的"通讯"主要指电话.电报.电传.通讯的"讯"指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端.媒体讯息的内容主要是话音.文字.图片和视频图像.其网络的构成主要由电子设备系统和无线电系统构成,传输和处理的信号是模拟的.所以,"通讯"一词应特指采用电报.电话.网络等媒体传输系统实现上述媒体信息传输的过程."通讯"重在内容形式,因此通讯协议主要集中在ISO七层协议中的应用层.

物联网常见通信协议与通讯协议梳理【上】- 通讯协议

先说明, 这是在微信公众号看到的,不是自己所写, 觉得别人总结的很好, 就拿过来了.对于学习, 做一个搬运工也不可耻了,将好的知识自己吸收.  在微信公众号里, 没有找到连接. 1  "通信"与"通讯"傻傻分得清 传统意义上的"通讯"主要指电话.电报.电传.通讯的"讯"指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端.媒体讯息的内容主要是话音.文字.图片和视频图像.其网络的构成主要由电子设备系统和无线电系统构

四轴飞行器1.8 通讯协议拟定、协议验证与飞控输出验证

原创文章,欢迎转载,转载请出名出处. 上个周末其实通讯协议就已经拟定完成了,这一个星期主要成了通讯协议的解析,然后通过通讯协议的实现,加入遥控器的控制和飞控信息的传递,从飞控传到遥控器,再从遥控器传到电脑上,通过matlab现实姿态信息和电机输出控制信息.这章会一步一步介绍实现的过程. 1:遥控和飞控之间的通讯. 2:通讯协议的拟定. 3:通讯协议的实现与解析. 4:通过遥控控制飞控并且飞控姿态通过nrf上传数据. 先上通过遥控控制飞控并且飞控姿态通过nrf上传数据的视频哈,看看效果,解释在后面

【通讯协议】动手解剖《中华人民共和国环境保护行业标准(HJ/T 212-2005):污染源在线自动监控(监测)系统数据传输标准》

记得几年前,看到<中华人民共和国环境保护行业标准(HJ/T 212-2005):污染源在线自动监控(监测)系统数据传输标准> 这个协议,当时看的头都大了,最终没有下手去设计支持他.直到最近,客户说:你们VOC仪器不错啊,要是能支持HJ212传输协议就好了... 头脑出现当年阅读那个协议时的纠结,如今居然真的有客户想要我支持这个麻烦的协议,没办法,必须的做啊,也许做出来还是独家呢?哈哈 令我惊喜的是这次读这篇传输协议标准,我居然很容易就懂了,觉得其实这个协议挺简单的,而且写的还不错,面面俱到.

MQTT是IBM开发的一个即时通讯协议,构建于TCP/IP协议上,是物联网IoT的订阅协议,借助消息推送功能,可以更好地实现远程控制

最近一直做物联网方面的开发,以下内容关于使用MQTT过程中遇到问题的记录以及需要掌握的机制原理,主要讲解理论. 背景 MQTT是IBM开发的一个即时通讯协议.MQTT构建于TCP/IP协议上,面向M2M和物联网IoT的连接协议,采用轻量级发布和订阅消息传输机制.Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用. 基本概念 [MQTT协议特点]——相比于RESTful架构的物联网系统,MQ

DSA通讯协议

1.DSA-接口规范 DSA总线是一个异步,双向的,内部设计用于在一组两个微处理器之间的通信总线. 它有三个双向线: ● DATA -启动同步和数据传输 ● STB -数据选通(当STB为低电平时数据是有效的) ● ACK -启动同步,数据传输,确认及通信应答 2.通讯说明 每个数据通信包括三个阶段: ● 开始同步 同步发射器和接收器数据传输 ● 数据传输 通过数据选通和应答信号传输所有的数据位. ● 通信应答 接收器可以让发射机知道通信是否异常,如果通信没有出现错误,有 可能重复它,直到它是确

uart通讯协议

本次设计的源码在http://download.csdn.net/detail/noticeable/9912383 下载 实验目的:通过uart通讯协议的编写,了解FPGA的通讯协议编写的方法. 实验现象:FPAG可以通过USB转TTL工具向电脑收发数据. 相关知识点:1.uart通讯协议是什么及其内容.2.in system surce and probes(editor)调试工具的使用. 关于串行通讯:串口通讯协议是一种主机之间常用的通讯协议,通过模块按位发送和接收字节,可以达到通讯的目的

websocket通讯协议(10版本)简介

前言: 工作中用到了websocket 协议10版本的,英文的协议请看这里: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10 这篇文章相当于工作的总结吧. 首先, 你需要简单了解一下为什么会诞生websocket通讯协议,web上的通讯一般都是基于HTTP(超文本传输协议)的通讯,故而没有建立长时间的网络连接的方法,一般的通讯都是这样子的: 请求 浏览器--------------------->服务器 <-