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.

TSW1400 High Speed Data Converter Pro LabView

Other Parts Discussed in Thread: ADS5562EVM

I need to take a 2 second data file at 80MHz and it currently takes ~20 minutes to read that data out and save it to a binary file using the High Speed Data Converter Pro software. I am under the impression this is because of the overhead of LabView running unnecessary processes in the background (i.e. FFT's, reading out data to display, etc).  Is it possible to get a simplified version of the software with less functionality that will read out faster or the LabView VI itself to remove some of that unnecessary functionality?

Thank you,

Thayne

  • Thayne,

    The transfer speed of the USB is more of the bottle neck, we are using the FTDI chipset in a particular mode that limits the throughput to a fraction of the full USB2.0 rate.  There is no getting around this USB implementation in terms of faster bit transfers.  When this system was designed, the need for transferring large captures fast was not a big requirement.  Sorry for the inconvenience this may cause you.

    We do not have any other simplified versions of the software.

    Ken.

  • If you read  the data from a hardware, you can display your data directly from the port and you don't need to use an other software to make another delay.

  • Hi Ken,

    It has recently come to my attention that we have another potential application where we could take a much shorter data file, but would need to do so many times over a short period to acquire statistical data.  Given this requirement, would it be possible to get the original LabView source code used for the High Speed Data Converter Pro Software?  The reason I ask is that I am interested in making modifications to the VI to automatically acquire data files on an input trigger and save them to the hard drive in fast repetition without the need for human intervention, as this would slow the process down significantly.

    Thank you,

    Thayne

  • We will get back to you on this request ASAP!

    Regards,

    Jim

  • Thayne,


    The HSDC Pro source code is not something that can be released due to internal corporate and legal policies.  We have a means for automation already and this may suit your needs.  We have an automation DLL that can be used to automate the HSDC Pro GUI using either C, Matlab, labview - this is included in the HSDC Pro installation folder and can be found under the Automation subdirectory - Python examples are available upon request:

    C:\Program Files (x86)\Texas Instruments\High Speed Data Converter Pro\HSDCPro Automation DLL

    Please have a look at the manual and examples and see if this works for your purpose.

    Also if you use Test Stand for bench automation, HSDC Pro is also fully compatible with this as well.

    Which ADC device is this for?

    Ken.

  • Thayne,

    Also can you give me some idea of how fast you want to acquire the data?  Our current solution will still take 1 or 2 seconds to capture and save a short buffer.

    Ken.

  • Hi Ken,

    I had some time to work through the examples and I think this automation and repetition rate will be sufficient for our purposes.  This is to be used with the ADS5562EVM.  I will write back if there are further issues with the implementation.

    Thank you for all your help,

    Thayne

  • Hello Ken,

    You mentioned Python examples. Can you provide those?

    Best regards,

    Paul Hultz

  • Hi Paul,

    Let me see if I can find those.  We don't get a lot of requests for Python, but I do know at one point we have a working example.

    Keep in mind these are provided without any real support.

    Ken

  • Here is the python script.  Please have a look at this as well as the linked dll and API document in HSDC Pro installation directory.  Hopefully this helps.

    Ken

    HSDCPro_Automation_DLL_example.py
    #!/usr/bin/env python
    
    import os
    import sys
    import win32api
    
    from ctypes import cdll, byref, c_ulong, c_long, c_int, c_uint, c_uint64, c_ushort, c_double, c_char_p, c_ubyte, create_string_buffer
    
    user32 = windll.user32
    runpath = os.path.abspath('.')
    os.chdir('C:\\Program Files (x86)\\Texas Instruments\\High Speed Data Converter Pro\\HSDCPro Automation DLL\\32Bit DLL')
    hsdcdll = cdll.HSDCProAutomation
    os.chdir(runpath)
    os.environ['PATH'] = 'C:\\Program Files (x86)\\Texas Instruments\\High Speed Data Converter Pro\\HSDCPro Automation DLL\\32Bit DLL'+ ';' + os.environ['PATH'] # Add folder to path to find DLL
    print(os.environ['PATH'])
    
    def main():
    
        # Check Functions
        print(hsdcdll)
        print(hsdcdll.Connect_Board)
        print(hsdcdll.Select_ADC_Device)
        print(hsdcdll.HSDC_Ready)
        print(hsdcdll.Download_Firmware)
        print(hsdcdll.Pass_ADC_Output_Data_Rate)
        print(hsdcdll.Set_ADC_Input_Target_Frequency)
        print(hsdcdll.Set_Number_of_Samples)
        print(hsdcdll.FFT_Window_Notching)
        print(hsdcdll.ADC_Average_Settings)
        print(hsdcdll.Trigger_Option)
        print(hsdcdll.Pass_Capture_Event)
        print(hsdcdll.Read_DDR_Memory)
        print(hsdcdll.Generate_Software_Trigger)
        print(hsdcdll.Save_Raw_Data_As_CSV)
        print(hsdcdll.ADC_Test_Selection)
        print(hsdcdll.ADC_Plot_Type)
        print(hsdcdll.FFT_Window)
        print(hsdcdll.Save_FFT_As_PNG)
        print(hsdcdll.Select_ADC_Channel)
        print(hsdcdll.Get_FFT_Data)
        print(hsdcdll.Set_ADC_BIM)
        print(hsdcdll.Single_Tone_Parameters)
    
        status = c_ulong()
        print('')
    
        # Connnect to Capture Board
        BoardSerialNumber = create_string_buffer(100)
        BoardSerialNumber.value = "TIXMXM0D-TSW14J56"
        TimeoutInMs = c_long(30000)
        try:
            print('Connect_Board: START')
            status = hsdcdll.Connect_Board(BoardSerialNumber,TimeoutInMs)
            print('Connect_Board: COMPLETE, status = '+str(status)+'\n')
        except:
            print('Connect_Board: FAIL, status = '+str(status)+'\n')
    
        # Select the EVM Device, this also loads the firmware
        ADCDevice = create_string_buffer(100)
        ADCDevice.value = "ADC16DX370_LMF_222"
        TimeoutInMs = c_long(120000)
        try:
            print('Select_ADC_Device: START')
            status = hsdcdll.Select_ADC_Device(ADCDevice, TimeoutInMs)
            print('Select_ADC_Device: COMPLETE, status = '+str(status)+'\n')
        except:
            print('Select_ADC_Device: FAIL, status = '+str(status)+'\n')
    
        # Check that HSDC Pro is Ready
        TimeoutInMs = c_long(60000)
        try:
            print('HSDC_Ready: START')
            status = hsdcdll.HSDC_Ready(TimeoutInMs)
            print('HSDC_Ready: COMPLETE, status = '+str(status)+'\n')
        except:
            print('HSDC_Ready: FAIL, status = '+str(status)+'\n')
    
        # Set the Sampling rate in HSDC Pro
        ADCOutputDataRate = c_double(370000000)
        TimeoutInMs = c_long(30000)
        try:
            print('Pass_ADC_Output_Data_Rate: START')
            status = hsdcdll.Pass_ADC_Output_Data_Rate(ADCOutputDataRate, TimeoutInMs)
            print('Pass_ADC_Output_Data_Rate: COMPLETE, status = '+str(status)+'\n')
        except:
            print('Pass_ADC_Output_Data_Rate: FAIL, status = '+str(status)+'\n')
    
    
        # Set the Number of Samples/capture in HSDC Pro
        NumberOfSamplesPerChannel = c_uint64(65536)
        TimeoutInMs = c_long(30000)
        try:
            print('Set_Number_of_Samples: START')
            status = hsdcdll.Set_Number_of_Samples(NumberOfSamplesPerChannel,TimeoutInMs)
            print('Set_Number_of_Samples: COMPLETE, status = '+str(status)+'\n')
        except:
            print('Set_Number_of_Samples: FAIL, status = '+str(status)+'\n')
    
        # Capture Data
        TimeoutInMs = c_long(30000)
        try:
            print('Pass_Capture_Event: START')
            status = hsdcdll.Pass_Capture_Event(TimeoutInMs)
            print('Pass_Capture_Event: COMPLETE, status = '+str(status)+'\n')
        except:
            print('Pass_Capture_Event: FAIL, status = '+str(status)+'\n')
    
    
        # Check that HSDC Pro is Ready
        TimeoutInMs = c_long(60000)
        try:
            print('HSDC_Ready: START')
            status = hsdcdll.HSDC_Ready(TimeoutInMs)
            print('HSDC_Ready: COMPLETE, status = '+str(status)+'\n')
        except:
            print('HSDC_Ready: FAIL, status = '+str(status)+'\n')
    
        # Save Data to a csv file
        CSVFilePathWithName = create_string_buffer(200)
        CSVFilePathWithName.value = "C:\\Users\\a0413779\\Desktop\\data.csv"
        TimeoutInMs = c_long(60000)
        try:
            print('Save_Raw_Data_As_CSV: START')
            status = hsdcdll.Save_Raw_Data_As_CSV(CSVFilePathWithName,TimeoutInMs)
            print('Save_Raw_Data_As_CSV: COMPLETE, status = '+str(status)+'\n')
        except:
            print('Save_Raw_Data_As_CSV: FAIL, status = '+str(status)+'\n')
    
        # Dosconnect from the board
        TimeoutInMs = c_long(60000)
        try:
            print('Disconnect_Board: START')
            status = hsdcdll.Disconnect_Board(TimeoutInMs)
            print('Disconnect_Board: COMPLETE, status = '+str(status)+'\n')
        except:
            print('Disconnect_Board: FAIL, status = '+str(status)+'\n')
    
        print('')
        print('SCRIPT COMPLETE')
    
    
    if __name__ == '__main__':
        main()