阅读:1670回复:6
请高手来看一看,特别是plasma,关于D12枚举的问题.
我用了plasma的程序,把设备插到PC后,WIN2000报找到未知USB设备,然后就自动用了usb.inf而且usb.inf不能正常安装.如果更新驱动程序,系统会说找到一个比我选择的那一个更好,但还是usb.inf.我的PID和VID都改成了f0f0,f0f0.
我的驱动程序是由DS生成的,没有实际内容,但也不应该装不上呀.而且居然连INF文件都不认,估计是PID和VID没有读出来,请高手指教一下. |
|
|
沙发#
发布于:2002-05-23 14:46
将PID和VID改成usb.inf中没有的,可以察看usb.inf文件。
|
|
板凳#
发布于:2002-05-23 14:53
我今天试了一下,问题在设备这边.
当设备连到主机时,D12发出了一个中断,然后我的fireware读出中断寄存器后,不能清0. void D12_int() { XmtBuff.pNum = 16; D12_COMMAND = 0xf4;// 读中断寄存器 ist = D12_DATA; //在这里ist为0x01 if(ist & 0x01) //ENDP0_OUT { XmtBuff.out = 0; XmtBuff.in = 1; D12_COMMAND = 0x40; //读 OUT 最后状态 ist= D12_DATA; //###这里还是为0x01, 好像上一个0x40的指令没起作用. plasma在吗?可以用QQ交流一下吗?2745071 |
|
|
地板#
发布于:2002-05-23 19:58
我申请QQ,用了好多时间也没行!
关于调试,需不断插拔USB口,设断点,一步运行到断点处,再看结果! |
|
地下室#
发布于:2002-05-24 09:58
我在不同的地方设了断点.发现D12根本就没有发出收到setup包的信号.
下面这个函数总共进入了8次,但ist的内容很奇怪 void D12_int() { XmtBuff.pNum = 16; D12_COMMAND = 0xf4;// 读中断寄存器 ist = D12_DATA; 第一次:ist=0x80 2:ist=0x01 3:ist=0x80 4:ist=0x40; 5:ist=0x40; 6:ist=0x01; 7:ist=0x80 即使在ist=0x01时, 下面一条语句 if(ist & 0x01) //ENDP0_OUT { XmtBuff.out = 0; XmtBuff.in = 1; D12_COMMAND = 0x40; //读 OUT 最后状态 ist= D12_DATA; ist始终等于0x01 |
|
|
5楼#
发布于:2002-05-24 19:56
在
D12_COMMAND = 0x40; //读 OUT 最后状态 ist= D12_DATA; 后 SETUP_read(); 社断点! |
|
6楼#
发布于:2002-05-25 09:13
试过了.始终是0x01
|
|
|