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.

CCS / ADS1299EEGFE-PDK:external data output

Part Number: ADS1299EEGFE-PDK
Other Parts Discussed in Thread: ADS1299

Tool/software: Code Composer Studio

I want to read the external signal through CCS. I have successfully read the internal test square wave as shown in figure 1 below, but when I changed the register to read the external signal 100 HZ SIN wave, the data output figure is as shown in figure 2. What is the reason? How can I improve this result?
Figure 3 shows the results of the external test signal presented on the oscilloscope.

figure 1

figure 2

figure 3

  • Hi,

    There may be a code to voltage conversion error in your code. Please see the BIOFAQ for more information: https://e2e.ti.com/support/data-converters/f/73/p/772058/2855202

  • I only draw the read data into a graph, there is no code to convert the voltage in CODE, because I think that before and after voltage conversion, although the values are different, the graph should be the same. Figure 1 of the above article is the internal test method for reading ADS1299 Wave, and draw directly, without voltage conversion code.

    I have wondered whether the graphics are incorrect due to the register setting problem, but I use this register setting in ads1299EVM to receive the external test signal correctly. The following is my register setting.
    External input signal CH8 is GND, CH7 is signal input
    config1: 0x96
    config2: 0x96
    config3: 0x96
    MISC1: 0x20
    CH1SET: 0x61
    CH2SET: 0x61
    CH3SET: 0x61
    CH4SET: 0x61
    CH5SET: 0x61
    CH6SET: 0x61
    CH7SET: 0x40
    CH8SET: 0x68

  • I think whether the ADS1299 has a limited input signal, like how much should the input signal voltage be between?

  • Hi,

    I see. This is a clever way of testing, however it may be sometimes misleading. 

    How is the device powered? Are you using unipolar or bipolar power supplies? 

    Since the signal shown is bipolar, you would want to run the device in a bipolar configuration as well. I would also recommend using a burden resistor between VINP and VINN to drop this signal across, with the negative input connected to GND. 

    Is the signal shown in figure 3 measured from the input pins of the ADS1299 or from the signal generator when not connected to the circuit? 

    This post explains the input voltage range: https://e2e.ti.com/support/data-converters/f/73/t/379380?tisearch=e2e-quicksearch&keymatch=ads1298%20analog%20inputs

  • I use bipolar power supply, JP2(1-2), JP20(2-3)

    When the external signal is input, do I need to connect the positive and negative ends of the signal generator to the same channel's VINP and VINN? Or connect one channel's VINP to the positive end of the signal generator, and the other channel's VINP to the negative end of the signal generator End, as GND?

    Figure 3 is directly connected to the oscilloscope from the signal generator without any circuit in the middle

    The following picture shows the jumper settings of ads1299

    Image source: modified from TI ads1299 USER GUIDE

  • Hi,

    I would connect the signal generator positive lead to one side of a resistor (anything small is fine, 1k), with the negative signal generator lead and AGND connected to the other side of the resistor. Then, connect VINP to the side of the resistor with the positive lead, and VINN to the side of the resistor with the negative lead and AGND. 

  • The condition of the signal has not improved at all. I think it may be an error in the code. I wonder if the setting value of the register is wrong?
    My scratchpad settings are as follows:
    config1: 0x96
    config2: 0xC0
    config3: 0xE0
    MISC1: 0x20
    CH1SET: 0x61
    CH2SET: 0x61
    CH3SET: 0x61
    CH4SET: 0x61
    CH5SET: 0x61
    CH6SET: 0x61
    CH7SET: 0x40
    CH8SET: 0x61
    And input the signal of the signal generator from channel 7

  • Hi,

    Indeed there seems to be a problem here. I see that you have the SRB1 switch closed. This connects the SRB1 pin to all negative input channels. More than likely, SRB1 is floating, hence the measurement issues you are seeing. Try writing 0x00 to MISC1 and see if that helps. 

  • After a day of testing, I connected the VINP of channel1 to VINN so that the input signal was 0, and changed the registers config1, config2, config3, cfannel 1 to observe the results. The results are shown in the figure. It should be that the external input signal cannot enter the ADS1299 through the channel's VINP and VINN. No matter whether the signal generator is used to input the 100HZ SIN wave, or the VINP and VINN are connected, the result is the same. I suspect that the register and the jumper on the circuit board are set. The cause, but I don’t know yet what caused it.
    config1: 0x96
    config2: 0xC0
    config3: 0xE0
    MISC1: 0x00
    channel1: 0x68

  • Hi,

    Try probing the SPI communication lines to see what is actually being transmitted by the ADS, then verify that the value is being correctly received and ultimately plotted in CCS. Additionally, I would recommend implementing a code to voltage conversion in your code. Since you're simply plotting what code is received, the results may be deceiving since it is in a 2's complement format. 

  • I have successfully read the external signal, but encountered a small problem.
    The DR[2:0] of the ADS1299 register config1, for example, "110: fMOD / 4096 (250 SPS)" means that each channel has a sampling rate of 250? Or does it mean that the sampling rate of each channel is 250/8 ?

    If I only need to use 1 channel and want to close the other channels, can I set the other channels to 0x89 to close it?

    I used the signal generator to give a 10HZ sin wave, config1 was set to 0x96, and finally read out a perfect wave pattern.

    If I change to a sin wave of 10Hz, but the sampling rate is increased to 1K (config1 is set to 0x94), the result is as shown below.

    If I change to a sin wave of 10 Hz, but the sampling rate is increased to 4K (config1 is set to 0x92), the result is as shown below.

    But when I try to increase the sin wave to 50Hz,sampling rate is increased to 250 (config1 is set to 0x96), the data becomes as shown below.

    Theoretically, the higher the sampling frequency, the more complete the signal should be, but from the picture it seems that this is not the case. And I found that when DR[2:0] is set to 250SPS, there are 10 sin waves among 250 data points; but when DR[2:0] is set to 1k SPS, there are 20 sin waves, I think Should there be only 10 sin waves?

    I am thinking to try is not my understanding of DR[2:0] of config1 wrong? I understand him as DR[2:0] is equal to the sampling frequency. If not, what are the possible causes of this situation?

  • Hi, 

    The device simultaneously samples, meaning there is one ADC per channel. So that data rate is for each channel, not divided by the number of channels sampling. 

    You are correct, however, you may need to change your data capture routine. This could include increasing your SCLK frequency, or how quickly the data is processed.It looks to me like the data is being truncated, which is a symptom of what I've outlined above. Check what is actually being received and written to the graph output. 

  • I tried to calculate the minimum required SCLK. I tried to calculate SCLK through the formula in section 9.5.2.2 on page 39 of the datasheet, but I don't know how to get tdr and tclk in the formula.

    I read the description of section 9.3 on page 20. tclk is the period of fclk, and  fclk = 2.048MHz on page 11, so I think tclk = 1/2.048M ?

    Although the tdr  is mentioned in chapter 9.3, I still don't know how to get the tdr number I want.

  • Apologies for not directing you here earlier, but see the BIOFAQ: https://e2e.ti.com/support/data-converters/f/73/p/772058/2855202