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.

[参考译文] TMS320F28069::停止 USB-Stack,然后重新初始化它的步骤

Guru**** 2539510 points
Other Parts Discussed in Thread: TMS320F28069, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1230933/tms320f28069-steps-to-stop-the-usb-stack-then-re-initialize-it

器件型号:TMS320F28069
主题中讨论的其他器件:C2000WARE

您好!

   C2000 Ware 软件套件中的 TMS320F28069处理器、USB 库。

在 USB 堆栈(usbhcdpiperead 和 usbhcdpipewrite)中、由于外部原因、它在这些函数中被卡在无限 while 循环中、我需要手动打破这些循环、或者永远卡在其中。  (使用基于时间的方法、我可以识别在函数内部的时间过长、然后错误地从函数中分离出来)。

发生这种情况后、我应该停止 USB-STACK 并重新初始化它。

 

停止/终止/关闭 USB-Stack 并重新初始化它的正确顺序(即函数调用)是什么?

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

    您好!

    将在几天后回复您的查询。

    此致

    西达尔特  

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

    您好 Siddharth  ,是否有任何更新?

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

    您好!  

    您可以尝试使用 USB 库中的以下代码来复位 USB 外设

    //
    //重置 USB 控制器。
    //
    MAP_SysCtlPeripheralReset (SYSCTL_Periph_USB0);

    //
    //启用到 USB 控制器的计时。
    //
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_USB0);

    //
    //打开 USB PHY 时钟。
    //
    MAP_SysCtlUSBPLLEnable ();

    此致

    西达尔特

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

    您好!

    是的、这些将设置 USB 时钟和 PLL 设置。   

    我们的工作地点 主机 置于睡眠模式。   

    发生此错误时、我需要  停止/终止/关闭 USB-Stack、然后重新初始化它。  

    您能帮助我使用 USB 库命令来执行此操作吗、这样、我的所有 USB 寄存器被重新初始化、并且寄存器中任何潜在的"错误"标志被清除吗?   

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

    您好!  

    在这种情况下、它是否类似于器件断开事件?  

    是否要断开任何设备的连接并重新枚举它们?

    此致

    西达尔特

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

    您好!

    是的、我需要有关以下步骤的帮助  

    1. 我想断开设备。

    2. 将整个 USB 堆栈寄存器和状态重置为默认状态(但在这方面需要帮助)  

    3. 检查是否有任何需要 在 USB 寄存器中复位的"错误"状况  

    4. 然后重新连接  

    这是我需要帮助的4个步骤 、主要是步骤2和3  

    谢谢!  

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

    您好!

    没有 将所有 USB 寄存器复位为默认值的位。  

    应遵循以下顺序

    1. USBHCDDeviceDisconnected 是要调用的函数、用于 处理为器件断开所需的清理。  

    2. USBHCDTerm、此函数 将清理 USB 主机控制器并禁用其运行(关断或切换到 USB 设备模式)。  

    3.可调用 USBHCDInit()来重新初始化控制器并准备主机模式操作。  USBHCDInit 是被调用的函数 、此函数  执行所有必要的操作以使 USB 主机控制器开始枚举和与器件的通信。

    此致

    西达尔特

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

    您好!

    是的、感谢您的回答。  我完成了所有这三项工作。   

    我发现在运行时仍然有问题  USBHCDTerm () 那些  在该函数内部、它会将 DEVCTRL.session 位设置为0。 通过调用  USBOTGSesionRequest (USB0_BASE、 );

    然后输入  USBHCDInit  它 通过调用以下函数将 DEVCTRL.session 设置为1   USBOTGSesionRequest (USB0_BASE、 正确 );

    我的问题是、如果我使用中断服务例程  USBHCDTerm  在执行完全 DSP 复位之前、我无法再次连接 USB。  为了运行您提供的全部3个操作(包括 USBHCDDevice 设备 sconnect)我 必须手动注释行  

    // USBOTGSesionRequest (USB0_BASE、  );


    我需要帮助理解为什么会这样。  我现在必须编辑 USBHCDTerm、以便不将会话设置为0。   

    重置 会话不起作用。  

    谢谢。

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

    您好!  

    您能否  通过在  USBHCDTerm 之后调用以下函数来尝试将栈强制设置为主机模式

    USBStackModeSet (0、eUSBModeForceHost、ModeCallback);

    此外,这是否与下面的查询相同-  

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1229943/tms320f28069-how-to-reset-usb-registers

    此致

    西达尔特

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

    您好!

    我曾尝试调用 USBStackModeSet()函数,但结果相同。  

    显示它将进入 OTG B 侧模式。 我不知道如何将其切换回 OTG A 侧模式。 我可以通过查看 DEVCTL 寄存器位7来看到这一点。  
    一旦该位设置为1、我所做的任何操作都不会使它返回到0。  有什么关于如何使其返回 OTG A 侧模式的建议吗?  

     是否有更好的 USB 使用和配置手册以及完整的 TI28069参考手册?

     感谢您的帮助

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

    您好!

    在 Ti28069中是否有使用 USB 的参考文档。

     谢谢

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

    您好!  

    TRM 是可用于 USB 寄存器的唯一文档。

      USBStackModeSet 应该已将模式强制为 HOST。   

    我是否有关于这个问题的任何其他输入。

    此致

    西达尔特

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

    您好!

    我在 c2000Ware 中发现了以下文件:

    F2806x_USBL_UG.pdf


    C:\ti\c2000\c2000Ware_4_02_00_00\libraries\communications\usb\f2806x\docs\ F2806x_USBL_UG.pdf

    您能帮助我查找有关如何对 Ti28069处理器上的 USB 进行使用和故障排除的任何其他资源文档/教程/示例吗?

    我也在 TI 网站上找到了这些文章:

    USB 库 API 参考

    https://software-dl.ti.com/simplelink/esd/simplelink_msp432e4_sdk/4.20.00.12/docs/usblib/msp432e4/api-guide-html/html/index.html

    谢谢你。

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

    您好!  

    API 指南提供了 USB 库中包含的函数的详细信息,它可能对解决您所看到的问题没有帮助。

    将让您知道我是否有其他输入来帮助您解决此问题。

    此致

    西达尔特

     

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

    尊敬的 Siddharth:

    是否可以申请/聘用精通 ti28069、特别是 USB 的 TI 工程师(如您自己或其他人)。 还可以去 Microsoft 团队那里、我可以共享我的计算机屏幕、我们可以在一起调试代码的同时浏览固件代码并查看寄存器?  

    谢谢。