4910|3

473

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

USB基础 [复制链接]

转过来网上零碎的一些文章,介绍usb基础知识的

==端点==
usb设备或主机上的一段缓冲区,用于存放放松或者接收的数据。每个端点都有唯一的地址,由设备地址和端点号组成。
端点有不同的传输特性:输入端点,输出端点,批量传输端点,配置端点等。
 
==帧==
时间概念,一帧就是1ms,它是一个独立的单元,usb将1ms分成好几份,每一份中是一个usb的传输动作。
   
==上行、下行== 
主机到设备叫下行,设备到主机叫上行
 
==传输结构的构成== 
传输线由地线、电源线、D+和D-四根线构成,D+、D-是差分输入线,它使用3.3V的电压(和CMOS的5V不同)。
而电源和地线可以给设备提供5V的电压,最大电流为500MA(可以在编程中实现,具体硬件实现可以忽略)。
 
USB数据格式格式
域(七种)=>包=>事务(IN,OUT,SETUP)=>传输(控制、中断、批量、并行/分时)
==域==
1 同步域(SYNC) 0000 0001 用于本地时钟与输入同步
2 标志域(PID)  4位标识符和4位标识符反码构成,表明包的类型和格式,可见有16种包
3 地址域(ADDR) 七位地址,代表了设备在主机上的地址,0000 0000是零地址,是任何设备被主机配置,
              枚举之前的默认地址,由此可知usb只能连接127个设备
4 端点域(ENDP) 4位,由此可知一个USB设备的端点最大为16个
5 帧号域(FRAM) 11位,2^11为2K,共0x800,。对于同步传输很重要。
6 数据域(DATA) 长度为0~1023字节
7 校验域(CRC)  对令牌包和数据包中非PID域进行校验的一种方法
 
==包==
令牌包
     输入包|输出包|设置包
     SYNC+PID+ADDR+ENP+CRC5
     帧起始包
     SYNC+PID+FRAM+CRC5
数据包
     DATA0和DATA1包,两个包是交替的。同步传输除外,在同步传输中,所有的数据包都是DATA0包。
     SYNC+PID+CRC16
握手包
     SYNC+PID
 
==事务==
每一个事务都是由令牌包,数据包,握手包3个阶段组成。
   令牌包:启动一个输入,输出或设置的事务
   数据包:按输入,输出发送相应的数据
   握手包:返回数据接收情况。在同步传输的IN和OUT事务中没有这个阶段。这是比较特殊的。
IN事务
   令牌包阶段:
        主机发送一个PID为IN的输入包给设备,通知设备要往主机发送数据。
   数据包阶段:
        设备会根据情况作出3种反应
        1)设备端点正常,设备向主机发送数据包(DATA0和DATA1交替)
        2)设备正在忙,无法向主机发送数据包,就发送NAK无效包。
           IN事务提前结束,到下一个IN事务才继续。
        3)相应设备端点被禁止,发送错误包STALL包,事务也就提前结束了,总线进入空闲状态。
   握手包阶段:
        主机正确接收到数据包之后就会像设备就会向ACK数据包。
OUT事务
   令牌包阶段:
        主机发送一个PID为OUT的输出包给设备,通知设备准备接收数据。
   数据包阶段:
        比较简单,就是主机向设备发送数据,DATA0和DATA1交替。
   握手包阶段:
        设备会根据情况作出3种反应
        1)设备端点接收正确,设备向主机发送ACK,通知主机可以发送新的数据。
           如果发生了CRC校验错误,就不会返回任何握手包
        2)设备正在忙,无法往主机发送数据,就发送NAK数据包,通知主机再次发送数据。
        3)相应设备端点被禁止,发送错误包STALL,事务提前结束,总线直接进入空闲状态。
SETUP事务
   令牌包阶段:
        主机发送一个PID为SETUP的输出包给设备,通知设备准备接收数据。
   数据包阶段:
        比较简单,就是主机向设备发送数据,注意,这里只有一个固定为8个字节的DATA0包,这8个字节
        就是标准的USB设备请求命令(共有11条)。
   握手包阶段:
        设备接收到主机的命令信息后,返回ACK,此后总线进入空闲状态,并准备下一个传输。
        (在SETUP事务之后通常是一个IN或OUT事务构成的传输)
==传输==

  传输有IN,OUT,SETUP这三种事务组成,共有4种类型。
   中断传输 批量传输 同步传输 控制传输
      中断传输和批量传输的结构一样,同步传输有罪简单的结构,而控制传输是最重要的也是最复杂的传输
   1 中断传输
     由IN事务和OUT事务构成,用于键盘,鼠标等HID设备的数据传输中。
   2 批量传输
     由IN事务和OUT事务构成,用于大容量数据传输,没有固定的传输速率,也不占用带宽-当总线忙时,USB会优先进行其它类型的数据传输,而暂时停止批量传输。
   3 同步传输
     由OUT事务和IN事务构成,有两个特殊的地方,第一,在同步传输的IN和OUT事务中是没有握手包阶段的。第二,在数据包阶段所有的数据包都为DATA0。
     是单向的传输
     (用途呢?始终以恒定的速率传输,没有差错控制,适合视频等对时间有要求但对准确性要求不高的业务
   
4 控制传输(用在建立连接阶段?)
     最重要也是最复杂的传输。
     控制传输由3个阶段构成(初始设置阶段,可选数据阶段,状态信息步骤),每一个阶段
     看成一个传输,也就是说控制传输其实是由3个传输组成的。
     USB设备初次接到主机之后,主机通过控制传输来交换信息,设备地址和读取设备的描述符,使得主机识别设备,并安装相应的驱动程序,这是每一个USB开发者都关心的问题。
     1 初始设置步骤:就是一个有SETUP事务构成的传输
     2 可选数据步骤:就是一个由IN或OUT事务构成的传输,这个步骤是可选的,要看初始设置步骤有没有要求读/写数据(由SETUP事务数据包阶段发送的标准请求命令决定)
     3 状态信息步骤:顾名思义,这个步骤就是要获取状态信息,由IN或OUT事务构成的传输,但是要注意这里的IN和OUT事务和之前有两点不同:
     1)传输方向相反,通常IN表示设备往主机发送数据,OUT表示主机向设备发送数据,在这里,恰恰相反。
     2)在这个步骤里,数据包阶段的数据包都是0长度的,及SYNC+PID+CRC16。
     (思考:这些传输模式在实际操作中应如何通过什么方式去设置?)
此帖出自NXP MCU论坛

最新回复

对耶,为什么复制到word 还有图像了。很好  详情 回复 发表于 2011-7-25 10:00
点赞 关注
个人签名Nicrosystem专业提供freescale、TI和STM32高性价比开发板、解决方案
http://nicrosystem.taobao.com
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
很好的,复制到WORD里还有图呢,很形象!
此帖出自NXP MCU论坛
 
 
 

回复

1014

帖子

0

TA的资源

裸片初长成(初级)

板凳
 
楼主的方式比打包下载的好,直接就可以阅读了。谢谢楼主。
此帖出自NXP MCU论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

4
 
对耶,为什么复制到word 还有图像了。很好
此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表