阅读:2184回复:18
关于D12的枚举,难道就这么难吗?!!
看看协议,真是小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_De... |
板凳#
发布于:2002-06-08 20:15
你是用的plasma的程序吧,如果是,就不要用keil C来编译。
|
|
|
地板#
发布于:2002-06-09 00:48
为什么?那用什么编译呢?我用的是伟福的仿真器,总是发生一些莫名其妙的事,用wave在线仿真。
|
|
地下室#
发布于:2002-06-09 13:26
直接烧片子试试
|
|
|
5楼#
发布于:2002-06-09 13:55
具体说一下!
|
|
6楼#
发布于:2002-06-10 11:09
为什么?那用什么编译呢?我用的是伟福的仿真器,总是发生一些莫名其妙的事,用wave在线仿真。 偶也用的是wave的仿真器,不巧前一阵出的毛病和你前面说的一样,读的中断数据也一样,烧了片子也不行。愁死偶了..... :(,你要是知道怎么解决,告诉偶啊!!!!! 还有一个问题,现在偶测d12 clockout管脚输出一直是高电平,设置无效,请问各位高手为什么?是不是片子有问题?谢谢了~~~~~~ |
|
|
7楼#
发布于:2002-06-10 11:20
[quote]为什么?那用什么编译呢?我用的是伟福的仿真器,总是发生一些莫名其妙的事,用wave在线仿真。 偶也用的是wave的仿真器,不巧前一阵出的毛病和你前面说的一样,读的中断数据也一样,烧了片子也不行。愁死偶了..... :(,你要是知道怎么解决,告诉偶啊!!!!! 还有一个问题,现在偶测d12 clockout管脚输出一直是高电平,设置无效,请问各位高手为什么?是不是片子有问题?谢谢了~~~~~~ [/quote] 忘了说了,读中断寄存器,是0x1f,读端点最后处理状态也是0x1f,怪了。。。。。 |
|
|
8楼#
发布于:2002-06-10 15:14
可能是硬件的问题吧?不过,wave仿真器是有些问题,如我在循环中赋值就是不行,最后只好一行行的写上去了。要是clockout不行,你也可以把wave设成由它提供晶振,不用D12的输出。不过,clockout要是没有输出,D12可能没有正常工作呀。
|
|
9楼#
发布于:2002-06-10 19:08
那应该怎么监测片子好坏呢?换一块好麻烦的。。。。 :(
|
|
|
10楼#
发布于:2002-06-10 20:48
D12损坏的可能性很小,认真检查一下电路.
我用的D12是完全用飞线都没问题. 关于WAVE仿真器,出现问题时,把仿真器电源拔掉,重新接上电源,在软件上设置重新连接仿真器,设成由外部提供晶振是不错的办法,可以检查D12是否工作! |
|
11楼#
发布于:2002-06-11 09:03
主要是这个D12的封装太小了,我第一次做板子就是不知什么原因收不到该来的中断,而片子太小没法飞线(我有几根线在片子下连了),只好重做板子。现在虽然还有问题,至少枚举快成功了。D12损伤的可能性不太大,可能是你的硬件的连接。还有是软件上Command和Data的地址有没有设对。
|
|
12楼#
发布于:2002-06-11 17:52
今天又测了一下,系统刚上电,d12输出4M方波,led灯不亮,系统不提示找到硬件,按几下弹片机的复位键后,led灯亮一下,接到一个中断,系统提示找到硬件,但出错,不能继续.这时d12clockout 输出高电平??各位高手能不能给分析一下错在哪里?
还有几个问题请教,在d12正常工作状态下,reset和suspend管脚应该置高电平还是低电平.我的系统刚启动,p2.2管脚(接d12的suspend)就被拉低,(还没给p2口置数),这正确吗?d12的d+和d-应该接1M的上拉电阻还是下拉电阻?我的系统没接磁珠,用18欧姆的普通电阻,(没买到 :(),这样行吗?谢谢~~~~~~~ |
|
|
13楼#
发布于:2002-06-11 22:20
D12的reset必须接VCC,suspend可以悬空.不做DMA操作dmreq可以悬空,但eot_n,dmack_n必须接VCC.
D12刚启动时,suspend是低电平.附加电阻可以不接.(U盘内的D12是不接附加电阻的) |
|
14楼#
发布于:2002-06-12 10:14
那reset管脚接mcu的i/o,让他输出高电平应该也可以吧?
d+,d-接1M上拉电阻还是下拉电阻? 谢谢 |
|
|
15楼#
发布于:2002-06-12 10:48
to mengxy
你是怎么知道来的中断是什么?譬如你说的0xc1,0x41等等?难道用的是sniffusb知道的?但是这个东东看不出来来的中断是什么呀?只能看到来的是什么标准控制码呀?请赐教! |
|
16楼#
发布于:2002-06-12 12:34
应该是读中断寄存器读出来的
|
|
|
17楼#
发布于:2002-06-12 13:16
是啊,来了中断后读中断寄存器呀。
|
|
18楼#
发布于:2002-10-17 16:01
To mengxy:
你的问题怎么解决的啊! |
|
|