打印

usb绝对坐标疑惑

[复制链接]
1913|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gauntf|  楼主 | 2016-6-15 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
USB, ic, imu, lm, ge
请教下大家,我将开发板的定义为HID鼠标设备,并想使用绝对坐标,目前PC主机端的识别已经完成,鼠标报告描述符是这样子的,static struct hidg_func_descriptor creator_mouse_data =
{
        .subclass = 0, //No SubClass
        .protocol = 2, //Mouse
        .report_length = 6,
        .report_desc_length = 82,
        .report_desc =
        {
                 0x05, 0x01,  //Usage Page(Generic Desktop Controls)
                 0x09, 0x02,  //Usage (Mouse)
                 0xa1, 0x01,  //Collction (Application)
                 0x09, 0x01,  //Usage (pointer)
                 0xa1, 0x00,  //Collction (Physical)
                 
                 0x05, 0x09,  //Usage Page (Button)
                 0x19, 0x01,  //Usage Minimum(1)
                 0x29, 0x03,  //Usage Maximum(3)
                 0x15, 0x00,  //Logical Minimum(1)
                 0x25, 0x01,  //Logical Maximum(1)
                 0x95, 0x03,  //Report Count(3)
                 0x75, 0x01,  //Report Size(1)
                 0x81, 0x02,  //Input(Data,Variable,Absolute,BitField)
                 0x95, 0x01,  //Report Count(1)
                 0x75, 0x05,  //Report Size(5)
                 0x81, 0x03,  //Input(Constant,Array,Absolute,BitField)

                 0x05, 0x01,  //Usage Page(Generic Desktop Controls)
                 0x09, 0x30,  //Usage(x)
                 0x15, 0x00,       //Logical Minimum(0)
                 0x26, 0x7F,0x07,  //Logical Maximum(1919)
                 0x35, 0x00,       //Phisical Minimum(0)
                 0x46, 0x7F,0x07,  //Phisical Maximum(1919)
                 0x75, 0x10,  //Report Size(10)
                 0x95, 0x01,  //Report Count(1)
                 0x81, 0x02,  //Input(Data,Variable,Relative)
                 
                 0x09, 0x31,  //Usage(y)
                  0x15, 0x00,                //Logical Minimum(0)
                 0x26, 0x37,0x04,        //Logical Maximum(1079)
                 0x35, 0x00,                //Phisical Minimum(0)
                 0x46, 0x37,0x07,        //Logical Maximum(1079)
                 0x75, 0x10,  //Report Size(10)
                 0x95, 0x01,  //Report Count(1)
                 0x81, 0x02,  //Input(Data,Variable,Relative)                  

                 0x09, 0x38,  //Usage(Wheel)
                 0x15, 0x81,  //Logical Minimum(-127)
                 0x25, 0x7F,  //Logical Maximum(127)
                 0x75, 0x08,  //Report Size(8)
                 0x95, 0x01,  //Report Count(1)
                 0x81, 0x02,  //Input(Data,Variable,Relative)

                 0xc0,  //End Collection
                 0xc0  //End Collection
        }
};

应用根据报告描述符,按照绝对坐标左上角(0,0)到(1920.1080)(x=0,1,2...1919,y=0,1,2...1079)这样的顺序给PC主机发送数据(数据每次6个字节),发现PC鼠标指针乱跳,感觉数据应该不是这么简单,是不是需要一些换算,查阅了hid的相关资料,实在看不懂Logical Minimum,Logical Maximum,Phisical Minimum,Logical Maximum这四个之间的关系 想问下您,PC的hid鼠标应该是支持绝对坐标的吧?另外您知道这几个逻辑值的关系不?数值该如何上报才能让PC鼠标指针正常移动

相关帖子

沙发
xxdcq| | 2016-7-8 21:19 | 只看该作者
本帖最后由 xxdcq 于 2016-7-8 21:27 编辑

我有代码,是汇编的,用的PIC单片机
;设备描述符表
DeviceDescriptorTable
                retlw        0x12                        ; bLengthLength of this descriptor
                retlw        0x01                        ; bDescType This is a DEVICE descriptor
                retlw        0x10                        ; bcdUSBUSB revision 1.10 (low byte)
                retlw        0x01                        ; high byte
                retlw        0x00                        ; bDeviceClasszero means each interface operates independently
                retlw        0x00                        ; bDeviceSubClass
                retlw        0x00                        ; bDeviceProtocol
                retlw        0x08                        ; bMaxPacketSize0 - inited in UsbInit()
                retlw        0xd8                        ; idVendor - 0x04D8 is Microchip Vendor ID
                retlw        0x04                        ; high order byte
                retlw        0x01                        ; idProduct
                retlw        0x00
                retlw        0x00                        ; bcdDevice
                retlw        0x01
                retlw        0x00                        ; iManufacturer
                retlw        0x02                        ; iProduct
                retlw        0x00                        ; iSerialNumber - 3
                retlw        0x01                        ; bNumConfigurations


;配置描述符表
ConfigDescriptorTable
                retlw        0x09                        ;bLength
                retlw        0x02                        ;bDescriptorType
                retlw        0x22
                retlw        0x00
                retlw        0x01                        ;bNumOfInterfaces
                retlw        0x01                        ;bConfigValue
                retlw        0x00
                retlw         0x80                        ;总线供电,远程唤醒
                retlw        0x32                        ;USB设备最大消耗电流100mA

                retlw        0x09
                retlw        0x04
                retlw        0x00
                retlw        0x00
                retlw        0x01                        ;使用的端点数1个(端点1输入)
                retlw        0x03
                retlw        0x01
                retlw        0x01
                retlw        0x00

                retlw        0x09                        ;hid描述符
                retlw        0x21
                retlw        0x10
                retlw        0x01
                retlw        0x00
                retlw        0x01
                retlw        0x22
                retlw        0x7b
                retlw        0x00

                retlw        0x07
                retlw        0x05
                retlw        0x81                        ;端点1输入
                retlw        0x03                        ;传输类型为中断方式
                retlw        0x08                        ;端点1输入的最大信息包大小为8字节
                retlw        0x00
                retlw        0x0a


;HID设备配置描述符表
hidDescriptorTable
                retlw        0x05
                retlw        0x01
                retlw        0x09
                retlw        0x06
                retlw        0xa1
                retlw        0x01
                retlw        0x85
                retlw        0x01
                retlw        0x05
                retlw        0x07
                retlw        0x19
                retlw        0xe0
                retlw        0x29
                retlw        0xe7
                retlw        0x15
                retlw        0x00
                retlw        0x25
                retlw        0x01
                retlw        0x75
                retlw        0x01
                retlw        0x95
                retlw        0x08
                retlw        0x81
                retlw        0x02
                retlw        0x95
                retlw        0x01
                retlw        0x75
                retlw        0x08
                retlw        0x81
                retlw        0x01
                retlw        0x95
                retlw        0x05
                retlw        0x75
                retlw        0x01
                retlw        0x05
                retlw        0x08
                retlw        0x19
                retlw        0x01
                retlw        0x29
                retlw        0x05
                retlw        0x91
                retlw        0x02
                retlw        0x95
                retlw        0x01
                retlw        0x75
                retlw        0x03
                retlw        0x91
                retlw        0x01
                retlw        0x95
                retlw        0x05
                retlw        0x75
                retlw        0x08
                retlw        0x15
                retlw        0x00
                retlw        0x25
                retlw        0x65
                retlw        0x05
                retlw        0x07
                retlw        0x19
                retlw        0x00
                retlw        0x29
                retlw        0x65
                retlw        0x81
                retlw        0x00
                retlw        0xc0
                retlw        0x05
                retlw        0x01
                retlw        0x09
                retlw        0x02
                retlw        0xa1
                retlw        0x01
                retlw        0x85
                retlw        0x02
                retlw        0x09
                retlw        0x01
                retlw        0xa1
                retlw        0x00
                retlw        0x05
                retlw        0x09
                retlw        0x19
                retlw        0x01
                retlw        0x29
                retlw        0x03
                retlw        0x15
                retlw        0x00
                retlw        0x25
                retlw        0x01
                retlw        0x95
                retlw        0x03
                retlw        0x75
                retlw        0x01
                retlw        0x81
                retlw        0x02
                retlw        0x95
                retlw        0x01
                retlw        0x75
                retlw        0x05
                retlw        0x81
                retlw        0x01
                retlw        0x05
                retlw        0x01
                retlw        0x09
                retlw        0x30
                retlw        0x09
                retlw        0x31
                retlw        0x15
                retlw        0x00
                retlw        0x26
                retlw        0xff
                retlw        0x0f
                retlw        0x35
                retlw        0x00
                retlw        0x46
                retlw        0xff
                retlw        0x0f
                retlw        0x75
                retlw        0x10
                retlw        0x95
                retlw        0x02
                retlw        0x81
                retlw        0x02
                retlw        0xc0
                retlw        0xc0

使用特权

评论回复
板凳
ningling_21| | 2016-7-15 14:10 | 只看该作者
可以参考一下  圈圈教你玩USB  一书

使用特权

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

本版积分规则

4

主题

6

帖子

0

粉丝