原创 USB协议深入分析_设置USB地址(转载)

2009-5-15 16:55 2711 0 分类: MCU/ 嵌入式

原载于:http://blog.csdn.net/caimouse/archive/2007/04/18/1568991.aspx


前面已经解释主控器怎么样发送设备描述符下来,然后设备返回相应的设备描述符。下一步主控器的动作是做什么呢?由于在USB总线上的设备有很多,为了区分不同的设备通讯,就需要给每个设备分配一个地址,这跟网络中的IP地址是一样的,或者跟MAC地址也是一样的。因而,接着下来就是主控器分配地址给设备,USB的设备地址是从1开始到127。下面就是接收到主控器发下来的数据包:

00 05 01 00 00 00 00 00

USB_SETUP_PACKET定义具体地分析这个数据,就可以知道应做什么样的响应了。下面就来解释这个操作。

先取得bmRequestType的类型,也就是第一个字节,它是00。从USB协议里查看,它的方向位是主控器发送给设备,由D6D5位就知道它是USB协议里定义的标准请求,由D4-D0位知道它是USB设备接收这个包数据。

bRequest是05,从前面已经介绍的类型,就知道它是设置地址,如下:

SET_ADDRESS             5

所以这个包需要按设置地址的格式去解释后面的数据。

 

由于USB协议可以知道,USB的设备地址放在字段wValue里,因它的值是01 00,按小端格式解释就是0x0001了。其它相应的字段wIndexwLength应都是0,如果是其它非0的数据,是没有定义的。

 

USB的串行引擎通过这个地址来判断是否接收总线上的数据,如果发送的地址跟它一致,就会接收主控器发过来的数据,当然从这个设备发送出去的数据也带有这个地址,因此就可以让主控器识别不同的USB设备数据了。
广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
haoran_flying 2009-05-20 20:45
Mega16+CH375硬件测试程序
前几天在做usbd12调试时不小心把12V电压接到5V上去了,烧了几个片子,D12也挂了,由天手头上没有D12了,再说手工焊接也挺麻烦的,上次买D12时顺便带了CH375。因为这一直都是用的AVR的片...
haoran_flying 2009-05-16 20:59
我做的OO的usb鼠标
  五一放假在家没事,逛到了END圈圈的USB专区,小组公告的那段话很实在。原来做的项目都是通过串口通讯,看来有时间还是要学习一下USB。  这段时间看了一下协议和其他的一些资料,还只是一个模糊的认识...
haoran_flying 2009-05-15 16:58
USB协议深入分析_字符串描述符(转载)
原载于:http://blog.csdn.net/caimouse/archive/2007/04/25/1584778.aspx上一次说到把配置描述符返回给主控器那里了,现在接着下来,就会收到主控器...
haoran_flying 2009-05-15 16:56
USB协议深入分析_配置(转载)
原载于:http://blog.csdn.net/caimouse/archive/2007/04/23/1575676.aspx前面已经介绍设置USB的设备地址,接着下来是做什么呢?其实有了设备地址...
haoran_flying 2009-05-15 16:53
USB协议深入分析_返回设备描述符(转载)
原载于:http://blog.csdn.net/caimouse/archive/2007/04/12/1561959.aspx 回应设备描述符上一次已经介绍怎么样收到主控器的获取设备描述符的数据,...
我要评论
0
0
广告
关闭 热点推荐上一条 /1 下一条