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.

[参考译文] 使用 python 的 USB 接口适配器控制

Guru**** 2539500 points
Other Parts Discussed in Thread: TCA6424A

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/824845/usb-interface-adapter-control-using-python

主题中讨论的其他器件:USB 转 GPIOTCA6424A

您好!  

我们能否使用 Python 来控制 TI 的 USB 接口适配器?

我需要切换 GPIO 引脚以控制 LED。

请就此向我提出建议。

谢谢、此致、

Vishal

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

    您好、Vishal、

    您使用的是哪款 TI 器件?

    您是否使用 Linux、RTOS 或其他?

    此致、
    帕维尔

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

    您好、Pavel、

    我有适配器。 由于它具有 GPIO 引脚、因此需要使用 Python 来控制它们。

    我使用的是 Windows 操作系统。

    此致、

    Vishal

     

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

    你(们)好

    这看起来是一个非常旧的产品、遗憾的是、我们没有提供任何有关此方面的进一步指导或配套资料。

    此致

    Mukul  

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

    你(们)好

    我发现此特定产品由另一个产品组拥有、因此我已将此查询重新分配给该团队、以防他们有更多指导。

    希望这对您有所帮助。

    此致

    Mukul  

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

    您好、Mukul、

    这应该是可能的、因为我认为特定的适配器使用了标准 USB HID (人机接口设备)驱动程序、该驱动程序可由任何软件控制(并且应该有现成的 Python 代码来连接这些类型的 USB 器件)。  不过、我不确定我是否能为您提供进一步的详细信息、因为我没有亲自这样做、而且它有点超出了接口适配器的用途范围。

    此致、
    最大

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

    谢谢 Max。

    我将检查这些驱动程序。

    此致、

    Vishal

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

    您好、Mukul、

    感谢您的支持。

    请告诉我产品驱动程序的相关信息、以便使用 python 对其进行编程。

    此致、

    Vishal

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

    你(们)好

    我只想使用所提供的建议 Max。 我对此没有进一步的指导。  

    此致

    Mukul  

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

    您好、Vishal、

    我将添加一些其他信息、以阐明如何使用 Python 控制 USB-TO-GPIO 适配器。  

    它使用 TUSB3210 USB MCU、并被编程为显示为 HID 器件。  该架构非常简单、本质上是一个大状态机、等待来自 PC 的 USB 数据包传入、该数据包由64字节数据有效载荷组成。  数据有效载荷的字节0是状态机的命令字节或操作码。  当 USB 数据包被接收到 MCU 的输入缓冲器中时、MCU 读取字节0并在状态机中执行与该字节相关的代码。  然后、MCU 将一个响应数据包放置到输出缓冲器中、以便在 PC 下次从 USB HID 器件请求数据时进行传输。  

    USB-TO-GPIO 数据表 包含编程到 MCU 中的各种功能的数据包字节信息以及响应数据包。  64字节数据包中的后续数据字节是特定于函数的信息

    例如、I2C 写入操作、数据包的命令代码或字节0为0x14。  I2C 读取操作命令字节或字节0为0x15。  如果您希望通过 I2C 向 TCA6424A 器件寄存器写入数据、则可能会有一个 USB 数据包、例如{0x14、0x22、0x04、0x01、0x55、 0x00...0x00>}。

    0x14是 I2C 写入函数、0x22是器件从地址、0x04是寄存器地址、0x01是要写入的字节数、在本例中为1、0x55是要写入寄存器的值。  其余的64字节数据包无关、因为您已告诉 MCU 只写入1个字节。  我通常用0填充它、但它可以是你想要的任何东西。

    写入此 USB 数据包后、应使用 USB 数据有效载荷字节0 0x94检查 MCU 的响应数据包。  这是 I2C 写入响应所特有的。  然后字节1将为0x00或0x01、以指示成功(0)或失败(1)。

    我从未使用过 GPIO 引脚、但我相信用于将这些引脚设置为0x16的命令代码(字节0)的响应数据包命令字节为0x96。  有关详细信息、请参阅数据表。

    我在 Python 2.7中使用了 pywinusb 模块、其中包含大量在线文档和示例、您可以参考这些文档和示例。

    您应该通过 PC 的硬件管理器验证供应商 ID (VID)和产品 ID (PID)值、但我认为 VID = 0x0451、PID = 0x5F00。  在 Python 中、您需要初始化器件句柄。  然后创建一个输出报告、以存储来自 PC 的有关 USB 数据包成功/失败的状态信息。  然后为数据包创建缓冲区、您将根据 USB-TO-GPIO 数据表中的状态机函数信息加载数据包。  发送数据缓冲区时、需要将报告 ID 缓冲区附加到数据缓冲区的前面。  但是、MCU 看不到它、MCU 输入缓冲器的字节0将是您的命令字节、正如我在下面的一些旧示例代码中所示。  I2C 写入命令的示例缓冲区如下所示。

    缓冲区=[0x00]*65                    #65 =报告大小+ 1字节(报告 ID)
    Buffer[0]= 0x00                          #report id
    缓冲区[1]= 0x14                        I2C 写入命令操作代码
    Buffer[2]= devAddress * 2       #Slave Address 移位1位+写入位0
    Buffer[3]= regAddress        #寄存器地址字节(命令字节)
    Buffer[4]= 0x01                          #Number of bytes to write
    Buffer[5]= regData                   写入的字节(寄存器值)

    如果您仍在尝试设置和运行您的通信、我希望此额外信息能有所帮助。  我建议查看用于 USB HID 通信的 Python 模块、例如 pywinusb 模块。  然后、按照可用的文档和示例代码来设置您的独特函数、这些函数将根据需要创建您的数据缓冲区。  

    此致、

    Jonathan