完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
【现象】
MASTER版本USB HOST批量传输时如数据长度正好是64的倍数导致HCD_PIPE_EVENT_ERROR_XFER错误,并且导致之后所有调用hcd_urb_enqueue失败,跟踪到函数hcd_urb_enqueue中,失败原因为下述判断前两个子条件失败 HCD_CHECK_FROM_CRIT(pipe->port->state == HCD_PORT_STATE_ENABLED // The pipe's port must be in the correct state && pipe->state == HCD_PIPE_STATE_ACtiVE //The pipe must be in the correct state && !pipe->cs_flags.pipe_cmd_processing //Pipe cannot currently be processing a pipe command && !pipe->cs_flags.reset_lock, //Pipe cannot be persisting through a port reset ESP_ERR_INVALID_STATE); 同样的代码,只要发送长度不是64倍数的Bulk传输均能成功。 【代码】 申请URB时,针对长度正好是64倍数的Bulk传输已经设置如下标志 // Bulk Out对于正好MPS长度倍数的传输需要添加一个0长度包 if ((len % USB_EP_BULK_MAX_MPS) == 0) // USB_EP_BULK_MAX_MPS为64 transfer_dummy->flags |= USB_TRANSFER_FLAG_ZERO_PACK; 请问是URB哪里还需要设置吗? @ESP_ICY |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
540浏览 6评论
451浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
434浏览 5评论
435浏览 4评论
407浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 15:28 , Processed in 0.908417 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号