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.

[参考译文] RTOS/TM4C1294NCPDT:在 USBMSCHFatFs_waitForConnect 之后恢复

Guru**** 2480775 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/699932/rtos-tm4c1294ncpdt-recovering-after-usbmschfatfs_waitforconnect

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

这是对 Tushar 所做的工作的进一步补充。

我遇到了相同 的问题、等待连接功能将"挂起"

这是可重复的、卸下 USB 记忆棒、然后更换它将解决问题。

但是、在我们的应用中、此变通办法是不可接受的。

如果我可以访问 USBMSCHFatFs_waitForConnect()函数的源代码,我可能可以解决该问题。

或者、如果有人可以提供代码序列、该序列将正常关闭 FAT FS 和 USB 堆栈、以便在重新初始化时正常工作、这将是很好的。

同时,我必须提供一个不能达到最佳状态的变通办法。

谢谢

-Roger

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI-RTOS 产品中包含 USBMSCHFatFs_waitForConnect 的代码。 您可以复制 \products\tidrivers_tivac_2_16_01_13\packages/ti\drivers\USBMSCHFatFs.c 和 \products\tidrivers_tivac_2_16_01_13\packages/ti\drivers\usbmschfatfs\USBMSCHFatFsTiva.c 添加到您的项目中并根据需要进行更改。

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

    谢谢、Todd。。。

    我找到并 检查了上面提到的源代码、对其逻辑有疑问。

    只有当 USB 堆栈的状态为"无器 件存在"(USBMSCHFatFsTiva_no_device)时、代码才会强制等待(通过信标)、并且对于任何其他状态返回 true。

    令人困惑的部分是、还有另外三种可能的状态、如以下枚举所示:

    typedef enum USBMSCHFatFsTiva_USBState{
    USBMSCHFatFsTiva_no_device、/*!<无设备存在。 *

    USBMSCHFatFsTiva_Connected、/*!<
    *大容量存储设备
    *枚举。
    *

    USBMSCHFatFsTiva_unknown、/*!<
    *不受支持的设备已被删除
    *已附加。
    *

    USBMSCHFatFsTiva_POWER_FAULT /*!<发生电源故障。 *
    }USBMSCHFatFsTiva_USBState;

    因此、根据该逻辑、当 器件连接、未知或存在电源故障时、WAIT 函数将返回 true。

    是否有其他服务同时使驱动器失效,或者如果状态未知或出现故障,open()函数是否返回 NULL?

    或者这是设计缺陷吗?

    更 重要的是、是否有其他机制可以用来验证 USB 端口中是否插入了有效的驱动器?

    谢谢、

    -Roger