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.