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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版