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.

ADS1298ECG-FE software problem!

Other Parts Discussed in Thread: ADS1298

Hi, i have a problem making the software that comes with the ADS1298ECG-FE kit work. I keep getting an error that says " the firmware load has failed due to a timeout. please reset the hardware to continue loading the firmware". the board is connected to my computer and it's powered. It seems like my computer does not recognize the device and it keeps asking for a driver.  I have tried to restart my computer but still getting the same error. can someone please help me with this? I have windows 7 professional on my computer so I'm not sure if that's the problem and if it is, is there a way to go around it?

Thanks

  • Hi Rita,

    I am sorry to hear about the problems you are experiencing with the ADS1298ECG-FE setup.  At the moment, the code you have is not compatible with Windows 7.  Do you have an XP machine you can use in the short term?

  • Thanks for responding Tom. Unfortunately the computers I have are either Vista or Windows 7. but when I got my laptop I had it upgraded to windows 7 "professional" which I was told should support programs supported by XP! do you know anything about that please?

  • Hi Rita,

    I am aware that the professional version is supposed to run XP software, but unfortunately that is not the case with this particular piece of code.  We are working on getting a Windows 7 version running but that's still a little way down the road.

  • Dear Tom,

    I found a way to run the ADS1298-ECG FE software on Vista 32-bit, but it's not exactly obvious. If you'd like, I can share the (complicated) solution here, unless you recommend waiting for an official TI patch to run the Labview program under Vista and Windows 7, which I understand.

    I am currently talking to the EVM kit using the Styx protocol. Is there a way to perform gap-free acquisition? I have to programmatically restart acquisition periodically after reading the Styx file that contains the data, which takes time during which incoming data is lost, presumably. The function that reads data does not seem to allow fetching samples at arbitrary positions in the circular buffer, which prevents implementing a double-buffer solution. Any suggestion?

    Thank you in advance and best regards,

     

    Quoc

  • Hi Quoc, If you have an interim solution that can possibly help Rita, I don't mind you posting that here. Are you will to support questions that may come up though? For the buffer, yes, data is lost between captures. There is firmware on the DSP found on the MMB0 that talks through STYX to LabVIEW. That code would need to be changed to implement some sort of ping-pong or circular buffer as well. The USB transfer bogs down throughput too. You may be able to get contiguous data at the lower data rates of the ADS1298. We are looking into that as well.
  • Dear Tom,

    I would like to record without gaps at a rate as fast as 1 kSamples/s  (i.e., ~ 36 kbyte/s sustained transfer rate via USB = (8 channels + 1 status) x 4 bytes x 1000 / s), most of the time at 500 samples/s (i.e., ~ 18 kbytes/s). The USB port and the PC application should be able to handle that. Perhaps the data transfers are slow due to Labview (the reordering of bytes from big endian to little endian is probably very inefficient in Labview). The application I wrote in compiled code has no problem getting, processing and displaying incoming data blocks every 100 ms from the EVM. The issue is that the transfers are limited by the block size, which is set before transfers start. Once the system has acquired a block, it stops. The PC application has to restart acquisition to get the next block.

    It seems that there is a good deal already written in the firmware code to support continuous, gap-free acquisition. The "adcq" variable is a buffered queue, there's DMA etc... Is it possible to program the DMA controller to perform repeated transfers? There is a REPEAT bit in the DMA Channel Control Register (DMA_CCR) of the TMS320vc5509 DSP. Can this bit be set in the firmware code (maybe in the SubmitBlock function int the t1298_ob.c)?

    If this bit is set, would it trigger an interrupt at the end of each transfer block, allowing the ISR to write to the buffered queue repeatedly and restart acquisition? In this case, the read operation from the application on the PC should be able to read the last sampled data, continuously without the need to restart acquisition explicitly. 

    I hope that I am making sense. Thanks for the support. The EVM is great , by the way.

     

    Quoc

  • Hi Quoc,

    can you please tell me how you're running it with Vista?

     

    Thanks

  • Dear Rita,

    Under Vista 32-bit, once the firmware is loaded into the MMB0 board, most of the problems are solved. You just need to run the LabView application under XP compatibility. There's a bit of programming involved, that's why it's not obvious.

     

    (1) Install the TI provided software for the ADS1298ECG-FE EVM kit.

     

    (2) Patch it with the newest version on the TI web site.

     

    (3) Part of the problem is in the National Instrument VISA device driver provided by TI, which is not compatible with Vista.

    Download and install the latest version of libusb device driver (http://sourceforge.net/apps/trac/libusb-win32/wiki).

    Download ZADIG and refer to the instructions (http://www.libusb.org/wiki/libwdi/zadig) to replace the VISA device driver with libusb. Give the device a name of your choice, and enter as the Vendor: 0451 and for the PID: 9001.

    Device Manager should tell you that the driver is now working properly.

     

    (4) Write a small app in the language of your choice that uploads the firmware into the EVM kit using libusb functions.That's the hardest part but only a few lines of code. The firmware is stored in the file 'ads1298evm-pdk.bin' provided by TI.  Code snippets written in CodeGear Delphi are shown below. Use the headers for libusb in C or other languages (they are available on the Web, e.g., libusb.pas) to use the following functions that calls the libusb dll:

    - usb_set_configuration to connect to the MMB0 board

    - usb_claim_interface to claim interface 0

    -  usb_bulk_write to dump the content of the firmware file 'ads1298evm-pdk.bin' to endpoint 6

    - usb_release_interface

    Make sure that the file to be uploaded is found by your app. Basically, what you are doing is exactly what the LabView software tries to do with its VISA driver (see the LabView source code).

     

    (5) Run the loader application. When the firmware is uploaded, the EVM kit LED digits will light up, Vista will discover the EVM kit with USBStyx as its driver. Check with Device Manager to see it the transition took place.

     

    (6) Run the Labview software under XP compatibility (just in case). The LabView software will skip trying to load the firmware and will connect directly with the EVM kit.

     

    Good luck.

     

     

     

     

    uses libusb;

     

    const

        sFirmware = 'ads1298evm-pdk.bin';

        MMB0_VID = $451;

        MMB0_PID = $9001;

     

    type

        TEVMStatus = (evm_notfound, evm_nofirmware, evm_connected, evm_OK);

     

        TADS1298 = class

        private

            mmb0dev: TLIBUSB;

      ...

            fstatus: TEVMStatus;

            procedure Connect;

         end;

     

     

    procedure TADS1298.Connect;

    var memStream: TMemoryStream;

        errorCode: integer;

    begin

        fstatus := evm_notfound;

        USBDevInit(mmb0dev);

        mmb0dev.VID := MMB0_VID;

        mmb0dev.PID := MMB0_PID;

        if not USBdevOpen(mmb0dev) then

            {firmware already loaded}

            fStatus := StyxConnect 

        else

        begin

            {loads firmware}

            memStream := TMemoryStream.Create;

            try

                memStream.LoadFromFile(sFirmware);

                begin

                    errorCode := Integer(usb_set_configuration(mmb0dev.handle, 1 {bConfigurationValue}));

                    if errorCode >= USB_OK then

                    begin

                        errorCode := usb_claim_interface(mmb0dev.handle, 0 {bInterfaceNumber});

                        if errorCode = USB_OK then

                        begin

                            errorCode := usb_bulk_write(mmb0dev.handle, 6 {bEndpointAddress},

                                PChar(memStream.Memory), memStream.Size,  1000);

                            usb_release_interface(mmb0dev.handle, 0);

                        end;

     

                        if errorCode >= USB_OK then

                        begin

                            MessageDlg('Firmware downloaded, press OK to continue', mtInformation, [mbOK], 0);

                            Sleep(3000);

                            fStatus := StyxConnect;

                        end

                        else

                            fStatus := evm_nofirmware;

                    end;

                end;

            finally

                USBdevClose(mmb0dev);

                memStream.Free;

            end;

        end;

    end;

     

  • thank you so much Quoc,

    I was actually able to get access to an XP computer but now there's still a problem. the software is very slow when it stars (the progress bar on top take about 15  minutes to get to 100% for initialization) when we start the software and after that we can't even run the internal test to see if the board is working properly another thing is that the screen when the software is opened is bigger than our computer screen and we can't maximize it (the button next to the (X)  for closing the program to maximize it cannot be pressed)....Can someone please help?

     

    Thank you

  • Hi Rita,

    The 'slow update' of the register reading in the ADS1208ECGFE-PDK software is usually caused by either an improper jumper setting or perhaps an older software version.  First thing I would suggest is to verify you have the latest code.  Click on the 'About' tab and/or 'Help' menu item and let us know the software/firmware versions you have loaded.

  • Tom, you're right it was the version that's on the CD that's not working....I downloaded the one on the website and now it's working faster...I'm sorry but i'm a beginner in using this kit so  might have some more questions in the future!!

    thank you so much for responding!!