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.....