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.

ADS7953: ADS7953 get bad datas in AUTO-1 mode

Part Number: ADS7953

I use ADS7953 in AUTO-1 mode( all channels ), but receive the data as blow :


340
1710
2703
374f
481e
5838
63a8
7810
8782
8718
838a
180
c330
c182
e381
f180

My code is :

        // Request next frame to enter programming mode for Auto Mode 1
	spi1_send_data(ADS79XX_PROG_AUTO1);

       // Program Auto Mode 1 Channel Sequence to include all channels
	spi1_send_data(AUTO1_ALL_CHAN_ENABLE);

       // Program Auto Mode 1 Range and configuration settings
	spi1_send_data(ADS79XX_AUTO_MODE1 | AUTO1_PROG_ENABLE | AUTO1_CHAN_COUNT_RESET | AUTO1_5VRANGE_SEL | AUTO1_NORM_OP_SEL | AUTO1_CHAN_ADDY_SEL);

	while(1)
	{
		res = spi1_send_data(0x0000);      // send to ADS7953
		printf("%x\n",res);
		delay_ms(2000);		 			   
	} 

Why do I have the wrong data? Please help me, thanks!

  • The right data that getting from ADS7953 in AUTO-1 mode is:
    0xxx
    1xxx
    2xxx
    3xxx
    4xxx
    5xxx
    6xxx
    7xxx
    8xxx
    9xxx
    Axxx
    Bxxx
    Cxxx
    Dxxx
    Exxx
    Fxxx
  • Hello user3681320

    This could be issue related to timing mismatch between SPI signals. Can you capture SDI/CS/SCLK/SDO signals on scope and share the details.

    One more way to validate if it is a timing related issue is to set device is manual mode and repeatedly monitor only one channel (preferrably channel on which you are getting incorrect data). Data you get back from ADC should be same in each case. If it is not then it is timing related issue

    Thanks & Regards

    Abhijeet

  • Hello, Abhijeet Godbole!

    I have resolved the problem because of the power on my board.

    But now I have a new problem, I receive data from ADS7953 like this:

    xxxx ( first I get this one after ADS7953 initialization )
    0xxx
    1xxx
    2xxx
    3xxx
    4xxx
    5xxx
    6xxx
    7xxx
    8xxx
    9xxx
    Axxx
    Bxxx
    Cxxx
    Dxxx
    Exxx
    Fxxx

    0xxx
    1xxx
    2xxx
    3xxx
    4xxx
    5xxx
    6xxx
    7xxx
    8xxx
    9xxx
    Axxx
    Bxxx
    Cxxx
    Dxxx
    Exxx
    Fxxx

    ...

    My Code is:

    // Request next frame to enter programming mode for Auto Mode 1
    spi1_send_data(ADS79XX_PROG_AUTO1);
    
     
    // Program Auto Mode 1 Channel Sequence to include all channels
    spi1_send_data(AUTO1_ALL_CHAN_ENABLE);
    
     
    // Program Auto Mode 1 Range and configuration settings
    spi1_send_data(ADS79XX_AUTO_MODE1 | AUTO1_PROG_ENABLE | AUTO1_CHAN_COUNT_RESET | AUTO1_5VRANGE_SEL | AUTO1_NORM_OP_SEL | AUTO1_CHAN_ADDY_SEL);
    
     
    while(1)
    {
        res = spi1_send_data(0x0000);      // first I get xxxx ( only  once )
        printf("%x\n",res);  
        delay_ms(2000);                    
    }

    Why do I get the xxxx  in the beginning?  Please help me, thanks!

  • Hello

    First conversion after power up or reset is invalid and should be ignored. Please refer to electrical char table specs on page12 fo datasheet for more information

    Thanks

    Abhijeet

  • Hello Abhijeet Godbole

    Now I see, Thanks!