【问题标题】:PING Flow Control for OUT TransactionsOUT 事务的 PING 流控制
【发布时间】:2018-02-19 22:47:53
【问题描述】:

libusb 是否支持 OUT 事务的 PING 流控制?

根据我正在与之连接的设备的数据表,“对于每个 OUT 数据包,都会向主机返回一个 NYET 握手。主机 ping OUT 端点,当设备的内部处理完成时,会返回一个 ACK对 PING 的响应。”

是否可以使用 libusb 实现这一点?

【问题讨论】:

    标签: c# c usb libusb


    【解决方案1】:

    PING 是由您的 USB 主机控制器而非软件生成的令牌数据包。 PING 令牌由您的主机控制器自动处理。

    EHCI 控制器为每个队列头保留 PING 状态位(每个队列头将对应每个端点)。您的主机控制器驱动程序将每个队列头的 ping 状态初始化为 0。

    Ping 状态 -

    0B - (Do OUT) - 主机控制器将在到此端点的下一次总线事务期间使用 OUT PID。

    1B - (Do Ping) - 主机控制器将在下一个总线期间使用 PING PID 到此端点的事务。

    协议 -

    主机控制器将首先发送 OUT 数据包。如果响应是 NAK 或 NYET,控制器会将 ping 状态更改为 1 并开始发送 PING 令牌。 当 PING 令牌返回 ACK 时,主机控制器将引脚状态更改回 0 并重新传输 OUT 令牌。

    因此,软件开发人员无需担心,您无需做任何事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多