你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 USB Host鼠标兼容性问题求助

[复制链接]
叶帆科技 提问时间:2015-4-13 09:50 /
001.JPG 002.JPG
                图1 支持的鼠标                                              图2 不支持的鼠标
在 STM32Cube_FW_F4_V1.5.0\Projects\STM32F429I-Discovery\Applications\USB_Host\HID_Mouse 基础上进行修改(STM32F429I-Discovery开发板也测试过,同样问题)
目前仅发现支持 HP的一款鼠标(HP PC设备配套的)
其他的有线,无线的(大概测试了4种)都不支持

区别在于,支持的鼠标
在如下函数中:static USBH_StatusTypeDef USBH_HID_ClassRequest(USBH_HandleTypeDef *phost)
case HID_REQ_SET_IDLE:
          classReqStatus = USBH_HID_SetIdle (phost, 0, 0); //YFSoft 2015-04-06
          LCD_UsrLog("si%d ",classReqStatus);
       
    /* set Idle */
    if (classReqStatus == USBH_OK)
    {
      HID_Handle->ctl_state = HID_REQ_SET_PROTOCOL;  
    }
    else if(classReqStatus == USBH_NOT_SUPPORTED)
    {
      HID_Handle->ctl_state = HID_REQ_SET_PROTOCOL;        
    }
    break;

  case HID_REQ_SET_PROTOCOL:
    /* set protocol */
          classReqStatus = USBH_HID_SetProtocol(phost, 0);
                LCD_UsrLog("sp%d ",classReqStatus);

    if (classReqStatus == USBH_OK)
    {
      HID_Handle->ctl_state = HID_REQ_IDLE;      
      /* all requests performed*/
      phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
      status = USBH_OK;
    }
                else if(classReqStatus == USBH_NOT_SUPPORTED)
    {
                        HID_Handle->ctl_state = HID_REQ_IDLE;      
      // all requests performed
      phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
      status = USBH_OK;
                }
    break;


调试信息是我添加的,从图1可以看出 USBH_HID_SetIdle 函数开始状态为忙,几次后就OK了,USBH_HID_SetProtocol也是类似
但是不支持的鼠标,如图2,USBH_HID_SetIdle开始为忙,后续为不支持,USBH_HID_SetProtocol 直接为不支持。


有遇到类似问题的网友没有?








收藏 评论18 发布时间:2015-4-13 09:50

举报

18个回答
skywolf-1016972 回答时间:2015-4-29 18:41:39
本帖最后由 skywolf-1016972 于 2015-4-29 18:54 编辑

我测过几个鼠标,出问题的都是无线鼠标,你的也是这样的吗?
文档:Device Class Definition for Human Interface Devices (HID) Version 1.11
Appendix G: HID Request Support Requirements
对于Non-Boot Mouse,Set Idle  Set Protocol 命令都是可选的。
我试的两个无线鼠标接收器,都是两个interface,第一个是键盘,第2个是鼠标及几个功能不明的设备。
两个无线鼠标中键盘的interface支持Set Idle  Set Protocol,
两个无线鼠标中一个鼠标的Interface不支持Set Idle  Set Protocol,另一个支持。但接收的数据包并不是boot protocol的。
如果鼠标不支持boot protocol,只能解析report的格式了,我现在也正烦着呢,因为设备要配无线鼠标。
叶帆科技 回答时间:2015-4-13 23:09:36
222.JPG

111.JPG

这是.Net Gadgeteer板,可以用C#开发,拖拉自动生成代码
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-9749525726.3.DyHkGT&id=43070516804
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-9749525726.9.DyHkGT&id=43019039149

底层运行.Net Micro Framework系统,采用的是STM32F405 和 STM32F429的芯片
洞洞板,是亚克力的板子,自己定制的。




ME-TE 回答时间:2017-4-7 11:09:57
skywolf-1016972 发表于 2015-4-29 18:41
我测过几个鼠标,出问题的都是无线鼠标,你的也是这样的吗?
文档:Device Class Definition for Human Int ...

请问无线鼠标的问题解决了吗?我也是有两个Protocol,现在数据进入不了buff里,读不了数据好烦人啊,有线鼠标倒是搞定了
星辰一方 回答时间:2015-4-13 09:56:20
好复杂的系统,不懂,帮顶~
咱﹑旳青春 回答时间:2015-4-13 11:18:42
为什么还挑鼠标呢? 应该是大多数支持, 少数几款不支持才对呀
废鱼 回答时间:2015-4-13 11:23:08
可能是驱动不兼容的问题,等我先下载200多M的固件。
叶帆科技 回答时间:2015-4-13 11:51:23
枚举都是正常的,很奇怪就支持一种。 USBH_HID_SetIdle  有帖子说 idle时间设置为100,但是没有用,本身这个命令 底层反馈也是不支持的。
wamcncn 回答时间:2015-4-13 12:00:50
有机玻璃底板?
废鱼 回答时间:2015-4-13 16:05:43
楼主,可以上传一下工程吗?我这找不到这个例程。
wyxy163@126.com 回答时间:2015-4-13 16:12:32
提示: 作者被禁止或删除 内容自动屏蔽
wu1169668869 回答时间:2015-4-13 16:20:14
上个周末在调电阻屏
楼主有什么好方法校准 3.gif
只要四个角落的值吗
拼命三郎 回答时间:2015-4-13 18:33:11
stm32.jpg
叶帆科技 回答时间:2015-4-13 23:05:12
HID_Mouse.zip (107.61 KB, 下载次数: 12)
叶帆科技 回答时间:2015-4-13 23:12:11
比较小尺寸的LCD,触摸屏还比较容易,取靠近角的四个点就可以了,我们是修正的.net micro framework系统自带的触摸屏驱动。
叶帆科技 回答时间:2015-4-29 10:19:56
是的,4个角的值就够了
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版