打印

USB 自定义 HID 报告 通信 问题请教

[复制链接]
4168|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 neilshao 于 2012-9-10 14:38 编辑

设备:ATMEGA16+PDIUSBD12目的:自定义HID 免驱 实现上下位机8字节通信
下位机配置:通过EP1 OUT 和 IN端口 中断传输 报告方式


枚举过程正常,设备列表出现HID-compliant device



USB HOUND枚举过程,此时下位机未通过EP1_IN端口向PC发送数据



USB HOUND枚举过程,此时下位机通过EP1_IN端口向PC发送一次8位数据(1,2,3,4,5,6,7,8),发送的数据不见显示,却出现  1.BUFFER OVERRUN ; 2.ABORT PIPE ; 3.REST PIPE 等等



现在搞不懂出现的问题是什么回事,应该如何处理,请各位朋友指导指导
所有步骤是搞圈圈的书一步一步走来的,而书中未出现此情况。

可能 报告描述符 不正确吗,但我试过很多种报告描述符,包括论圈圈书里例程,下面是我用HID Descriptor Tool生成的,请各位帮忙看看问题出在哪
uint8 USB_ReportDescriptor[22]=
{
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x00,                    // USAGE (Undefined)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x95, 0x08,                    //   REPORT_COUNT (8)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)
    0x82, 0x31, 0x01,              //   INPUT (Cnst,Ary,Abs,NLin,NPrf,Buf)
    0x92, 0x31, 0x01,              //   OUTPUT (Cnst,Ary,Abs,NLin,NPrf,Buf)
    0xc0                           // END_COLLECTION
};

相关帖子

沙发
bmebob_zhao| | 2012-8-16 10:14 | 只看该作者
你的INPUT 和OUTPUT定义的有问题,定义成const,如何通信呢?
试试这样:
INPUT (Data,Array,Abs)
OUTPUT (Data,Array,Abs)
HID Descriptor Tool其实无法生成有些自定义描述符,我这里给出一个我自己用过的:
uint8_t ReportDescriptor[] ={
    0x06, 0x00,0xFF,               // USAGE_PAGE(User define)
    0x09, 0x01,                    // USAGE(User define)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x09, 0x02,                    // USAGE(User define)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0xFF,                    //   LOGICAL_MAXIMUM (255)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x95, 0x01,                    //   REPORT_COUNT (1)
    0x81, 0x02,                    //   INPUT (Data,Array,Abs)
    0x09, 0x03,                    // USAGE(User define)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0xFF,                    //   LOGICAL_MAXIMUM (255)
    0x95, 0x08,                    //   REPORT_COUNT (8)
    0x75, 0x01,                    //   REPORT_SIZE (1)
    0x91, 0x02,                    //   OUTPUT (Data,Array,Abs)
    0xc0                           // END_COLLECTION
  }; /* ReportDescriptor */

使用特权

评论回复
板凳
neilshao|  楼主 | 2012-9-10 14:31 | 只看该作者
按2楼的报告也不行
顶顶,请求指导

使用特权

评论回复
地板
insignal| | 2012-9-12 22:22 | 只看该作者
EP1使能接收了没?

使用特权

评论回复
5
zzu65| | 2012-9-14 20:11 | 只看该作者
自定义最好用feature报表,这样既可以输入,也可以输出,可以通过get report和set report进行输入输出数据

使用特权

评论回复
6
STM32F103_USB| | 2012-9-28 14:15 | 只看该作者
你报告描述符的这个应该用自定义usage_page吧
0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)

用二楼的报告描述符的话,你的报告也要与之对应

使用特权

评论回复
7
centuryair| | 2012-12-3 17:01 | 只看该作者
主机如何去获取报告描述符  菜鸟 飞过 求解

使用特权

评论回复
8
21learner| | 2018-12-25 15:48 | 只看该作者
我是一个新生,请问楼主,哪里可以得到 HID Descriptor Tool?

使用特权

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

本版积分规则

2

主题

4

帖子

1

粉丝