USB设备请求的响应

huayangshiboqi 2016-10-06 08:45:07
在USB设备请求响应的程序中:
case GD_DEVICE_QUALIFIER; //设备限定描述符
if( HighSpeedCapable( ) )
{
SUDPTRH=MSB( pDeviceQualDscr );
SUDPTRL=LSB( pDeviceQualDscr );
}
else
{
EZUSB_STALL_EP0( );
}
break;
请问:
HighSpeedCapable( ) 函数和 EZUSB_STALL_EP0( );函数是干什么用的。
刚入手USB,求大神带。
...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huayangshiboqi 2016-10-11
  • 打赏
  • 举报
回复
我懂了,谢谢
of123 2016-10-11
  • 打赏
  • 举报
回复
如果你的设备就是全速的,而且也不支持切换到高速模式(大多数设备都是这样),你不要把设备描述符中的版本信息设置成 2.0 就好了。或者当主机发来这个请求时,直接 Stall。
huayangshiboqi 2016-10-10
  • 打赏
  • 举报
回复
引用 1 楼 of123 的回复:
Qualifier 描述符用来说明支持高速的 USB 设备如何在不同速度模式下切换。例如,当前是全速模式,但可以转换成高速;或反之。 因此,首先要检查设备是否支持高速。如果是,返回描述符。不过不支持高速,则直接将 Ep0 控制通道 Stall,表示不支持的 USB 请求。 HighSpeedCapable( ) 是检查是否支持高速模式;EZUSB_STALL_EP0( ); 是将 Ep0 Stall 掉。
那就是说这些函数都是在头文件里面有定义的,可以直接拿出来用的函数,对吗?
of123 2016-10-09
  • 打赏
  • 举报
回复
如果不支持高速,则直接将 Ep0 控制通道 Stall,表示不支持的 USB 请求。
of123 2016-10-09
  • 打赏
  • 举报
回复
Qualifier 描述符用来说明支持高速的 USB 设备如何在不同速度模式下切换。例如,当前是全速模式,但可以转换成高速;或反之。 因此,首先要检查设备是否支持高速。如果是,返回描述符。不过不支持高速,则直接将 Ep0 控制通道 Stall,表示不支持的 USB 请求。 HighSpeedCapable( ) 是检查是否支持高速模式;EZUSB_STALL_EP0( ); 是将 Ep0 Stall 掉。

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧