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.

ADS1299: ads1299. Noise measurement

Part Number: ADS1299

Sorry, that distract, I really tried to decide the problem myself.

I assembled the PCB board with ads1299 and start to measure the DC - voltage for checking (2 V). But the result was with noise. I decide to check the noise register - MUXn[2:0] - 00001001, and receive a very strange result,

16776020
16776019
16776019

it looks like the pin was connected to the reference, but in fact, should be to the ground.

bipolar power supply

I use the next setting for register (in fact I tried already many different settings for the register, but result in every time was the same)

ID - 0x3E

config1 - 0x96
config2 - 0xD1
config3 -0xE0
CH1SET - 0x09
MISC1 - 0x20

write_byte(CONFIG3, 0xE0); 

write_byte(CONFIG1, 0x96); 
write_byte(CONFIG2, 0xC0); 

write_byte(0x04, 0x00);

write_byte(0x0D, 0xFF);

write_byte(0x0E, 0xFF);

write_byte(0x0F, 0x00);

write_byte(0x10, 0x00);

write_byte(0x11, 0x00);

write_byte(0x12, 0x00);

write_byte(0x13, 0x00);

write_byte(0x14, 0x0F);

write_byte(0x15, 0x00);

write_byte(0x16, 0x00);

write_byte(0x17, 0x00);

  • Hello Ildar,

    Thank you for your post and welcome to our forum.

    The problem you are describing is not very clear. Please try to restate your question. 

    If you are having trouble communicating with the ADS1299, you can try the example start-up sequence shown in Figure 67.

    Regards,

  • Hello Ryan, thank you for your answer

    i can write and can read a value from the register, it is mean that I have correct connections with ADS1299. Device ID - "0x3E"

    Now, I want to check noise (Input shorted) - but receive from all channel - value  - 16776019 (+-1000)- it is not correct, but where can be the problem?

    You can see this process in the picture - for all channel - "input shorted"

    I set the next resister:

    CONFIG3, 0xE0;
    CONFIG1, 0x96;
    CONFIG2, 0xC0;
    0x04, 0x00;
    0x0D, 0xFF;
    0x0E, 0xFF;
    0x0F, 0x00;
    0x10, 0x00;
    0x11, 0x00;
    0x12, 0x00;
    0x13, 0x00;
    0x14, 0x0F;
    0x15, 0x00;
    0x16, 0x00;
    0x17, 0x00;
    CH1SET, 0x09;
    CH2SET, 0x09;
    CH3SET, 0x09;
    CH4SET, 0x09;
    CH5SET, 0x09;
    CH6SET, 0x09;
    CH7SET, 0x09;
    CH8SET, 0x09;

     

    My code in STM32 for contimuesly read data:

    send_command(RDATAC);

    send_command(START);

    while 1:{

    if (HAL_GPIO_ReadPin(DRDY_GPIO_Port, DRDY_Pin) == GPIO_PIN_RESET){
    HAL_GPIO_WritePin(GPIOD, CS_Pin, GPIO_PIN_RESET);
    for(int i = 0; i<9; i++){
    dataPacket = 0;
    for(int j = 0; j<3; j++){
    HAL_SPI_TransmitReceive(&hspi3,(uint8_t*)&test,(uint8_t*)&received_Byte,1,0x1000);
    dataPacket = (dataPacket<<8) | received_Byte;
    }
    output[i] = dataPacket;
    dataPacket = 0;
    }}

    //spi settings

    hspi3.Init.Direction = SPI_DIRECTION_2LINES;
    hspi3.Init.DataSize = SPI_DATASIZE_8BIT;
    hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;
    hspi3.Init.CLKPhase = SPI_PHASE_2EDGE;
    hspi3.Init.NSS = SPI_NSS_SOFT;
    hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;   // 250 kHz
    hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
    hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
    hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
    hspi3.Init.CRCPolynomial = 10;

    I use bipolar voltage

    VCAP1 = -1.2V

    VCAP2 = 0.001V

    VCAP3 = 4.2V

    VCAP4=-0.125V

    Status bits - 1100 0000 0000 0000 0000 0000‬

  • Hello Ildar,

    We cannot decode the SPI communication from the oscilloscope capture as shown. Also, channel 1 is labeled as "DIN" but I assumed you mean "DOUT" (pin labels are from the ADS1299 perspective).

    Are you reading back the register values to confirm they are written correctly?

    Note: It is not necessary to close the SRB2 switches for input-short measurements. The PGA input pins will be shorted internally to mid-supply, so you do not want the SRB2 pin voltage contending with this. Please set bit 3 to 0 in all CHnSET registers.

    Also, remember that the data output is in binary two's complement. Decimal values will range from -8,388,608 to +8,388,607 (-full-scale to +full-scale).

    Regards,

  • Hello Ryan, thank you for your reply. Yes, it is Dout.

    I read all register from ADS1299 and confirmed it. 

    I set CHnSET 

    CH1SET, 0x01;
    CH2SET, 0x01;
    CH3SET, 0x01;
    CH4SET, 0x01;
    CH5SET, 0x01;
    CH6SET, 0x01;
    CH7SET, 0x01;
    CH8SET, 0x01;

    But receive the same result (same picture in an oscilloscope). Should be - 0, but i receive  +8,387,607 (-+1000). It looks like the opposite.  Maybe need to replace ADS1299?

    VCAP1 = -1.2V

    VCAP2 = 0.001V

    VCAP3 = 4.2V

    VCAP4=-0.125V

    Status bits - 1100 0000 0000 0000 0000 0000‬

  • Ryan, sorry that distract, will you have some advice for us? because our work is stopped. We wait for your answer.


    Ildar

  • Hello Ildar,

    I do not see any obvious issues with your setup. Is the reference voltage correct? The voltage difference between VREFP and VREFN should be 4.5 V, and VREFN should be tied to AVSS.

    Regards,

  • Hello Ryan, thank you for your reply. Yes, of course, I checked it many times, reference voltage 4.46 V (between VREFP and VREFN ). In fact, I read many times ADS129x BIOFAQ  i made all recommendations that found. But the problem still exists. Now I made the new design for the board, this week I will check. But I afraid that can be the same problem.  

    Ryan please see the next photo - maybe you can see some problem here ( for all channel - "input shorted") s