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.

ADS 1298 Development for Arduino

Other Parts Discussed in Thread: ADS1298ECGFE-PDK, ADS1298, ADS1299

Hi there,

I am a student working on a project to read EEG using the 1298.  I purchased the development kit and want to use the EVM without the MMBO.

There have been several excellent posts on this topic, but I still cannot read the deviceID to get things going.  I am using an Arduino UNO

controller board.  Here are the details of my setup:

Connections:

EVM separated from the MMBO component.

EVM and MMBO were tested together upon receipt, the components work.

EVM powered by at TP10 . Analog ground is on TP8.  3.3V verified across JP24 pins 2-3 which are jumpered.

The power is supplied by the Arduino power rail and puts out 3.3V/125mA across these pins.

J3.3 SCLK connected to Arduino pin 13 SRC

J3.7 CS complement connected to Arduino pin 10 (CS default)

J3.8 RESET connect to Arduino pin 9 (programmed).

J3.11 DIN connected to Arduino pin  11 (MOSI default)

J3.13 DOUT connected to Arduino pin 12 (MISO default)

J.3.15 DRDY connected to Arduino pin 2 (DRDY interupt - programmed)

Programming algorithm (Arduino UNO):

- initialize serial connection to PC, SPI library, begin SPI

- set the in and out pin directions

- set internal registers on the Arduino to create a 2MHz, CPOL = 0, CPhase = 1 (SPI MODE1)

- take CS HIGH, then take RESET LOW, delay 33ms, RESET HIGH  ( I know this should be more than enough at 2Mhz)

- take CS LOW, issue 00010001 SDATAC command, then CS HIGH

- take CS LOW, issue SPI 0010000 READREG first byte for DeviceID

- issue SPI 00000001 second byte indicating one Register to read

- issue SPI with dummy variable to receive DEVICE ID.

- Result:  receive back only 0, not the DeviceID

The problem is....I cannot see anything on the SPI traces using a logic analyzer.  Is there something I am missing regarding the setup of the EVM board with power/ground/other?  The other major post on this issue appeared to have the CLKSEL set to one, requiring a hard PWDN in the start sequence.  Does it need to be done this way?  I assumed that since the clock is coming from the controller board, the default CLKSEL value of 0 would suffice and the hard RESET would be enough to initialize the board. One more small question, many posts refer to an OPCODE for PWDN, but I cannot find one.  I assume this would require a pin.

Any help you could give would be greatly appreciated.

Nick

  • Hi again,

    Hopefully someone at TI can answer this question....  We have removed the EVM board from the MMBO and attached 3.3V at TP10.  The ground is attached at TP8.  I have verified that 3.3V is coming across pins 2-3 on JP24. The board received here is a REV D.


    There have been many excellent posts on the subject of using the EVM board separately from the MMBO.  However, the post that TI personnel have frequently directed queries to within the forum involves connecting separate analog and digital power.

    Can anyone verify that only TP8 and TP10 are required to power the board or do we need to do something more?  We cannot get a registerID read and suspect that the EVM is not talking. There appear to be more than one REV of this board, perhaps this is the reason for the confusion.  The EVM does work with the MMBO as it was shipped...

    Thank you!

    Nick

  • **TI EDIT February 20th 2019; FOR GENERAL ADS129x ASSISTANCE, PLEASE SEE NEW BIOPOTENTIAL FAQ LOCATED HERE**

    Hi Nick,

    Take a look at the schematic for the ADS1298 which is in the ADS1298ECGFE-PDK Users Guide (refer to page 71).  TP10 (referenced to TP8) does provide 3.3V to the digital section of the board, but it does not provide the required analog voltage.  For that, you would need another 5V supply (referenced to TP8 as well) applied to TP7.  Looking at page 70 now, that 5V source is fed to U9/10/11 and 12 which generate 3.3, +2.5, -5V and -2.5 (from the -5V) rails to be used for the analog supply.  Depending on how you have jumpers JP2 and JP24 set, the analog supply would either be 0-3.3V or +/-2.5V.  So...make sure you have the device properly powered before you try initia;izing the serial interface.

    CLKSEL is controlled by JP27.  If you have the shunt on pins 1-2, CLKSEL = 0 and you need to use an external modulator clock.  This is provided by (defaults to) the 2.048MHZ clock on the eval board.  If you open JP27 (completely remove the jumper) the CLKSEL pin is pulled high and the ADS1298 would run from its internal oscillator.  In this case, you would want to open JP22 as well.  How are you controlling RESET, START and /CS?

    The OPCODEs are all listed in Table 11.  There is no specific OPCODE for powerdown, but there are standby and wakeup codes.  There is a PWDN pin connected to J5.5, but that line is pulled high through R8, so it defaults to 'on'.  You should not have to toggle that pin to get the ADS1298 to work, but its available if you want to use it with your processor.

  • Thanks Tom,

    I will work with this info and let you know how it goes.

    Cheers Nick

  • Hi Tom,

    Unfortunately, I still cannot get the deviceID and/or CONFIG1.

    For power, I applied 3.3V to TP10.  GRD is TP8.   5.0V is applied to TP7.  JP2 is jumpered at 1-2, which measures -3.63V.  JP-24 is jumpered at 1-2, giving 3.3V measured.

    JP27 is jumpered 1-2, JP22 is jumpered 1-2 (both default as shipped from TI), making CLKSEL=0.

    I have ignored the PWDN pin, there are no connections on J5.5.  PWDN control is not needed.

    On the controller board,  SPI and serial out are initialized. The Arduino is set to Master. The clock on the Arduino board is set to ClockDiv8 or 2MHz.  SPI is on MODE1, CPOL=0, CPhase=1 to sample on the falling edge. MSB is first. 

    I have controller pins for DRDY, START and CS. 

    DRDY is connected to J3.15.

    START is connected to J3.14   JP26 is jumpered.

    CS is connected to J3.7  (note a previous post had this at J3.1 with jumper JP25 set so that JP3.1connects to SPI_CS.  There is no jumper at JP25 on my REV C board)

    Startup process is as follows:

    - power up

    - serial, SPI initialized

    - polarity, clock freq, etc initialized

    - START, DRDY, RESET and CS pulled low.

    - wait 150 ms

    -START, RESET pulled HIGH

    - delay 1 sec

    - pull RESET LOW, wait 100 ms, pull RESET HIGH

    - wait 5 sec (from  a previous post)

    - pull CS LOW, send OPCODE 00000110, delay 500 ms, pull CS HIGH  (pulse the RESET)

    - pull CS LOW, send OPCODE 00010001 for SDATAC, pull CS HIGH

    - delay 100 ms

    - pull CS LOW, send OPCODE1 00100000 for READREG (start at the deviceID)

    - send OPCODE2 00000001 for READREG (number of registers 2)

    - send 0xAA (dummy to receive synchronous data) twice, once for each register

    - read output

    - pull CS HIGH

    I get zeros for both the registers.  I reviewed the posts on timing and have tried various timers between OPCODES, assuming that at 2MHz, each clock cycle is approximately 4 usec.  From previous posts, it appears that longer intervals are not necessarily bad?  Also, I did not send a STOP OPCODE between SDATAC and READREG.  I think this is generated by the SDATAC command?

    Any ideas you have would be greatly appreciated.

    Thanks Tom,

    Nick

  • Hi Nick,

    Lets start with a few basics.  If JP2 is shorted pins 1-2, relative to TP8, you should see +2.5V at that jumper.  If JP24 is also shorted pins 1-2, you should see 0V relative to TP8.  DRDY is an output and should be tied to an interrupt on your host processor, you should not actively drive J3.15.  You can pull START high via J3.14, which assumes JP26 is shorted pins 2-3.  RESET and PWDN are active low.  PWDN has a pull up on it but RESET needs to be driven/pulled high.  Verify that the oscillator is running, you can do this by probing JP22.  The shunt should be on pins 2-3 and you should have a 2MHz clock there.

    From here, if you have all the power connected correctly and the conversion clock is present, you should power up the ADS1298 into its default condition.  Without running any software on your processor, you should be able to probe the DRDY signal and see it pulsing at a 250Hz rate (assuming START and RESET are high).

    The sequence of you commands and the setup of the SPI sound right, so if you can capture a scope shot of your configuration for us and pass it along, that might give us some clue as to why your setup is not working.  If you are confident that the power is set up correctly, you might consider setting everything back to the original HW conditions and verify that your board still works with the MMB0 setup.

  • Hi Tom,

    Sorry I made a couple of errors...been working on this late!

    JP-2 is jumpered 2-3, as is JP24.  RESET, START and /CS are pinned, DRDY is set up as for interupt and not being managed...

    I will verify the other settings again and retest the board.

    Thanks again for your help.

    Nick

    ----------

  • Hi Tom,

    I reconnected the MMBO and everything works.

    The board is still not functioning. I have pored over various posts and reviewed

    the schematics, but could you confirm this power settings? 

    - 5V applied to TP-7

    - 3.3V applied to TP-10

    - GRD TP-8

    - JP-2 is jumpered 2-3

    - JP-24 is jumpered 2-3.

    I also see a reference to JP-28 from the FAQ in the question entitled "Can the ADS 1298 be used without the MMBO?" under "power".  Are the references in the FAQ regarding JP-28 and JP-24 the same for REV C?  The jumpers have moved from RevA to RevC... 

    It is a bit confusing.  I want to use 3.3V and 5V power as described above.

    I sincerely appreciate your help and apologize if I am being frustrating.

    Nick

  • No worries Nick,

    Sorry for the Delay!  Try to send us a picture of the board - there were some jumper nomenclature differences between Rev C and D, but everything is physically in the same place.  If we can see what you've jot your jumpers set to, we might be able to help you track down the problem.

  • Hi Tom,

    I have attached a picture of the board. It is removed from the enclosure I had it

    in so we could get a good photo.  The three inputs you see are 3.3V, 5V and

    GND at TP10, TP7 and TP8 respectively.

    I did run the logic analyzer on the system, and the timings look OK,

    but I do not see consistent data coming back from the device.  I am new to this, so it

    could be I have set it up incorrectly.  My suspicion though is that I have the hardware

    incorrectly set up. I have changed the code from the controller dozens of times

    and used different timing scenarios.  I have also used a replacement controller and

    get the identical results.  If you could verify the jumpers, it would be most appreciated.

    Regards,

    Nick

    1298 EVM Jumpers

  • Here is the photo...could not see it in the post above...

    http://imageshack.us/photo/my-images/716/evmjumpersmar82012.jpg/

     

  • Hi Nick,

    One thing that jumps out at me is that JP2 and JP24 are both 'to the right' in the picture you sent.  They should both be to the 'outside' for 0-3.3V operation or to the 'inside' for +/-2.5V operation. 

  • Hi Tom,

    I changed the jumpers as you suggested. I also tested my 5V power and found that just

    from USB on the controller board, it was only 4.7V, so I added AC power to the controller

    board (it supplies the EVM) and it is now putting out 5.0V.

    Something seems to be happening, here are the numbers:

    In the following setup, I have pin 1 as it is indicated by the dark ring on the schematic.

    Setup:

    JP2 1-2

    JP 24 1-2

    JP20 1-2

    Power applied at:

    TP7 5.0V

    TP10 3.3V

    TP8 GRD

    Measured Voltage as per page 16 of the Userguide:

    TP7 5.0V

    TP9   0V, expected 1.8V

    TP10 3.3V

    TP5 3.0V

    TP13 +2.5V

    TP6 -2.5V

    All relative to TP8, GRD.

    In my script as described in a previous post, I ask for both deviceID and CONFIG1, the first

    registers.  I am getting 0 for deviceID, then a seemingly random number for CONFIG1.

    This number floats between 4 and 128.

    Does this sound like something you've seen before?

    Thanks Tom

    Nick

  • Hi Nick,

    TP0 would only have 1.8V if you are connected into the MMB0.  If you are not supplying a 1.8V rail through J4, seeing 0V there is 'normal'.  Getting 0 of the device ID is not normal and CONFIG1 should not float.  Can you verify that the oscillator is running?

  • Hi Tom,

    That makes sense.  I do not have a 1.8V PS.

    On boot, I am getting a cycle rate of 248 on DRDY. 

    BTW, reset and rebuilt all connections using a photo from the previous time,

    and now I just get 0 for deviceID and 0 for CONFIG1.  Same programming.

    Do I need a new EVM?  I am a long long way into this debug....

    Thanks Tom,

    Nick

    --------

  • Hi Nick,

    Sorry for the delay here - how are things going at the moment?  If the board still works for you on the MMB0, I suspect there is no need for a replacement.  Let me know where you are with this and we'll help you work a solution.

  • Hi Tom,

    I did order another EVM board.  After many, many attempts, I just could not detect signals coming back from the 1298 EVM.  The good news is that the device that just arrived does seem to send signals.

    The  annotated diagram shown in the link below indicates what the signals arrive from/ have been sent to the device.  Note that a STOP  signal was sent, not sure if this is necessary.  On several occassions, I have seen posts from you and this signal is added after the SDATAC and appears to come from the Master. 

    The timing diagram found at the link below should produce the deviceID and the CONFIG1 values.  As you can see they are both zero.

    http://imageshack.us/content_round.php?page=done&l=img10/6443/1298timing.jpg

    I appreciate your help.

    Cheers
    Nick

  • Hi Tom,

    I finally got the system reading the values.  My error was in misinterpreting the JP24 location. JP24 is different

    on the REVA and REVC versions of the board.   Also, /CS must be connected to J3.1.  There is some documentation

    suggesting is works another pin as well, but it did not work for me.

    Thanks for all your help - and over the weekends as well!  Here is the snapshot of the working DeviceID/CONFIG1 read.

     

    Cheers

    Nick

     

  • Hi,

    If you got the Arduino reading from the ADS1298, would you please share it with us.

    I will really appreciate your help.

    Thank you

  • What software are you using to display the data ?? Are you using Arduino uno and snap electrodes ?? Can you share a pic of you circuits 

    Thanks

    Sandeep

  • Hi Nick,

    Would you mind sharing your Arduino code? I am also facing the same problem that I got 0s for all my register contents... What did you do to resolve this issue?

    Inez

  • Hi Nick! I followed up your tutorial but I have a simple question. Is it safe to use Arduino UNO which has a logic v of 5v with the ADS1299 evalution kit top board? Arent those pins 3.3v and not 5v tolerant? I tried anyways and it worked, I got the device ID but I'm afraid of damaging those pins. Can you share some thoughts on that?