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.

[参考译文] USB-TO-GPIO2:如何触发 USB-TO-GPIO (2006)适配器[TUSB3210]的 USB 功能复位?

Guru**** 2534910 points
Other Parts Discussed in Thread: UCD90120A

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1425784/usb-to-gpio2-how-to-trigger-usb-function-reset-for-usb-to-gpio-2006-adapter-tusb3210

器件型号:USB-TO-GPIO2
主题中讨论的其他器件:UCD90120A

工具与软件:

尊敬的专家:

我们有多个 USB-TO-GPIO (2006)适配器连接到 Windows 11 PC、并安装了 Fusion 电源设计器和 API。
我们注意到、有时 PMBus 器件和 PC 之间的通信会冻结、这可以通过下电上电和为受影响的适配器重新连接器件来解决。 但是、在生产设置中手动执行此操作是不可行的、因此需要一个脚本、该脚本可以远程向适配器发出重置命令(类似于相关问题)。

TL;DR
根据 用户指南 (第27页)、此适配器支持复位功能。 FUSION_USB_ADAPTER_API (TIDP.SAA2.dll)包含 getReset (..) 和 setReset (..) SMBusAdapter 类成员中的方法-以下简单代码可以触发此适配器的软件复位吗?

using System;
using TIDP.SAA;

class Program
{
    static void Main(string[] args)
    {
        SMBusAdapter.Exceptions_On_Error = true;
        try
        {
            // Discover the available USB adapters
            Console.WriteLine("Discovering USB adapters...");
            int adapterCount = SMBusAdapter.Discover();

            if (adapterCount == 0)
            {
                Console.WriteLine("No USB adapters found.");
                return;
            }

            Console.WriteLine($"{adapterCount} USB adapter(s) found.");

            // Get only the first adapter for now.
            var adapter = SMBusAdapter.Adapters[0];

            // Extra check if the adapter is attached - possibly redundant
            if (!adapter.Is_Attached)
            {
                Console.WriteLine("Adapter is not attached or disconnected.");
                return;
            }

            Console.WriteLine("Adapter is attached and ready.");

            // What does getReset return before we actually use setReset?
            Console.WriteLine("Getting adapter reset value...");
            LogicLevel resetLevel = LogicLevel.Low;
            adapter.getReset(ref resetLevel); // To check what is actually returned here - No documentation on this.
            Console.WriteLine("Adapter reset level : " + resetLevel.ToString()); 

            // Set the reset level to LogicLevel.High
            Console.WriteLine("Initiating adapter reset to LogicLevel.High...");
            SAAStatus resetStatus = adapter.setReset(LogicLevel.High); // Assuming this triggers a USB function reset? No documentation on this.
            if (resetStatus == SAAStatus.Success)
                Console.WriteLine("Adapter reset initiated successfully.");
            else
                Console.WriteLine("Adapter reset failed.");

            // Check the reset level after the reset
            Console.WriteLine("Getting adapter reset value...");
            adapter.getReset(ref resetLevel); 
            Console.WriteLine("Adapter reset level : " + resetLevel.ToString());

        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

或者、是否有现有方法可以通过我可能错过的 Fusion GUI 重置/重新启动这些适配器、它可以处理连接到主机 PC 的多个适配器?

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

    尊敬的 Ishaan:

    什么器件与 USB2GPIO 适配器一起使用? 我希望确保合适的团队参与其中

    此致、

    Britton

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

    尊敬的 Britton:

    每个适配器都连接了多个 UCD90120A 器件。

    谢谢!
    Ishaan

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

    尊敬的 Ishaan:  

    我们会优先发布 API、而不是作为产品发布、我们通常不提供带宽来支持 API 的代码实现。 我们确实支持 USB2GPIO 2022适配器的硬件侧和连接适配器和器件的 Fusion Digital Power Designer 软件。 API 代码可能是你必须在自己的端探究的、但我已经将 Anne NGO 连接到这个线程、这样她可以为 UCD90120A 项目提供进一步支持(如果可用)。  

    此致、

    Britton

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

    尊敬的 Britton:

    感谢您的答复,但由于在 API 中找不到 setReset()方法的文档,并且我没有访问源代码的权限,我认为这是最好的,也是最后的方法在论坛上询问。

    此外、我注意到 API (FUSION_USB_ADAPTER_API 和 FUSION_DIGITAL_POWER_API)提供写入 适配器所连接设备的方法、但不提供写入适配器本身的方法。 是否有访问/写入适配器寄存器的示例方法?

    此致、
    Ishaan

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

    您好、Ishaan

    FUSION_USB_ADAPTER_API 不支持复位功能、也不支持直接访问适配器的寄存器。

    此致

    安妮

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

    您好、Anne:

    感谢您的澄清。 要再次确认、

     如果无法实现远程重置、因为通信冻结是不可接受的、我们正在调查用较新版本的适配器替换适配器。

    谢谢、此致、
    Ishaan

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

    嗨、Ishaan、

    新版本的 USB 适配器(2022)不支持重置功能。

    此致

    安妮