mengxy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-11
  • 最后登录2004-02-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2184回复:18

关于D12的枚举,难道就这么难吗?!!

楼主#
更多 发布于:2002-06-08 17:48
看看协议,真是小CASE,但在枚举的过程中,总是有问题,如下:
我用伟福的51仿真器,只能总线的那种。用ALE相连的那种连法,A0是接高电平的。在2000下,枚举过程如下(还没写上层驱动):
在启动后,做一些初始化。然后,disconnect_usb,再connect_usb
这时,2000在右下角有一个拔下或弹出硬件的图标,认出是一个USB device,联接成功。然后便能中断,首先来的是0xc1,然后是0x41,进入setup处理,读到标准控制码 80 06 00 01 00 00 40 00
为GetDescription,然后我发出 12 01 10 01 00 00 00 08
为DeviceDescription,这时再来中断0x41(偶尔会有别的中断,如0x43),标准控制码为80 06 00 01 00 00 40 00 GetDescription
有时读到标准控制码为00 05 02 00 00 00 00 00 SetAddress
即使出现SetAddress,也会再次0xc1和0x01中断,引起80 06 00 01..
然后就不再出现中断,在主程序中死循环了。这个过程到底错在哪里呢?搞了好几天了,总是这样没有进程,真是狂FT啊。高手指点一二吧,我的分全给了,呵呵。理想的情况应该是怎样的?
 :mad:

最新喜欢:

Jkw_DevJkw_De...
apmusb
游客
游客
沙发#
发布于:2002-06-08 18:58
建议看一下ZBoard的固件吧!应该有所启示的
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-08 20:15
你是用的plasma的程序吧,如果是,就不要用keil C来编译。
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
mengxy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-11
  • 最后登录2004-02-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-09 00:48
为什么?那用什么编译呢?我用的是伟福的仿真器,总是发生一些莫名其妙的事,用wave在线仿真。
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-09 13:26
直接烧片子试试
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
plasma
驱动小牛
驱动小牛
  • 注册日期2002-02-19
  • 最后登录2008-02-27
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-09 13:55
具体说一下!
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-10 11:09
为什么?那用什么编译呢?我用的是伟福的仿真器,总是发生一些莫名其妙的事,用wave在线仿真。

偶也用的是wave的仿真器,不巧前一阵出的毛病和你前面说的一样,读的中断数据也一样,烧了片子也不行。愁死偶了..... :(,你要是知道怎么解决,告诉偶啊!!!!!
还有一个问题,现在偶测d12 clockout管脚输出一直是高电平,设置无效,请问各位高手为什么?是不是片子有问题?谢谢了~~~~~~
有朋自远方来,不亦乐乎?
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-06-10 11:20
[quote]为什么?那用什么编译呢?我用的是伟福的仿真器,总是发生一些莫名其妙的事,用wave在线仿真。

偶也用的是wave的仿真器,不巧前一阵出的毛病和你前面说的一样,读的中断数据也一样,烧了片子也不行。愁死偶了..... :(,你要是知道怎么解决,告诉偶啊!!!!!
还有一个问题,现在偶测d12 clockout管脚输出一直是高电平,设置无效,请问各位高手为什么?是不是片子有问题?谢谢了~~~~~~ [/quote]
忘了说了,读中断寄存器,是0x1f,读端点最后处理状态也是0x1f,怪了。。。。。
有朋自远方来,不亦乐乎?
mengxy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-11
  • 最后登录2004-02-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-10 15:14
可能是硬件的问题吧?不过,wave仿真器是有些问题,如我在循环中赋值就是不行,最后只好一行行的写上去了。要是clockout不行,你也可以把wave设成由它提供晶振,不用D12的输出。不过,clockout要是没有输出,D12可能没有正常工作呀。
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-10 19:08
那应该怎么监测片子好坏呢?换一块好麻烦的。。。。 :(
有朋自远方来,不亦乐乎?
plasma
驱动小牛
驱动小牛
  • 注册日期2002-02-19
  • 最后登录2008-02-27
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-10 20:48
D12损坏的可能性很小,认真检查一下电路.
我用的D12是完全用飞线都没问题.

关于WAVE仿真器,出现问题时,把仿真器电源拔掉,重新接上电源,在软件上设置重新连接仿真器,设成由外部提供晶振是不错的办法,可以检查D12是否工作!
mengxy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-11
  • 最后登录2004-02-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-06-11 09:03
主要是这个D12的封装太小了,我第一次做板子就是不知什么原因收不到该来的中断,而片子太小没法飞线(我有几根线在片子下连了),只好重做板子。现在虽然还有问题,至少枚举快成功了。D12损伤的可能性不太大,可能是你的硬件的连接。还有是软件上Command和Data的地址有没有设对。
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-06-11 17:52
今天又测了一下,系统刚上电,d12输出4M方波,led灯不亮,系统不提示找到硬件,按几下弹片机的复位键后,led灯亮一下,接到一个中断,系统提示找到硬件,但出错,不能继续.这时d12clockout 输出高电平??各位高手能不能给分析一下错在哪里?
还有几个问题请教,在d12正常工作状态下,reset和suspend管脚应该置高电平还是低电平.我的系统刚启动,p2.2管脚(接d12的suspend)就被拉低,(还没给p2口置数),这正确吗?d12的d+和d-应该接1M的上拉电阻还是下拉电阻?我的系统没接磁珠,用18欧姆的普通电阻,(没买到 :(),这样行吗?谢谢~~~~~~~
有朋自远方来,不亦乐乎?
plasma
驱动小牛
驱动小牛
  • 注册日期2002-02-19
  • 最后登录2008-02-27
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-06-11 22:20
D12的reset必须接VCC,suspend可以悬空.不做DMA操作dmreq可以悬空,但eot_n,dmack_n必须接VCC.

D12刚启动时,suspend是低电平.附加电阻可以不接.(U盘内的D12是不接附加电阻的)
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-06-12 10:14
那reset管脚接mcu的i/o,让他输出高电平应该也可以吧?
d+,d-接1M上拉电阻还是下拉电阻?
谢谢
有朋自远方来,不亦乐乎?
caiyy
驱动牛犊
驱动牛犊
  • 注册日期2001-10-08
  • 最后登录2003-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-06-12 10:48
to mengxy
你是怎么知道来的中断是什么?譬如你说的0xc1,0x41等等?难道用的是sniffusb知道的?但是这个东东看不出来来的中断是什么呀?只能看到来的是什么标准控制码呀?请赐教!
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-06-12 12:34
应该是读中断寄存器读出来的
有朋自远方来,不亦乐乎?
mengxy
驱动牛犊
驱动牛犊
  • 注册日期2002-05-11
  • 最后登录2004-02-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-06-12 13:16
是啊,来了中断后读中断寄存器呀。
CObject
驱动大牛
驱动大牛
  • 注册日期2002-08-18
  • 最后登录2017-07-22
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望106点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
18楼#
发布于:2002-10-17 16:01
To mengxy:
    你的问题怎么解决的啊!
[img=501x116]http://www.driverdevelop.com/forum//upload/CObject/2004-01-13_2.jpg[/img]
游客

返回顶部