WCH沁恒单片机
直播中

杨杰

7年用户 1080经验值
私信 关注
[问答]

CH376的缓冲区大小问题求解

最近在研究uart连接方式下CH376获取usb键盘传输的数据
在获取设备描述符时返回了0x17,查阅如下:
#define USB_INT_BUF_OVER    0x17            /* USB传输的数据有误或者数据太多缓冲区溢出 */

然后用Bus Hound抓取的通讯过程中发现,本键盘的设备描述符长度为66
于是换了一个键盘,设备描述符长度为59,此时返回0x14,即
#define USB_INT_SUCCESS     0x14            /* USB事务或者传输操作成功 */
想问一下是不是CH376的缓冲区大小问题,如果是缓冲区过小造成的,那么如何解决这一问题
  

回帖(1)

李兵

2022-7-13 09:58:45
您好:
设备描述符的长度应该没有这么长,如果是获取描述符的话,每次CH376从设备获取8字节的描述符,分多次把描述符读取完。您可以检查一下以下几点。
获取描述符的标准请求是否正确,可以用电脑的Bus Hound软件对比。
每次获取描述符是否有翻转令牌,获取的数据是否正确。
检查一下主控端留的描述符缓冲区大小是否足够。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分