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

日志

用Holtek USB MCU实现USB Device(4)

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

以HT82K96为例,介绍USB相关的Register
这些Register主要分布在BANK0和BANK1
BANK0: USC, USR, SCC
BANK1: AWR, STALL, PIPE, SIES, MISC, FIFO0~FIFO3

1、USC只有bit0-bit3是跟USB相关的。
SUSP和RESUME,是USB总线状态表现的地方
RMWK,通知HOST进行WakeUp的,相当于Device这个秘书唤醒HOST
URST:USB Reset标示

2、SCC中跟USB相关的只有2个bit
SYSCLK:说明现在用的是6M还是12M,千万别添错,否则HOST不理你
USBCKEN:USB时钟允许,正常用的时候一定置1,置0的相当于USB关了,不给发薪怎么干活呢

3、USR跟USB相关的bit多了
EP0IF-EP3IF: Endpoint Interrupt flag,就是引起USB中断的来头,Firmware看这几个bit,
用完了还要记得清除,去大号当然要自己擦屁股了
SPS2:PS2使能,当然置0了,对待敌人要象秋风扫落叶一样.....
SUSB: USB使能,当然置1了,对待.....
ADREF: AD转换用的,跟我们的话题无关,自己看去
FIFO-cntl: 专门跟仿真器用的,操作FIFO时候,0读1写,我想烧OTP也不碍事吧,就一直用吧



下面是住在BANK1的寄存器介绍,写Firmware的时候记着用间接寻址来访问喔

1、AWR
USB地址(7个bit)+Remote Wake使能(1个bit),注意这7个bit的地址,是bit1-bit7,所以经常要shift 1个bit

2、STALL
STALL,死到死到,确实是负责各个端点死活的,不过不是死了拉到,1就死0就活,每个ENDPOINT一个bit

3、FIFO0~FIFO3
各个PIPE的FIFO了,各管各家,各养各妈

4、PIPE
这里就告诉你刚才哪个王妃(PIPE)被国王(HOST)临幸过,仍然是各管各家,每个PIPE一个bit

5、MISC
终于轮到这个最杂货的Register了,这可以PIPE访问的法官啊,它仲裁SIE和Firmware谁可以访问FIFO
因为Firmware是通过FIFO跟USB SIE联络的,于是FIFO就是临界区(不明白概念者,去看OS课本)
SELP0+SELP1:两个bit表示4个FIFO,别告诉我你想不通
TX:发送还是接受,也就是你要读还是写FIFO,1表示其中哪个,1当然表示发送了,人家名字叫TX啊
REQ和READY:分别用来提交申请和查看申请是否通过,大家最讨厌的罗嗦估计也跟它俩有关,不过人家也尽责了
剩下的几个bit估计比较独立了
Cleare:不管FIFO有没有READY,强制清除FIFO,说好听的叫做进入特别状态,不好听就叫做独裁
SCMD:告诉Firmware说FIFO里面的数据是Setup,它怎么有先见之明呢,人家SIE不是看过Token了吗
LEN0:告诉Firmware说HOST送来个长度为0的数据包,有这样送礼的吗?USB spec确实定义了这种流氓做法,这是后话

6、SIES
这个寄存器啊,新版的IC才有(详见官方datasheet)
Adr_set:这个有用啊,增加它Firmware可简化了不少,这是后话。
F0_Err: FIFO0专用的Error寄存器,作用呢,您仔细瞅吧,一出错标志而已,无非想证明FIFO0最重要


路过

鸡蛋

鲜花

握手

雷人

发表评论 评论 (4 个评论)

回复 shining 2006-9-7 08:51
McuPlayer,加油哦!

以下为blog主人的回复:

 谢谢鼓励!

回复 123 2006-9-10 13:19

鄙視樓主:

我當時需要編寫的時候你老人家不總結,現在你才總結,我建議把樓主扔到女兒國作皇后以做懲罰~~

-~——

回复 dengdalong 2006-10-9 17:42

mcuplayer

期待你的后续  加油

回复 hunteren 2006-10-14 10:41
hvery good!写出了自己的东西
icsel 2007-11-27 09:30
ding!!!