我在我的板子上(wince系统)上接入一个usb设备,wince系统起来后,是可以正确的加载这个设备的驱动的。 我现在想对这个设备进行复位,该怎么做呢?
我将VCC直接断掉,然后再重新上电,可是我发现系统无法正常的识别和加载usb设备了。
但是很奇怪的是,我将usb设备放在Demo板上使用,然后我对Demo板进行掉电,上电,wince就可以正常的加载usb设备。 因此我想是不是不能直接给usb设备掉电。 对usb的咚咚不熟,知道的兄弟指点下,如果要复位一个usb设备,该怎么做呢? 就是要通过控制相应管脚的电压,达到拔插设备的效果。
可以使用所谓的软复位技术,其实只要将USB设备电源以及信号线断开就可以了。
注意先断开电源,后断开数据线。
注意系统电源的设计,和具体的USB芯片有关系,关系到上电复位时间,进而决定复位电路的设计。
不仅要给device断电,还要保证断电的情况下D+是低电平。然后再上电应该就可以了
楼上的两位兄弟,我用示波器量了 D+上的电平变化,只要是在usb设备工作起来后,D+再变高的话,就可以正常工作; 如果D+在设备正常工作之前就变高的话,就会出错。 usb的信号不是系统控制的吗? 难道电路上要做处理?
当USB HOST时时检测D+的电平,如果发现是高就会认为有设备插入,就会向设备发送枚举信息,需要设备的回复,可能是因为你的设备没能及时回复HOST的信息,所以才会失败的。
应该是枚举的过程失败了吧。
这两种情况的区别是Demo板是整个板子断电,你对自己板子是VCC掉电,是整个电路都掉电吗?你的板子上USB接口的VBUS(5V)也需要一起掉电。有可能是USB Device部分还没有完成初始化,主机就检测到D+高电平,然后发送请求,这样就会不成功。
不知道对你有没有帮助。
楼上的兄弟,我对自己的板子也是 直接掉电,但是跟Demo板的直接掉电的情况就是会不一样。 问usb设备的人,他们说Demo板上也没有做特殊处理。 真是感觉很不解啊。 为啥用我自己的板子时,D+就会提前为高呢?