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.

[参考译文] LMX2594EVM:通过 python 进行串行控制

Guru**** 2468610 points
Other Parts Discussed in Thread: USB2ANY

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1025934/lmx2594evm-serial-control-through-python

器件型号:LMX2594EVM
主题中讨论的其他器件:USB2ANY

是否有办法通过 python 脚本而不是通过 TICS Pro 来控制 LMX EVM?  我可以通过 TICS PRO 操作 EVM 器件、但找不到器件在器件管理器中注册的串行端口。   是否有办法通过 USB2ANY 发送 SPI 命令以进入 LMX 板?

谢谢、

Darren

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

    我看到 此页面 、似乎建议有一条路径、但它涵盖了不同的目标器件。  我可以在 windows "devices and printers"资源管理器文件夹中找到 USB 设备、它被标识为 HID 设备。   

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

    也许 此页面 会有所帮助?  自这些论坛帖子发布以来的3年内、是否有人使用 python 实现了这一目标?

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

    Darren、

    Dean Banerjee 的帖子展示了如何使用 TICS Pro 的 ActiveX 界面来执行基本的 TICS Pro 自动化。 但是、您特别请求了一种方法来绕过 TICS Pro 直接与 USB2ANY 通信。 有一种方法可以做到这一点,但我必须告诉你,它没有得到官方的支持-您遇到的任何问题都将由您来处理:)

    使用 python、您可以使用 cTypes 模块的 WinDLL 包装程序打包 TICS Pro 中包含的 USB2ANY DLL。 您可以从此处调用 USB2ANY DLL 提供的任何函数。 我包含了一个代码片段、其中显示了以下基本示例。 我要注意的是、我没有测试过此代码、但它基于我们开发库中的示例脚本、因此我认为它的任何问题都应该很快识别出来。

    import ctypes
    u2adll = ctypes.WinDLL(r"C:\path\to\USB2ANY.dll")
    
    # Scan available USB2ANY devices
    controllers = []
    buf = ctypes.c_buffer(80)
    for i in range(u2adll.u2aFindControllers()):
        controllers.append(u2adll.u2aGetSerialNumber(i, buf))
    
    # Open a session with whatever the first USB2ANY is
    if not controllers: raise Exception('no USB2ANY found')
    handle = u2adll.u2aOpen(controllers[0])
    
    # Configure SPI bus
    bitRateKbps = 400
    divider = int(24000 / bitRateKbps)
    dividerHigh = (divider >> 8) & 0xFF
    dividerLow = (divider & 0xFF)
    errCode = u2adll.u2aSPI_Control(handle, #u2a handle
                                    1,      #SPI capture on leading edge
                                    0,      #SPI inactive state low
                                    1,      #SPI MSB first
                                    0,      #SPI 8-bit
                                    1,      #SPI with every packet
                                    1,      #SPI active low
                                    dividerHigh,
                                    dividerLow)
    if errCode < 0: raise Exception('failed to configure SPI bus: ' + str(errCode))
    
    # Write and Read
    numerator = 0xDEADBEEF
    packet1 = 0x260000 + ((numerator >> 16) & 0xFFFF)
    packet2 = 0x270000 + (numerator & 0xFFFF)
    buf = ctypes.c_buffer(3) #register length is three bytes for LMX2594
    
    buf[0] = (packet1 >> 16) & 0xFF
    buf[1] = (packet1 >> 8) & 0xFF
    buf[2] = packet1 & 0xFF
    errCode = u2adll.u2aSPI_WriteAndRead(handle, 3, buf)
    if errCode < 0: raise Exception('failed to write first packet')
    
    buf[0] = (packet2 >> 16) & 0xFF
    buf[1] = (packet2 >> 8) & 0xFF
    buf[2] = packet2 & 0xFF
    errCode = u2adll.u2aSPI_WriteAndRead(handle, 3, buf)
    if errCode < 0: raise Exception('failed to write second packet')
    
    buf[0] = 0xEF
    buf[1] = 0x00
    buf[2] = 0x00
    errCode = u2adll.u2aSPI_WriteAndRead(handle, 3, buf)
    if errCode < 0: raise Exception('failed to read R111')
    rb_VCO_CAPCTRL = ord(buf[2]) # R111[7:0]
    
    # Close session
    u2adll.u2aClose(handle)

    下面随附了一个 API 文档、其中详细介绍了由 USB2ANY DLL 提供的函数-在这里、我可以在代码片段中获取 u2adll 对象的函数名称。 我从未找到固件版本2.7.0.0的 API 文档的非初始副本、但它仍然应该是准确的-我们使用此副本针对随 TICS Pro 打包的 USB2ANY DLL 和固件版本。

    e2e.ti.com/.../api_5F00_reference_5F00_for_5F00_usb2any_5F00_sdk_5F00_2.7.0.pdf

    此致、

    Derek Payne

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

    Derek、

    这是一个有用的响应。  今天我正致力于这项工作、以使其正常运行、但感谢您为我们带来如此美好的开始!  我将告诉您它是怎么发生的。

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

    是否有64位版本的 usb2any dll?  我在使用我的64位 python 的窗口导入时遇到问题。  谢谢

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

    Darren、

    从技术上讲、DLL 有一个64位版本、但它用于与我们在 EVM 上使用的固件版本不同的固件版本。 您必须将新固件加载到 USB2ANY 上、这需要 USB2ANY 固件加载器应用程序(通常我们不在 TI 外部提供此功能、但据我所知、该策略没有严格的实施-我会通过电子邮件向您发送文件、 但我们的电子邮件过滤器之一会擦除附件)。 这也会导致 USB2ANY 与 TICS Pro 不兼容、直到固件降级。 您需要一个不同的 API 文档、因为从版本2.7.0.0到支持64位运算的版本有一些变化。

    更简单的解决方案是使用32位 python。 如果由于某种原因(例如您的其他软件要求中的严重依赖关系)而无法实现、我将尝试通过 E2E 提供固件加载程序和更新的固件。 这将是一个全面的实验、因为我们从未尝试在64位固件上使用 USB2ANY 与我们的任何器件进行通信-如果它不起作用、您可以自行操作。

    此致、

    Derek Payne

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

    再次感谢您提供的信息。  我将看到我是否可以将 python 切换到32位。  如果我们关闭该问题、如果它不起作用、我是否仍能对您执行 Ping 操作?  谢谢、Darren

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

    我将该主题标记为 TI 认为已解决。 您可以通过回复将线程重新打开长达30天、也可以打开引用此线程的线程。 如果您有更多问题、请随时提问;他们将会回复我、因为这是我所介绍的主题事项。

    此致、

    Derek Payne