您的位置 首页 应用

USB枚举周详进程分析

(1)集线器检测新设备主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有15kOmega;…

(1)集线器检测新设备
主机集线器监督着每个端口的信号电压,当有新设备接入时便可察觉。(集线器端口的两根信号线的每一根都有15kΩ的下拉电 阻,而每一个设备在D+都有一个1.5kΩ的上拉电阻。当用USB线将PC和设备接通后,设备的上拉电阻使信号线的电位升高,因而被主机集线器检测到。)
(2)主机知道了新设备衔接后
每个集线器用中止传输来陈述在集线器上的事情。当主机知道了这个事情,他给集线器发送一个Get_Status恳求来了解更多的音讯。回来的音讯告知主机一个设备是什么时分衔接的。
(3)集线器从头设置这个新设备
当主机知道有一个新的设备时,主机给集线器发送一个Set_Feature恳求,恳求集线器来从头设置端口。集线器使得设备的USB数据线处于重启(RESET)状况至少10ms。
(4)集线器在设备和主机之间树立一个信号通路
主机发送一个Get_Status恳求来验证设备是否激起重启状况。回来的数据有一位表明设备依然处于重启状况。当集线器释放了重启状况,设备就处于默许状况了,即设备已准备好经过Endpoint 0 的默许流程呼应操控传输。即设备现在运用默许地址0x0和主机通讯。
(5)集线器检测设备速度
集线器经过测定那根信号线(D+或D-)在闲暇时有更高的电压来检测设备是低速设备仍是全速设备。(全速和高速设备D+有上拉电阻,低速设备D-有上拉电阻)。
以下,需求USB的firmware进行干涉
(6)获取最大数据包长度
PC 向address 0发送USB协议规则的Get_Device_Descriptor指令,以取得却缺省操控管道所支撑的最大数据包长度,并在有限的时间内等候USB设备 的呼应,该长度包含在设备描绘符的bMaxPacketSize0字段中,其地址偏移量为7,所以这时主机只需读取该描绘符的前8个字节。留意,主机一次 只能罗列一个USB设备,所以同一时间只能有一个USB设备运用缺省地址0。
以下操作相同,不同操作体系设守时延是不相同的,比方说win2k大概是几毫秒,假如没有反应就再发送一次指令,重复三次。
(7)主机分配一个新的地址给设备
主机经过发送一个Set_Address恳求来分配一个仅有的地址给设备。设备读取这个恳求,回来一个承认,并保存新的地址。从此开端一切通讯都运用这个新地址。
(8)主机向新地址从头发送Get_Device_Descriptor指令,此次读取其设备描绘符的悉数字段,以了解该设备的整体信息,如VID,PID。
(9)主机向设备循环发送Get_Device_Configuration指令,需求USB设备答复,以读取悉数设置信息。
(10)主机发送Get_Device_String指令,取得字符集描绘(unicode),比方产商、产品描绘、类型等等。
(11)此刻主机将会弹出窗口,展现发现新设备的信息,产商、产品描绘、类型等。
(12) 依据Device_Descriptor和Device_Configuration应对,PC判别是否可以供给USB的Driver,一般win2k能 供给几大类的设备,如游戏操作杆、存储、打印机、扫描仪等,操作就在后台运转。不过Win98却不能,所以在此刻将会弹出对话框,索要USB的 Driver。
(13)加载了USB设备驱动今后,主机发送Set_Configuration(x)指令恳求为该设备挑选一个适宜的设置(x代表非0的设置值)。假如设置成功,USB设备进入“设置”状况,并能和客户软件进行数据传输。
此刻,惯例的USB完成了其有必要进行的设置和衔接作业。检查注册表,可以发现相应的项目已增加结束,至此设备应当能开端运用。不过,USB协议还供给了一些用户可选的协议,设备假如不应对,也不会犯错,不过会影响到体系的功用。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/239183.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部