I am trying to develop an SPI interface with the ADS1293 on the ADS1293 EVM using the Tivaware C Series TM4C1294XL board. I have removed JP3 from the ADS1293EVM and have connected it by an external 5V Battery, thereby avoiding the MSP microcontroller on the ADS1293EVM board. However, I am getting a value of zero every time I try to read from a register. My code is as follows. Any help would be highly appreciated :
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "drivers/pinout.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "driverlib/ssi.h"
#include "inc/tm4c1294ncpdt.h"
// VARIABLE DECLARTATIONS
//=================================================================================================================
#define NUM_SSI_DATA 2
uint32_t ui32Loop,ui32Index;
uint32_t pui32DataTx[NUM_SSI_DATA];
uint32_t pui32DataRx[NUM_SSI_DATA];
#if defined(TARGET_IS_TM4C129_RA0) || defined(TARGET_IS_TM4C129_RA1) || defined(TARGET_IS_TM4C129_RA2)
uint32_t ui32SysClock;
#endif
//=================================================================================================================
void InitConsole(void){
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
UARTStdioConfig(0, 115200, 16000000);
}
void SPIWrite(uint32_t Addr,uint32_t Val){
while(SSIDataGetNonBlocking(SSI2_BASE, &pui32DataRx[0])){}
pui32DataTx[0]=Addr;pui32DataTx[1]=Val;
SSIDataPut(SSI2_BASE, pui32DataTx[0]);
SSIDataPut(SSI2_BASE, pui32DataTx[1]);
while(SSIBusy(SSI2_BASE)){}
}
void SPIRead(uint32_t Addr){
while(SSIDataGetNonBlocking(SSI2_BASE, &pui32DataRx[0])){}
SSIDataPut(SSI2_BASE, (Addr|0x80));
SSIDataGet(SSI2_BASE, &pui32DataRx[0]);
while(SSIBusy(SSI2_BASE)){}
UARTprintf("Data Received: %i ", pui32DataRx[0]);
}
void main(void){
#if defined(TARGET_IS_TM4C129_RA0) || defined(TARGET_IS_TM4C129_RA1) || defined(TARGET_IS_TM4C129_RA2)
ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_OSC), 25000000);
#else
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
#endif
InitConsole(); // Function for Initializing the UART Protocol
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);
GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);
GPIOPinConfigure(GPIO_PD2_SSI2FSS);
GPIOPinConfigure(GPIO_PD3_SSI2CLK);
GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1 | GPIO_PIN_0);
#if defined(TARGET_IS_TM4C129_RA0) || defined(TARGET_IS_TM4C129_RA1) || defined(TARGET_IS_TM4C129_RA2)
SSIConfigSetExpClk(SSI2_BASE, ui32SysClock, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 1000000, 8);
#else
SSIConfigSetExpClk(SSI2_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 1000000, 8);
#endif
SSIEnable(SSI2_BASE);
SPIWrite(0x00,0x00);
SPIWrite(0x01,0x11);
SPIWrite(0x00,0x01);
SPIRead(0x01);
SSIDisable(SSI2_BASE);
UARTprintf("\nEnd of Program...");
}