在线时间29 小时
UID3128013
注册时间2015-5-16
NXP金币0
该用户从未签到
注册会员

- 积分
- 138
- 最后登录
- 2018-11-29
|
本帖最后由 yangzhengyong 于 2016-3-1 11:52 编辑
我们系统中,KL26是USB主机,无线模块为USB设备。
我们将USB软件移除,让总线上不在发SOF之后,下面的设备确实进入了休眠状态。
但是它们无法通过Usb唤醒主机,询问设备厂家之后,答复说,根据USB规范,休眠之前需要SetFeature,使能设备端的usb_remote_wakeup功能,
我们做这个实验时,一直失败,尝试了两家无线模块厂家的东西,都不成功,估计问题出在主机这边可能性比较大,我们没有USB协议分析仪,无法准确定位问题。
我们USB lib版本为3.0.xxx, 实验代码如下。设置下去后,立即回读,根据usb2.0 spec描述,
此时返回来的2个字节,第一个字节的bit1应该为1,但我们调试的结果是0,运行效果也是设备没有remote wakeup功能,应该是设置失败了。但设置过程中并没有报错。
哪位大侠帮忙看看问题在哪里,谢谢!
INT8U u8Buff[4] = {0};
if ( USB_STATUS_TRANSFER_QUEUED != (u32Ret = _usb_host_ch9_set_feature( dev_inst_ptr,
REQ_TYPE_DEVICE,
0,
DEVICE_REMOTE_WAKEUP )))
{
#if defined __DEBUG__
printf("----- set feature fail:%d -----\n", u32Ret);
#endif
}
else
{
if ( USB_STATUS_TRANSFER_QUEUED != (u32Ret = _usb_host_ch9_get_status( dev_inst_ptr,
REQ_TYPE_DEVICE,
0,
u8Buff )))
{
#if defined __DEBUG__
printf("----- get feature fail:%d -----\n", u32Ret);
#endif
}
else
{
if ( u8Buff[0] & 0x02 )
{
sUsb.bEnableRemoteWakeup = TRUE;
}
}
}
|
|