阅读:1574回复:8
我的usb设备连续插拔7,80次之后要让我重新装driver
说找到新的usb 设备,让我重新安装driver
多次插拔中,以很小的概率出现这种情况。 这是什么原因造成的呢? |
|
沙发#
发布于:2004-03-06 17:28
枚举失败,可能是如下的原因:
1、其实一般D12的复位引脚应该接一个上电复位电路(用一个10K的电阻和4.7uf的电容),最好不用电阻分压构成复位电路; 2、在主程序的CONNECT()和RECONNECT()之间的延时有问题; 3、晶振有问题,选择一个频率比较大的晶振 |
|
板凳#
发布于:2004-03-05 17:10
先前我写KEYBOARD时也出现过这个问题,但最终的问题还是我的软体有问题,协议没通过,修改了协议后就没问题了!最好你要用分协议来做这件事了!!
|
|
地板#
发布于:2004-03-05 15:59
先在固件中作如下修改试一试:
D12_ReadEndpoint(0, 0, 0); D12_ReadEndpoint(2, 0, 0); D12_ReadEndpoint(4, 0, 0); D12_WriteEndpoint(1, 0, 0); D12_WriteEndpoint(3, 0, 0); D12_WriteEndpoint(5, 0, 0); 加的位置应该是在connect_USB()之后立刻执行。 如果问题继续存在,则多数是上面Driver的事情了。 上面代码的任务是保证PC和Device的所有缓冲置空。 |
|
|
地下室#
发布于:2004-03-05 14:52
这种bug能解决么?
|
|
5楼#
发布于:2004-03-05 14:31
这个应该是在发送设备描述副的时候出现差错,我也遇到过这种情况用USBVIEW查看是一个不同的PID和VID。
|
|
|
6楼#
发布于:2004-03-05 14:09
根据你所说的情况,有可能是内存没有释放,导致多次插拔之后内存不足,驱动崩溃.不过我没遇到过这种情况,纯粹猜测而已.
|
|
|
7楼#
发布于:2004-03-05 10:32
但是在绝大部分情况下,我的设备能被识别,只有很小的概率提示我重新装driver,我实在搞不清楚到底什么原因。
|
|
8楼#
发布于:2004-03-05 10:07
多数情况是不能正确枚举。
因为PC发现USB的设备插入是因为端口的电平变化,如果你的板子上焊有上拉电阻的话,即使不插CPU也可以发现新硬件。极端地说,只要你在电脑USB座子的D+和VCC间加一个1.5k(但愿我没记错)的电阻,它就认为来了新硬件。 新硬件来了以后,它会进行枚举,这是PCI规范定义好的了,USB只是它的子规范。这一过程需要主机的设备管理器、总线驱动和设备固件共同完成。 这也就是说,如果你的设备插入了,PC肯定会发现它,但能不能识别它就看你的固件怎么回应它了。按照现在的状况,它认错了,但它会怪你没回应正确的。所以它把你的硬件当成全新的硬件了。 |
|
|