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.

ADS1293 SPI Interface with Tiva C Series TM4C1294

Other Parts Discussed in Thread: ADS1293EVM, ADS1293, TM4C1294NCPDT, MSP430F5529, MSP430F5229

Hi. I'm using a Tiva C Series TM4C1294 Launchpad to develop an SPI Interface with the ADS1293 on the ADS1293 EVM board. Both boards are connected via USB to a PC for receiving Power. I am using Pins 0,1,2,3 of Port D of the Launchpad to connect to Pins SDO,SDI, CSB and SCLK of the ADS1293EVM respectively.

I cannot say for sure if I am able to successfully write into the registers of the ADS1293 because when I try to read back a value, I get a value of 255. I now have no idea how to fix this.

The code for the Program is as follows:

#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];

//=================================================================================================================

 

void myDelay()

{SysCtlDelay(SysCtlClockGet()/3);}

void Delay_s(int n)

{int i;for(i=0;i<n;i++){

SysCtlDelay(SysCtlClockGet()/3);SysCtlDelay(SysCtlClockGet()/3);SysCtlDelay(SysCtlClockGet()/3);

SysCtlDelay(SysCtlClockGet()/3);SysCtlDelay(SysCtlClockGet()/3);SysCtlDelay(SysCtlClockGet()/3);

SysCtlDelay(SysCtlClockGet()/3);SysCtlDelay(SysCtlClockGet()/3);SysCtlDelay(SysCtlClockGet()/3);

SysCtlDelay(SysCtlClockGet()/3);SysCtlDelay(SysCtlClockGet()/3);SysCtlDelay(SysCtlClockGet()/3);}}

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; UARTprintf("Sent:\n");

for(ui32Index = 0; ui32Index < NUM_SSI_DATA; ui32Index++){

if (ui32Index==0){UARTprintf(" Address: %i \n",pui32DataTx[ui32Index]);}

else{UARTprintf(" Value: %i \n",pui32DataTx[ui32Index]);}

SSIDataPut(SSI2_BASE, pui32DataTx[ui32Index]);}

while(SSIBusy(SSI2_BASE)){}}

 

 

void SPIRead(uint32_t Addr){

UARTprintf("\nReceived:\n ");

while(SSIDataGetNonBlocking(SSI2_BASE, &pui32DataRx[0])){}

SSIDataPut(SSI2_BASE, (Addr|0x80));

while(SSIBusy(SSI2_BASE)){}

SSIDataGet(SSI2_BASE, &pui32DataRx[0]);

pui32DataRx[0] &= 0x00FF;

UARTprintf("Data Received: %i ", pui32DataRx[0]);}

 

int main(void)

{

#if defined(TARGET_IS_TM4C129_RA0) || defined(TARGET_IS_TM4C129_RA1) || defined(TARGET_IS_TM4C129_RA2)

uint32_t ui32SysClock;

#endif

 

 

#if defined(TARGET_IS_TM4C129_RA0) || defined(TARGET_IS_TM4C129_RA1) || defined(TARGET_IS_TM4C129_RA2)

ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_OSC), 25000000);

#else

SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);

#endif

InitConsole();

UARTprintf("SSI ->\n");

UARTprintf(" Mode: SPI\n");

UARTprintf(" Data: 8-bit\n\n");

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(0x03,0x01);

SPIWrite(0x02,0x19);

SPIWrite(0x0A,0x07);

SPIWrite(0x0C,0x04);

SPIWrite(0x12,0x04);

SPIWrite(0x14,0x24);

SPIWrite(0x21,0x02);

SPIWrite(0x22,0x02);

SPIWrite(0x23,0x02);

SPIWrite(0x27,0x08);

SPIWrite(0x2F,0x30);

//SPIWrite(0x00,0x01);

SPIRead(0x01);

SSIDisable(SSI2_BASE);

UARTprintf("\nEnd of Program...");

return 0;}

Please help.....