USB协议响应帧会出现延迟一帧反馈现象

木头羊丶 2017-12-18 09:41:27
USB协议响应帧出现延迟一帧反馈现象:

我仿真的结果是:单片机 明明发出来的 是0X52这一帧数据 到Bushound上面 显示的上一帧数据 。
0X52数据的响应帧到 下一帧命令帧数据发完,才发出来。
就这样依次落后一帧数据。

感觉想有一个buffer把数据存了下来,没发出去,可是我这是是调用的STM32官方库啊,并且以前使用的时候,没出现过这种现象啊。
有没有大神能解释一下,为什么会出现这种现象?

仿真过程图如下:








...全文
408 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2018-01-16
  • 打赏
  • 举报
回复
引用 1 楼 wangfan027 的回复:
不知道 不过我用的新塘的,HID模式 他机制是这样的, sendreport实际是把待发送给mastaer的数据放再USB硬BUFF中,并没有实际发送, 直到master的GetInReport()到了后缓冲区的数据才发送上区, 猜测这样是为了提高响应速度,不然上面一个GetInReport()半天没反应,PC端可能就无法识别的设备那个提示就蹦出来了
与提高响应速度无关。这是 USB 传输机制决定的。所谓从机“发送”,实际上是对主机 IN 请求的响应。也就是说,所有的数据传输,包括 IN 传输,都是主机发起并控制的。这与串口的异步通讯是完全不同的。 楼主的问题,很可能是当前数据并没有到达硬件可执行的层次。
打赤脚的娃 2018-01-14
  • 打赏
  • 举报
回复
主机端没发Get吧。
dceacho 2017-12-18
  • 打赏
  • 举报
回复
不知道 不过我用的新塘的,HID模式 他机制是这样的, sendreport实际是把待发送给mastaer的数据放再USB硬BUFF中,并没有实际发送, 直到master的GetInReport()到了后缓冲区的数据才发送上区, 猜测这样是为了提高响应速度,不然上面一个GetInReport()半天没反应,PC端可能就无法识别的设备那个提示就蹦出来了

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧