欢迎访问ic37.com |
会员登录 免费注册
发布采购

单片机设备列举的步骤

日期:2009-1-5标签: (来源:互联网)
设备列举是一种总线上的配置过程,且在usb设备被插拔进出后或总线起始时,就会被加以执行。整个usb设各列举的基本架构如图1所示。

整个设备列举的可分为下列的步骤。

①设备插入pc主机的根集线器或usb集线器的接口端。

②集线器不断地查询接口的状态,一旦检测到电位的改变后,hub就会通知主机。

③紧接着,主机就会询问端口状态的改变。

④主机确认端口的改变,并且针对这个接口重置命令。

⑤现在,主机即位于接上电源的状态,并且以预设的地址响应这个新接上的设备。

图1 usb设备列举的基本示意图

⑥主机针对端点0,取回设各描述符,并且决定最大的封包大小。当然,同时也取出此设各的pid/vid码,以确认此设备是何 种驱动程序。

⑦主机配附一个单独的地址给usb设备。

⑧主机取回配置描述符。此时,主机可以根据可使用的电源与带宽,给予设备配置的方式。这样,设各就有了设计的电源与带 宽(中断查询间隔)。

⑨现在,设备已设置好地址与配置完毕,可以准备使用了。若以usb通信协议的观点来看,设备列举可划分为下列数个步骤。

①主机送出setup令牌封包以及其后所跟随的data封包至地址0(data封包内放置取得设各描述符的标准要求),用来取得设备 描述符。

②usb微控制器将此标准要求译码,并且从它的程序内存(rom表)中取出设备描述符。

③主机执行控制读取的传输序列,此时,usb微控制器将会通过usb总线送出设备描述符并做出相对应的动作。

④在收到设备描述符后,主机会送出setup令牌封包以及其后所跟随的data封包至地址0(data封包内放置设置设各地址的标准要求 ),以设置一个新的usb地址至设备上。

⑤usb微控制器在完成“无数据”控制传输后,将会存储新的地址于它的设备地址的缓存器内。

⑥主机设置一个新的usb地址给设备,并针对设备描述符送出一个要求。

⑦usb微控制器将此要求译码,并且从程序内存(rom表)中取出设各描述符。

⑧主机执行控制读取的序列,此时,usb微控制器将会以usb总线送出设备描述符并做出相对应的动作。

⑨主机对usb微控制器产生控制读取的序列,以读取设备的配置与各种描述符。

⑩usb微控制器从它的程序内存(rom表)中取出相对的配置与各种描述符,并且通过usb总线将数据传回至主机。

⑩当主机收到所有的描述符后,就完成了设各列举的步骤。

此外,若以i/o设备所须负责的工作来看,基本上可以分为几个重要的不同状态:脱离、连接、供给电源等。如图2所示,显示了一 个外围i/o设备所需的状态流程图。

图2 外围i/0设备所需的状态流程图

从图中,可以发现到整个外围i/o的动作状态。而在第2章已介绍过各种总线的状态。因此,在此也应用这些总线的状态来说明一个外围i/o所需的各种状态。其中,可以发现正常的流程是,连接usb设备,供应电源,预设设备,设置地址以及配置等动作。这也符合上述所介绍的设备列举的步骤。但是,若此时总线检测到没有任何usb动作超过3 ms,那么设备就会切人低功率的中止(suspend)状态。此时,设备不能从总线中使用超过500 μa(平均值)的电源。这个3 ms时间内没有总线动作是意味着,pc主机停止送出sof封包。而这有可能是pc主机已经关掉电源。若其中回复至总线上的动作被激活后,将会导致i/o设备从中止状态跳至下一个动作状态中。

以上的步骤看似非常的复杂,但用户可以通过稍后章节所要介绍的工具来加以了解。