Hi...i'm interfacing external adc (LTC2452 ) interface with tm4c123gh6pz through SPI communication..but i'm not able to see the output...please check my code if i have done any mistake in configuration...
#include <string.h>
#include "inc/lm4f232h5qc.h"
#include <stdio.h>
#include "inc/hw_memmap.h"
#include "driverlib/pin_map.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"
#include "utils/softssi.h"
#include "utils/uartstdio.h"
#include "driverlib/rom.h"
#include "driverlib/ssi.h"
#include "inc/hw_gpio.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#define GPIO_PD0_SSI1CLK 0x00030002
#define GPIO_PD1_SSI1FSS 0x00030402
#define GPIO_PD2_SSI1RX 0x00030802
//#define GPIO_PD3_SSI1TX 0x00030C02
#define NUM_SSI_DATA 1
void Setup_SSI(void);
int readdata(void);
unsigned long int ulDataTx[NUM_SSI_DATA]; // An array of 4 data bytes to be Tx
unsigned long int ulDataRx[NUM_SSI_DATA]; // An array of 4 data bytes to be Rx
unsigned long int ulindex1;
int key;
unsigned long int Raw_Value1 ;
float ADC_Conv = 0.0000762939453125; //ref = 5, 12bit
long adcdata;
float volts;
int main(void)
{
/*Configures the system clock, the lm4f232h5qc has a 8MHz crystal onboard*/
SysCtlClockSet(SYSCTL_SYSDIV_1| SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ);
Setup_SSI();
while(1)
{
adcdata = readdata();
volts = adcdata * ADC_Conv;
}
}
void Setup_SSI(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
// The SSI0 peripheral is on Port A and pins 2,3,4 and 5.
// Enable GPIO port A
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
// This function/s configures the pin muxing on port A pins 2,3,4 and 5
// It uses the values DEFINED at the top of the program and takes 1 parameter
GPIOPinConfigure(GPIO_PD0_SSI1CLK);
GPIOPinConfigure(GPIO_PD1_SSI1FSS);
GPIOPinConfigure(GPIO_PD2_SSI1RX);
// Configures the pins for use by the SSI, takes 2 parameters
GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_2|GPIO_PIN_0);
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_1);
// Configures the SSI port for SPI master mode, it takes 6 parameters
SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,
SSI_MODE_MASTER, SysCtlClockGet()/4, 16);
// Enables the SSI0 module
//GPIOPinWrite(GPIO_PORTK_BASE, GPIO_PIN_1, 0x02);
SSIEnable(SSI1_BASE);
}
int readdata(void)
{
ulDataTx[0] = 0x0000;
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0x00);
for(ulindex1 = 0; ulindex1 < NUM_SSI_DATA; ulindex1++)
{
SSIDataPut(SSI1_BASE, ulDataTx[ulindex1]);
while(SSIBusy(SSI1_BASE)){}
SSIDataGet(SSI1_BASE, &ulDataRx[ulindex1]);
}
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0x02);
ulDataRx[0] &= 0xffff;
Raw_Value1 = ulDataRx[0];
return(Raw_Value1);
}
Thanks in advance