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

我在移植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刚刚学,基本上不太懂,有什么写错的地方请批评指正,谢谢

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页