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.

[参考译文] DAC3482EVM:使用GUI或DLL在同一台PC上控制两个DAC3482EVM

Guru**** 1495795 points
Other Parts Discussed in Thread: DAC3484, DAC3482
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1100126/dac3482evm-control-two-dac3482evm-on-the-same-pc-using-gui-or-dll

部件号:DAC3482EVM
主题中讨论的其他部件:CDCE6.2005万DAC3484DAC3482

我想控制 系统中的两个3482EVM,我有一些问题:

1.是否可以使用EVM GUI设置每个卡寄存器? 我在UI的任何位置都看不到选择端口或设备的选项。  

2.为了以编程方式进行控制,我使用的是DLL。 当连接到两个设备时,我发现我应该在OpenUSB功能中使用不同的索引。 如何知道哪一个索引属于哪张卡?

首次连接到PC时是否永久设置? 或者,它可能会在关机后再开机等情况发生变化?

3.我还想用 DLL控制CDCE6.2005万,但我不知道如何连接它。 我是否应该使用适当的模式文件并使用来自DAC的不同设备索引来初始化它?

谢谢

伊泰

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

    您好,意大利,

    当前的GUI和SPI实用程序设计有1x DAC3482 EVM控制。 可以自行修改DAC3484 FTDI实例化以及SPI实用程序,以控制多个DAC3482 EVM

    1.有关DAC3482 SPI控制实用程序的参考,请参阅以下论坛

    https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/43.2855万/dll-of-dac348x-evm-software-gui?tisearch=e2e-sitesearch&keymatch=dac3484 % 25.252万dll#

    2.从FTDI网站下载FT PROG并实例化FTDI芯片的名称,使两个EVM具有不同的命名。  

    3.相应修改SPI软件(您自己的开发)以适应两个EVM

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

    谢谢  

    我可以使用DLL和不同的索引以及相同的名称连接到两个卡(但是-我不知道哪一个是哪一个)。  

    更改卡名是否安全? FT_PROG中有一个警告,写入EEPROM会使芯片 无用...

    我遇到了另一个问题-我正在使用您发送的链接中的zip文件中的DAC3482模式文件。  

    读取寄存器按预期工作。 但是-写作不是这样。 例如,当我尝试向REG x03写入一个特定的值时(例如 0x2001)-我在每次写入后从寄存器读取一个不同的值,它与0x2001完全不同。  

    可能是图案文件有问题吗? 例如 ,如果我使用3pin而非4pin进行通信,我是否应该使用不同的文件?

    附注:链接中有另一个DAC348x模式文件-与zip文件中的模式文件不同。 尝试使用它时,读取寄存器时总是得到零。  

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

    您好,意大利,

    您必须与FTDI支持部门确认。 我们通常会更改USB字符串描述符,没有任何问题。 请参阅下文。 但是,由于设备所有者是FTDI,请与他们核实。

    Registers3482 -PC-using-gui-or-dll/4077148#4077148"]Registers Reading3482 Reading按407.7148万按预期407.7148万预期工作。 但是-写作不是这样。 例如,当我尝试向REG x03写入一个特定的值时(例如 0x2001)-我在每次写入后从寄存器读取一个不同的值,它与0x2001完全不同。  [/引述]

    由于GUI已发布一段时间,我们到目前为止还没有听到任何有关写入和读取的问题。 读取和写入周期共享相同的指令,直到地址周期。 您是否能够探测SCLK,SDI,SDO和SDEN,以确保设置/保持时间正确,并且您编写的数据流正确。  

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

    那么,同样的模式是否适用于3引脚或4引脚SPI通信?

    我将尝试探测信号并进行更新  

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

    您好,

    GUI的DAC3484默认配置设置为3针。  

    由于您正在读回正常,SDIO设置必须正确。 读写之间4引脚的差异是SDO输出。  

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

    好的,谢谢。

    我尝试了32和64 dll,但write_register失败,就像我在这两个文件中描述的那样。

    是否可以是其他SIF设置? 可能是不同的波特率?

    我不知道它如何与EVM主GUI配合使用,而不是与dll配合使用?

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

    您好,意大利,

    请告知您是否具有写入过程的范围捕获:即SCLK,SDIO,SENB全部在一个图中,以及您正在尝试写入的寄存器。

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

    是的,现在就这样做了。

    以下是在编写0x2001以使用主GUI (工作正常)注册0x03时作用域的输出:

    下面是使用DLL时的信号(无法写入正确的数据):

    下面是另一种提供不同信号输出的尝试(在DLL中使用类似的值):

    似乎整个通信行为错误。

    读取方案看起来也很糟糕,就像写入一样,但它确实有效-与主GUI比较时,我读取了正确的值。

    请提供建议。

    谢谢

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

    顺便说一下,我在上述运行中使用了1.92万波特率(我后来尝试了更高的速率,但写入正确的值仍然失败)。

    此外,我尝试 了'writeRegister_64'和'writeRegister' DLL函数,结果相同。

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

    您好,意大利,

    我不知道哪里出了问题。 让我与制定此报告的团队核实一下,看看他们是否有任何反馈。

    -Kang

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

    您好,意大利,

    我们无法复制您的问题

    请参阅以下内容:

    DLL应该可以正常工作,没有任何问题。 我们尝试使用LabVIEW VI (使用FTDI模式生成器DLL)在DAC3484板上写入寄存器,但在写入和回读时没有发现任何问题。

     

    请仔细检查您 是使用  较早共享的FTDI模式生成器LabVIEW Example.vi,还是在任何其他平台上使用DLL?

     https://tidrive.ext.ti.com/u/g6HJmQMhyc6Rocmd/d0.2848万a4-c940-4967-a640-6e2a93b2cf83?l</s>4967

    在LabVIEW的情况下,您是否可以使用FTDI模式发生器LabVIEW Example.vi写入寄存器并读回? 我们可以在只连接到PC的一个板上尝试此操作,然后关闭设备GUI并查看是否发生问题。

     

    FTDI端口和波特率的设备说明可在  DAC3484 GUI安装位置的FTDI cfg.ini中找到。

     

    默认安装位置:C:\Program Files\Texas Instruments \DAC348x

     

    如果使用示例VI写入寄存器时没有问题,则DLL可能没有此问题。

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

    您是否在64位DLL的64位系统上使用过3482 EVM?

    我没有在机器中安装LabVIEW。  

    我使用的是python DLL。

    此外,我在ini文件中看不到有关波特率的任何信息。下面是它的内容:

    [DAC3484_GUI_v3p8]
    server.app.propertiesEnabled=True
    server.tcp.serviceName="My计算机/VI服务器"
    server.vi.propertiesEnabled=True
    webserver.tcpAccess="c+*"
    webserver.ViAccess="+*"
    DebugServerEnabled=False
    DebugServerWaitOnLaunch=False

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

    请让我与团队讨论并回复您。 我们也许可以为您提供一个编译版本供您测试。

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

    您好,意大利,

    是否可以共享您的python脚本供我们研究? 还请共享python版本。 谢谢你。

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

    当然:

    Python版本3.8。

    脚本:

    from ctypes import *
    import os
    
    
    orig_cwd = os.getcwd()
    os.chdir(r'D:\dev\DAC348xEVM_SPI_Utilities\64-bit DLL\FTDI Pattern Generator')
    dll_file_name = r'FTDI_Pattern_Generator.dll'
    dll_path = os.path.join(os.getcwd(), dll_file_name)
    dll = CDLL(dll_path)
    
    evm_index = c_int(0)
    device_index = c_int(0)
    
    dev_desc = 'DAC348xEVM'
    # baud_rate = 19200
    baud_rate = 230400
    pattern_file_name = 'DAC348x.txt'
    pattern_file_path = os.path.join(os.getcwd(), pattern_file_name)
    
    write_address = c_ulong(0x03)
    write_data = c_ulong(0x2001)
    
    write_address_64 = c_ulonglong(0x03)
    write_data_64 = c_ulonglong(0x2001)
    
    read_address = c_ulong(0x03)
    read_data = c_ulong(0)
    
    read_address_64 = c_ulonglong(0x03)
    read_data_64 = c_ulonglong(0)
    
    error_status = dll.openUSBPort(dev_desc.encode(), baud_rate, byref(evm_index))
    print(error_status)
    print(evm_index.value)
    
    error_status = dll.initializeDevice(pattern_file_path.encode(), evm_index, byref(device_index))
    print(error_status)
    print(device_index.value)
    
    # error_status = dll.readRegister(evm_index, device_index, read_address, byref(read_data))
    # print(error_status)
    # print(hex(read_data.value))
    
    error_status = dll.readRegister_64(evm_index, device_index, read_address_64, byref(read_data_64))
    print(error_status)
    print(hex(read_data_64.value))
    
    # error_status = dll.writeRegister(evm_index, device_index, write_address, byref(write_data))
    # print(error_status)
    
    error_status = dll.writeRegister_64(evm_index, device_index, write_address_64, byref(write_data_64))
    print(error_status)
    
    error_status = dll.closeAllPorts()
    print(error_status)

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

    抱歉-我在代码中发现错误。

    我将引用发送到write_data,而不是数据本身。

    感谢您的支持