Cypress的usb芯片做通讯

[复制链接]
 楼主| zwll 发表于 2011-3-8 21:46 | 显示全部楼层 |阅读模式
我用Cypress的usb芯片做通讯,pc上采用winxp系统,通讯正常后,假若电脑进入"睡眠",再次开启电脑后,驱动就不能用了
pangb 发表于 2011-3-8 21:52 | 显示全部楼层
你意思是usb设备断开后如何让host主机去主动连接它?
morrisk 发表于 2011-3-8 21:59 | 显示全部楼层
用debug viewer输出的信息是啥
 楼主| zwll 发表于 2011-3-8 22:00 | 显示全部楼层
上次的驱动还能使用,但是status的状态上发现usb设备是断开状态,我从"我的电脑"-->"设备管理器"-->执行"扫描检测硬件改动"这个步骤后,我的usb设备就可以用过了。
llljh 发表于 2011-3-8 22:09 | 显示全部楼层
你写个程序模拟一下这个步骤
 楼主| zwll 发表于 2011-3-8 22:12 | 显示全部楼层
我写了个函数来模拟这个步骤,貌似不行
 楼主| zwll 发表于 2011-3-8 22:16 | 显示全部楼层
BOOL CyUSBDevice::ScanForHardwareChanges()
{
  DEVINST devInst;
  CONFIGRET status;
  status = CM_Locate_DevNode(&devInst, NULL, CM_LOCATE_DEVNODE_NORMAL);

  if (status != CR_SUCCESS) return FALSE;

  status = CM_Reenumerate_DevNode(devInst, 0);
   
  if (status != CR_SUCCESS) return FALSE;

  MessageBox(NULL,"ScanHardwarechange","",MB_OK);  
  return TRUE;
}
houcs 发表于 2011-3-8 22:33 | 显示全部楼层
用程序来实现window下手动执行"扫描检测硬件改动"这个过程
小小猫咪 发表于 2011-3-8 22:43 | 显示全部楼层
应该是主动扫描吧,不懂帮顶!
司徒老鹰 发表于 2011-3-8 22:53 | 显示全部楼层
这个貌似不应该通过应用程序解决
如果排除cypress的bug,那么就是驱动的问题
可能是驱动里的电源管理没有做好
morrisk 发表于 2011-3-8 23:24 | 显示全部楼层
休眠唤醒后通信是否正常?
在其他的电脑也是一样吗,如果是一样,那基本上是cypress的bug,
llljh 发表于 2011-3-8 23:38 | 显示全部楼层
这个问题感觉有点意思啊,涉及到CY的驱动就很难了,而目前最新版CY的驱动是没有公开的。
dqyubsh 发表于 2011-3-9 13:46 | 显示全部楼层
cy的驱动是支持pnp外设的,就是说,只要使用cyusb的驱动,支持拔插操作是没问题的。

问题还是在你的应用软件上。系统一定会有消息对应你的休眠、断开操作。试着响应一下WM_DEVICECHANGE消息,在其中判断到拔下则断开设备,判断到插入操作则重连设备。
 楼主| zwll 发表于 2011-3-14 20:01 | 显示全部楼层
多谢楼上,我再确认一下
llljh 发表于 2011-3-14 21:03 | 显示全部楼层
主机休眠后,USB设备是断开了,还是休眠了?
llljh 发表于 2011-3-14 21:03 | 显示全部楼层
断电要重枚举,休眠不用吧。
 楼主| zwll 发表于 2011-3-14 21:14 | 显示全部楼层
那咋办?
llljh 发表于 2011-3-14 21:20 | 显示全部楼层
测量一下休眠后的主机USB口,看电源线上是否有供电。
juventus9554 发表于 2011-3-14 21:25 | 显示全部楼层
对,如果是USB设备休眠,则唤醒有三种方式:D+线活动、WAKEUP管脚、WU2管脚。
llljh 发表于 2011-3-14 21:31 | 显示全部楼层
能来自主机的只有D+线上有活动信号。是不是主机睡醒后,D+活动,于是,所有USB设备都醒了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

885

主题

11314

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部