This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-AM243:AM243x USB 器件模式:在传输期间、端点在 DFLUSH 之后停止响应

Guru**** 2908170 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1574470/lp-am243-am243x-usb-device-mode-endpoint-stops-responding-after-dflush-during-in-transfer

器件型号:LP-AM243


工具/软件:

您好、

在 USB 器件模式下使用 AM243x、但遇到了在批量输入端点上使用 DFLUSH 的问题。

  • 问题:
    如果我们在 IN 端点*位于 IN 传输*的中间时向该端点发出 DFLUSH 命令、则该端点在该点之后将完全停止响应。 它不再向主机返回 NAK、STALL 或任何响应。
  • 重现步骤:
    1.在端点上开始输入传输(例如 EP1 )。
    2.传输过程中 、设置该端点的 DFLUSH 位。 (序列等效于 epFifoFlush () API )
    3.后端点无响应—主机无响应。

  • 问题:
    -这是已知的问题还是 AM243x 的硬件限制?
    -在传输中激活期间调用 DFLUSH 是安全的吗?
    -有任何推荐的恢复方法或解决方法吗?

在相关 EP 未传输的情况下、我反复测试了发出 DMA 请求和 DFLUSH 命令的情况、在这种情况下似乎没有出现问题。
如果对 DFLUSH 的预期行为和避免出现此问题的最佳做法作出任何澄清、我将不胜感激。

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Motofumi、

    如果我们向 IN 端点发出 DFLUSH 命令、*当它位于 IN 传输*的中间时、该端点将在该点之后完全停止响应。 它不再向主机返回 NAK、STALL 或任何响应。

    您能否说明为何要在传输过程中刷新端点?  

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tushar:

    感谢您的答复。

    我想为通信请求设置超时、但发生超时时时、通信可能会与 DFLUSH 同时发生、从而可能导致在正在进行的通信期间执行 DFLUSH。

    此致、

    本笃史

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Motofumi、

    您不应在传输过程中刷新端点。 刷新端点将清除 DRDY 位并停止 DMA 传输。 这也会从片上缓冲区刷新端点数据。  

    您可以参考  CUSBDMA_ChannelHandleStall   停止端点。

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tushar:

    感谢您的答复。

    我没有使用 DFLUSH、而是根据 CUSBDMA_ChannelHandleStall 实现了 STALL ->取消失速处理。 但是、在通信时序期间执行该操作会导致相同的问题、从而无法进行后续通信。

    此致、

    本笃史

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tushar:

    很抱歉连续提出这么多问题。

    您不应在传输过程中刷新端点。

    是否有方法通过软件检测正在进行传输?

    此致、

    本笃史

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Motofumi、

    您可以参考 EP_STS.DBUSY[9] 的一个位 EP_STS 用于检查 DMA 状态的寄存器。

    如果设置了该位、则正在进行 DMA 传输、否则 DMA 空闲。

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tushar:

    我将选中 EP_STS.DBUSY。 非常感谢。

    此致、

    本笃史

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Motofumi、

    感谢您的确认。

    此致、

    Tushar