搜索
bottom↓
回复: 376

USB枚举过程图解.....

  [复制链接]

出0入0汤圆

发表于 2005-9-16 15:19:12 | 显示全部楼层 |阅读模式














阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2005-10-26 23:22:37 | 显示全部楼层
看不懂,请楼主解释一下!

出0入0汤圆

发表于 2005-11-7 13:42:55 | 显示全部楼层
嗯,我也看不懂,请楼主解释下!

出0入0汤圆

发表于 2005-11-25 21:07:39 | 显示全部楼层
to: Si_Bin

请问 data- 或 data+ 是单向通信还是双向通信?

出0入0汤圆

发表于 2006-4-20 21:29:00 | 显示全部楼层
usb数据分析仪。。。

出0入0汤圆

发表于 2006-8-1 16:06:12 | 显示全部楼层
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可以查询这个中断状态寄存器来进行相应的操作。

出0入0汤圆

发表于 2006-12-2 19:33:05 | 显示全部楼层
我也是什么也看不懂,请楼主说清楚些?

出0入0汤圆

发表于 2006-12-2 19:40:02 | 显示全部楼层
我也是什么也看不懂,请楼主说清楚些?

出0入0汤圆

发表于 2007-11-8 17:33:11 | 显示全部楼层
最近在搞usb,这个真是宝贝中的宝贝,最最有价值的帖子。

出0入0汤圆

发表于 2007-11-9 12:15:45 | 显示全部楼层
请教一下楼主,
请求类型      请求         wValue        wIndex            wLength   

   a3           00           0000           0200              0400

我一直想不明白,协议里说wLength是指明返回数据的长度,这里是0400,而很多资料里说是要求返回04个字节,怎么不是0400个字节?是不是usb的数据都这么高位和地位反着呢?这样的话,wIndex 事实上是0002,wLength是0004,是这么理解吗?

出0入0汤圆

发表于 2007-11-16 11:32:50 | 显示全部楼层
这个图有好多错误啊,PID都错了
应该是这样的
SETUP   2D
IN      69
OUT     E1
DATA0   C3
DATA1   B4
ACK     D2

出0入0汤圆

发表于 2007-11-16 11:34:41 | 显示全部楼层
楼上那位,你的理解是对的,低字节在前,高字节在后

出0入0汤圆

发表于 2007-11-16 12:25:29 | 显示全部楼层
留个标记

出0入22汤圆

发表于 2007-11-16 13:36:52 | 显示全部楼层
谢谢楼主

出0入0汤圆

发表于 2007-11-16 19:38:25 | 显示全部楼层
确实不错,谢谢!

出0入17汤圆

发表于 2007-11-16 20:26:11 | 显示全部楼层
楼主用的分析仪跟我用的一样,CATC,哈哈

出0入0汤圆

发表于 2007-11-18 10:48:33 | 显示全部楼层
这是用什么软件或是工具获得的图片资料?
请LZ共享下。
枚举过程是蛮清楚的,怎么没有上获取接口描述符和HID描述符的图片啊?

出0入0汤圆

发表于 2007-11-18 10:49:46 | 显示全部楼层
CATC?USB分析仪?
没钱,买不起

出0入0汤圆

发表于 2007-11-18 11:31:58 | 显示全部楼层
路过

出0入0汤圆

发表于 2007-11-18 13:46:56 | 显示全部楼层
好用,顶

出0入0汤圆

发表于 2007-12-17 17:34:01 | 显示全部楼层
好东西,做个标记先

出0入0汤圆

发表于 2007-12-17 17:36:51 | 显示全部楼层
标记

出0入0汤圆

发表于 2007-12-17 18:03:47 | 显示全部楼层
As

出0入0汤圆

发表于 2007-12-17 18:19:14 | 显示全部楼层
标记

出50入0汤圆

发表于 2007-12-18 10:47:07 | 显示全部楼层
理解中...

出0入0汤圆

发表于 2007-12-19 09:54:40 | 显示全部楼层
记号

出0入8汤圆

发表于 2008-1-10 15:16:03 | 显示全部楼层
极好

出0入0汤圆

发表于 2008-1-18 11:01:36 | 显示全部楼层
【5楼】 luhuaren 我看你写的太好了!能不能写写其他的啊?从机这么向主机传数据啊?

出0入0汤圆

发表于 2008-1-22 17:18:14 | 显示全部楼层
收藏起来,我知道会有用的

出0入0汤圆

发表于 2008-5-20 00:37:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-5-20 08:49:08 | 显示全部楼层
记之,用时,找之。

出0入0汤圆

发表于 2008-5-20 08:57:22 | 显示全部楼层
正在做 USB
这帖子太有用了

出0入0汤圆

发表于 2008-5-20 09:04:54 | 显示全部楼层
有个疑问

看手册上说PID 的格式
LSB                                          MSB
PID0  PID1  PID2 PID3  !PID0  !PID1  !PID2  !PID3


PID 类型
out   PID[0:3]  0001B
in    PID[0:3]  1001B
SOF   PID[0:3]  0101B
SETUP PID[0:3]  1101B

DATA0 PID[0:3]  0011B
DATA1 PID[0:3]  1011B

ACK   PID[0:3]  0010B
NAK   PID[0:3]  1010B
STALL PID[0:3]  1110B

PRE   PID[0:3]  1100B

发送这些PID时到底怎么发???

出0入0汤圆

发表于 2008-5-20 09:53:03 | 显示全部楼层
PID低4位在前,高4位在后,高4位是低4位的反码。

出0入0汤圆

发表于 2008-5-20 13:45:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-5-26 23:59:11 | 显示全部楼层
留个脚印

出0入0汤圆

发表于 2008-5-27 02:01:53 | 显示全部楼层
mark.

出0入0汤圆

发表于 2008-5-27 02:30:04 | 显示全部楼层
太高级了,偶看USB只能这么看,累啊:

(原文件名:未命名.JPG)

出0入0汤圆

发表于 2008-5-27 07:46:27 | 显示全部楼层
做个标记,这个非常有用。

出0入0汤圆

发表于 2008-5-27 08:41:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-5-27 08:51:10 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-5-27 08:53:47 | 显示全部楼层
好东西,收藏起来!正在学习USB,概念理解起来很费劲啊!

出0入0汤圆

发表于 2008-5-27 13:13:03 | 显示全部楼层
看不明白。。记号

出0入0汤圆

发表于 2008-5-27 13:17:43 | 显示全部楼层
好资料

出0入0汤圆

发表于 2008-6-4 14:41:32 | 显示全部楼层
不錯

出0入0汤圆

发表于 2008-6-4 15:58:06 | 显示全部楼层
做个记号!

出0入0汤圆

发表于 2008-6-4 18:46:45 | 显示全部楼层
做个记号!

出0入0汤圆

发表于 2008-6-6 10:29:56 | 显示全部楼层
真的非常好,谢谢,终于明白。原来就一个问题不懂,现在明白了,就是设置地址过程中,觉得好象差一个OUT事务,原来实际在发SETUP包中已经包含了地址数据,呵呵,明白

出0入0汤圆

发表于 2008-6-6 17:02:35 | 显示全部楼层
记号,现在用不到!!

出0入0汤圆

发表于 2008-6-6 17:21:22 | 显示全部楼层
mark~~

出0入0汤圆

发表于 2008-7-23 13:46:06 | 显示全部楼层
已经收藏!!!谢楼主

出0入0汤圆

发表于 2008-7-23 14:36:59 | 显示全部楼层
记下了

出0入0汤圆

发表于 2008-9-26 15:40:56 | 显示全部楼层
留个记号...

出0入0汤圆

发表于 2008-9-26 16:05:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-9-26 19:24:43 | 显示全部楼层
收起来

出0入0汤圆

发表于 2008-9-26 23:32:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-9-27 00:49:10 | 显示全部楼层
老帖 不过很酷

出0入0汤圆

发表于 2008-9-27 21:14:34 | 显示全部楼层
mark mark

出0入0汤圆

发表于 2008-9-27 22:09:09 | 显示全部楼层
不仅收藏而且保存下来了

出0入0汤圆

发表于 2008-9-27 23:09:26 | 显示全部楼层
记下,有时间看!谢谢!

出0入0汤圆

发表于 2008-10-1 21:56:12 | 显示全部楼层
茅塞顿开,拨云见日啊

出0入0汤圆

发表于 2008-10-2 02:18:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-13 15:28:56 | 显示全部楼层
太好,刚好理解了,要不理解起来这样多的概念真的很累,谢谢楼主!

出0入0汤圆

发表于 2009-3-15 13:30:22 | 显示全部楼层
谢谢,收下了.

出0入0汤圆

发表于 2009-3-15 17:09:35 | 显示全部楼层
收下以后慢慢看,哈哈

出0入0汤圆

发表于 2009-3-16 00:42:45 | 显示全部楼层
很好

出0入0汤圆

发表于 2009-3-17 00:31:27 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-3-17 18:34:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-17 19:37:38 | 显示全部楼层
留个标记

出0入0汤圆

发表于 2009-3-17 20:28:28 | 显示全部楼层
留个记号慢慢看!

出0入0汤圆

发表于 2009-3-21 21:07:58 | 显示全部楼层
记号

出0入0汤圆

发表于 2009-3-21 22:07:55 | 显示全部楼层
好像在那个PDF看过..
好像是这个基于STM32的USB程序开发笔记.pdfourdev_426983.pdf(文件大小:2.39M) (原文件名:基于STM32的USB程序开发笔记.pdf)

出0入0汤圆

发表于 2009-5-27 01:11:01 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-6-2 20:00:15 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-6-2 21:08:56 | 显示全部楼层
先下载了,慢慢看

出0入0汤圆

发表于 2009-6-4 13:01:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-4 13:52:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-7-17 16:20:06 | 显示全部楼层
5楼的解释的很透彻。

出0入0汤圆

发表于 2009-7-17 17:21:05 | 显示全部楼层

出0入0汤圆

发表于 2009-7-31 09:07:17 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-7-31 10:29:31 | 显示全部楼层
晕了!

出0入0汤圆

发表于 2009-8-2 21:25:26 | 显示全部楼层
看不懂哦

出0入0汤圆

发表于 2009-8-3 15:12:00 | 显示全部楼层
好贴岂能不顶

出0入0汤圆

发表于 2009-8-3 18:16:37 | 显示全部楼层
有点乱 不过过程还凑合

出0入0汤圆

发表于 2009-8-3 20:28:33 | 显示全部楼层
绝对好多东西,可惜没钱买USB协议分析仪,呵呵

出0入0汤圆

发表于 2009-8-3 20:38:49 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-8-13 22:55:44 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-8-15 16:53:22 | 显示全部楼层
没有入门~~~~~~看不懂!!

出0入8汤圆

发表于 2009-8-15 17:11:33 | 显示全部楼层
好资料啊。

出0入0汤圆

发表于 2009-8-16 22:48:00 | 显示全部楼层
kanbudong

出0入0汤圆

发表于 2009-8-17 16:28:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-4 13:41:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-6 15:52:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-24 10:11:18 | 显示全部楼层
good!mark

出0入0汤圆

发表于 2009-10-10 22:37:16 | 显示全部楼层
记号。

出0入0汤圆

发表于 2009-10-10 22:38:21 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-10-11 22:20:04 | 显示全部楼层
谢谢了。

出0入0汤圆

发表于 2009-12-2 14:33:45 | 显示全部楼层
不懂!!!

出0入0汤圆

发表于 2009-12-2 14:37:27 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-12-2 21:18:23 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 05:59

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表