您的位置:首页 > 其它

移植st官方usb-hid程序出现babble detected错误

2015-07-11 22:32 561 查看
我在移植st官方的usb-hid程序是可以运行的,但是当我修改最大包时出现了babble detected错误,按照网上的操作,修改最大缓冲区需要修改3个地方,(1)usb_desc.c文件中的CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC]数组,修改端点1的输入输出的最大包大小;(2)修改usb_prop.c文件中的void CustomHID_Reset(void)函数,里面有 需要设置 端点1的发送包大小,函数 SetEPTxCount(ENDP1,
4);(3)stm32f10x_it.c中的中断处理程序的修改发送端点1的发送包的大小;就这些修改,但是用Bus Hound软件做测试时,出现了babble detected错误,说host主机那出现接收数据溢出,但是如果不改变发送数据包的大小2,就不会出现错误,看来是设置的端点1的发送包的大小设置出现了问题,后来在网上查找,发现是没有修改usb报告描述符(Report Descriptor),网上说USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告。输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,应该是报告描述符里带有按键操作时,发送的数据包大小,

在报告描述符中的按键部分,加入了最后一句 0x95,0x04, 设置相应的按键操作发送的数据包的数据段部分为4字节;

/* key Push Button */

0x85, 0x05, /* REPORT_ID (5) */

0x09, 0x05, /* USAGE (Push Button) */

0x15, 0x00, /* LOGICAL_MINIMUM (0) */

0x25, 0x01, /* LOGICAL_MAXIMUM (1) */

0x75, 0x01, /* REPORT_SIZE (1) */

0x95,0x04, // REPORT_COUNT (4Byte)

进行完上面的操作,需要修改一下报告描述符的大小CUSTOMHID_SIZ_REPORT_DESC,选中CUSTOMHID_SIZ_REPORT_DESC右击鼠标,进入定义处,把他的长度加1,这样就不会出现babble detected错误了,在进行按键触发下,可以进行4字节数据的发送,如果要发送的字节内容不仅仅是0或1,要修改上面的

0x15, 0x00, /* LOGICAL_MINIMUM (0) */

0x25, 0x01, /* LOGICAL_MAXIMUM (1) */

部分为 0x15, 0x00, /* LOGICAL_MINIMUM (0) */

0x25, 0xff, /* LOGICAL_MAXIMUM (255) */

就可以进行0~255之间的数据发送了。

usb-hid刚刚学,基本上不太懂,有什么写错的地方请批评指正,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: