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.

ADS8661: Unable to confirm if the ADC is properly functioning

Part Number: ADS8661

Tool/software:

Hello,

I'm trying to read the device id of the ADC, below is the code for the for my microcontroller:

accelerometerCmdBuf[0] = 0xC9;
accelerometerCmdBuf[1] = 0x00;
accelerometerCmdBuf[2] = 0x00;
accelerometerCmdBuf[3] = 0x00;
SPI_CHD_CS_Clear();
SPI_CHD_CS_Set();
CORETIMER_DelayNs(500);
SPI_CHD_CS_Clear();
CORETIMER_DelayNs(20);
SPI4_WriteRead(&accelerometerCmdBuf[0], 4*sizeof(UINT8),&accelerometerDataBuf[0], 4*sizeof(UINT8));
SPI_CHD_CS_Set();
snprintf(uartBuffer, sizeof(uartBuffer), "Device ID: %02X %02X %02X %02X\r\n", accelerometerDataBuf[0], accelerometerDataBuf[1], accelerometerDataBuf[2], accelerometerDataBuf[3]);

The output for the above code varies as below:

Device ID: 01 00 00 00

Device ID: F6 00 00 00

Device ID: 00 00 00 00

Device ID: 05 00 00 00

These are the values I receive on random while i have received Device ID: 01 00 00 00 multiple times.

Apart from this, I've tried to configure the ADC for +/- 1.25 V external reference, the code for the same is below:
accelerometerCmdBuf[0] = 0xD0;
accelerometerCmdBuf[1] = 0x14;
accelerometerCmdBuf[2] = 0x00;
accelerometerCmdBuf[3] = 0x43;
SPI_CHD_CS_Clear();
SPI_CHD_CS_Set();
CORETIMER_DelayNs(500);
SPI_CHD_CS_Clear();
CORETIMER_DelayNs(20);
SPI4_Write(&accelerometerCmdBuf[0], 4*sizeof(UINT8));
SPI_CHD_CS_Set();

Is there anyway I can verify if this has been successfully be configured?

I have also tried to set the Data_VAL to a fixed pattern and below is the code:

accelerometerCmdBuf[0] = 0xD0;
accelerometerCmdBuf[1] = 0x10;
accelerometerCmdBuf[2] = 0x00;
accelerometerCmdBuf[3] = 0x06;
SPI_CHD_CS_Clear();
SPI_CHD_CS_Set();
CORETIMER_DelayNs(500);
SPI_CHD_CS_Clear();
CORETIMER_DelayNs(20);
SPI4_Write(&accelerometerCmdBuf[0], 4*sizeof(UINT8));
SPI_CHD_CS_Set();


accelerometerCmdBuf[0] = 0x00;
accelerometerCmdBuf[1] = 0x00;
accelerometerCmdBuf[2] = 0x00;
accelerometerCmdBuf[3] = 0x00;
SPI_CHD_CS_Clear();
SPI_CHD_CS_Set();
CORETIMER_DelayNs(500);
SPI_CHD_CS_Clear();
CORETIMER_DelayNs(20);
SPI4_WriteRead(&accelerometerCmdBuf[0], 4*sizeof(UINT8), &accelerometerDataBuf, 4*sizeof(UINT8));
SPI_CHD_CS_Set();

snprintf(uartBuffer, sizeof(uartBuffer), "Data_VAL : %02X %02X %02X %02X\r\n", accelerometerDataBuf[0], accelerometerDataBuf[1], accelerometerDataBuf[2], accelerometerDataBuf[3]);

Below Output for the fixed pattern:

Data_VAL: 00 00 00 00

Data_VAL: 0F FF FF FF

Although it does not alternate betweeen 0's & 1's, it happens randomly is this expected?

Below are my SPI configuration:

#define SPI4_CON_MSTEN (1 << _SPI4CON_MSTEN_POSITION)
#define SPI4_CON_CKP (0 << _SPI4CON_CKP_POSITION)
#define SPI4_CON_CKE (0 << _SPI4CON_CKE_POSITION)
#define SPI4_CON_MODE_32_MODE_16 (0 << _SPI4CON_MODE16_POSITION)
#define SPI4_CON_ENHBUF (1 << _SPI4CON_ENHBUF_POSITION)
#define SPI4_CON_MCLKSEL (0 << _SPI4CON_MCLKSEL_POSITION)
#define SPI4_CON_MSSEN (0 << _SPI4CON_MSSEN_POSITION)
#define SPI4_CON_SMP (1 << _SPI4CON_SMP_POSITION)


Kindly let me know where is it that I am going wrong, would appreciate a quick response.

Regards,
Fahad.