打印
[STM32F1]

USB HOST向自定义的HID类设备发送数据

[复制链接]
1362|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
化羽成龙|  楼主 | 2016-3-31 15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据官方给的STM32主机模式去读取鼠标信息的例程进行修改,枚举没有问题,当通过set report发送数据时,要发送136字节,结果只发送了两包32字节数据就NAK退出了,请问是什么原因
沙发
wahahaheihei| | 2016-3-31 21:52 | 只看该作者
使用STM32的USB开发库实现:
1)在usb_prop.c的函数CustomHID_Data_Setup()中,GET_PROTOCOL之后增加的代码变为这样:
/*** GET_REPORT ***/
else if((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_REPORT)
{
if (数据未准备好)
return USB_NOT_READY;
CopyRoutine = CustomHID_GetReport;
}
STM32将以NAK回应PC端的IN请求。
2)同样增加一个函数CustomHID_GetReport。
3)在数据准备好之后(注意准备数据的时间不能太长,否则PC端会做超时处理),执行下述操作:
pInformation->Ctrl_Info.CopyData = CustomHID_GetReport;
pInformation->Ctrl_Info.Usb_wOffset = 0;
CustomHID_GetReport(0);
pInformation->Ctrl_Info.PacketSize = pProperty->MaxPacketSize;
DataStageIn();

使用特权

评论回复
板凳
5768340| | 2016-6-6 18:53 | 只看该作者
使用USB3.5的库版本中怎么去解决这个问题呢?我看到这个解决方案应该是HS模式下的,如果FS模式下该怎么去判断呢 ?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝