McuPlayer的学习笔记 https://bbs.21ic.com/?292145 [收藏] [复制] [RSS]

日志

用Holtek USB MCU实现USB Device(1)

已有 2663 次阅读2006-9-4 03:06 |个人分类:HOLTEK单片机|系统分类:单片机

做USB Device,一定要对USB spec的chapter9熟悉。看看名字是“CHAPTER 9 USB
DEVICE FRAMEWORK”就知道这章是我们写Firmware的参考重点了。这里我们先来
温习一下Chapter9的内容。


先来看看USB Device的state machine,这个状态机使USB设备知道自己处于何种状态。
我的USB spec是V1.1版本的,在176页。USB Device所处的几个状态分别是:
attached(连接)、Powered(上电)、Default(缺省状态)、Address(可寻址)、
configured(已配置),在外加一个suspend状态。
Attached状态,就是我们手工把Device和Host连接的过程,Plug而已,用Firmwre的角
度说就是“不关我的事”。
Powered这个状态的命名来自于总线供电的设备。但是也有设备是自供电的,这就设计一
些对我们讨论Firmware关系不大的细节,我们先跳过不谈(我是不是太懒惰了)。
Default缺省状态,USB Device在加电后并不立刻对总线发出响应,而是在USB的总线
Reset后才进入Default状态,可以在缺省地址相应USB的token。至于Default状态都会
发生什么USB request,我也说不清楚,但是有一点是明确的,Set Address是这个阶段
的很重要的任务。
Address状态就是在Default状态响应Set Address后进入的。按说,现在就可以工作了吧,
为什么还要再安排个Configured状态呢。这是因为USB的设计者想USB Device可以support
N个设置,到时候可以根据需要N选一(皇帝临幸妃子不都如此吗)。
Configured就是最终的工作状态了(不要再想上面的话了啊),这时候大量数据传输,所
有的USB Device都是在这个状态工作的。
至于那个suspend状态,把它当成休假好了,省电了。

说完了状态机,就该说枚举过程了。Enumerate过程,我有个朋友一直翻译为总线标示过程,
如果你也如此,肯定是看那份翻译的还算不错但是又很蹩脚的中文USB spec了。
我们先看看USB Device被Plug到Host的socket后发生了什么:
1、那个口对应的HUB会报告主机,此时你只是见到了媒婆而已,相亲还得等会
2、HUB这个媒婆就跟HOST窃窃私语,讨论你长得帅不帅之类的,而且故意搞些delay保证
你不会立马拍屁股走人。
3、HUB会Reset Device个10ms,然后Device总算到了Default状态了,可以对0地址相应了。
4、HOST跟Device见面后,通过一系列的USB request,吧Device从几个状态转来转去,最
终目标是Configured。Default状态就只能用0地址,configured之前只能用Default pipe,也
只能使用control传输。

打字有点累了,USB Requeset的回顾放到下次吧。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)