hooking
驱动牛犊
驱动牛犊
  • 注册日期2003-06-08
  • 最后登录2004-09-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1266回复:5

帮我解决问题的人,提供usb host技术支持

楼主#
更多 发布于:2003-10-21 09:26
采用MSP430+isp1161方案,usb host这一部分基本上已经完成,只是还有点问题一直没能很好的解决,我不能实现即插即用,就是说,我要使用u盘的话,就必须在程序运行前先把u盘插上,如果先运行程序,再插u盘的话,就不能读出描述符等。不知道什么原因,如果知道的话,不仿解释一下,我可以提供其他方面的技术支持。

最新喜欢:

oracle3oracle...
bjzps
驱动小牛
驱动小牛
  • 注册日期2003-03-06
  • 最后登录2009-04-13
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望22点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-21 11:31
你是不是没做检测usb设备插入的代码?
记得好像是有设备插入的时候,有个信号线的电平会拉高,以示有设备接入。
hooking
驱动牛犊
驱动牛犊
  • 注册日期2003-06-08
  • 最后登录2004-09-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-21 14:40
我当然要检测u盘,使用中断方式,一旦有u盘接上就会有中断产生,这时进行设备枚举,却得不到设备描述符。但是,我将这一套过程用在已插入情况下,完全可以。
keeplearn
驱动牛犊
驱动牛犊
  • 注册日期2003-10-20
  • 最后登录2004-02-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-21 15:16
你的中断允许寄存器怎么设的?
我遇到过的问题是同时允许了inserted/removed和device detect/resume会出现中断信号不停产生的现象。
后来我禁止了device detect/resume中断才好了。
不知道你是怎么做的。我这样做每次都要先运行程序才可以
在u盘插入/拔除的时候产生中断。
不过我现在的问题跟你有点象,我无法读出设备描述符。
一次也不行。
我是这样做的:先写80h 06h 0001h 0000h 4000h 进入sl811
1,写pid(setup)和endpoint地址(0)
2,设备地址(0)
3,数据长度(8)
4,写sl811数据缓冲区首地址
5,写data0_wr到ep0control
6,等待中断,读intrstatus(读到是81h,usb a done)再读ep0status(读到04h,timeout)
7,返回1

在这里就不停的循环。
你可以读出描述符了,你是怎么做的,大家讨论一下!

hooking
驱动牛犊
驱动牛犊
  • 注册日期2003-06-08
  • 最后登录2004-09-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-22 20:37
我一时也很难跟你讲清楚,推荐一本书给你看吧,中国电力出版社的<usb外围设备设计与应用>,里面有一章讲述的很详细.
hooking
驱动牛犊
驱动牛犊
  • 注册日期2003-06-08
  • 最后登录2004-09-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-10-22 22:01
我问题已经解决了.多谢各位了.
游客

返回顶部