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.

CCS/TM4C1294NCPDT: Not able to observe the transmitting data in UART console using SPI Communication

Part Number: TM4C1294NCPDT

Tool/software: Code Composer Studio

Hii,

I am using TM4C1294NCPDT part number and Code Composer Studio.. My Launchpad is acting as Master and as well as Slave also..

Master pin configuration is:

PA2 -------------- SSI0CLK

 PA3 ----------- SSI0FSS

 PA4 ------------ SSI0XDAT0          // MOSI

 PA5 ------------- SSI0XDAT1        // MISO

 Slave pin configuration is:

PD3 -------------- SSI0CLK

 PD2 ----------- SSI0FSS

 PD1 ------------ SSI0XDAT0          // MOSI

 PD0 ------------- SSI0XDAT1        // MISO

I am not able to observe the data in UART console but in console it is showing  "FAILED"....

Kindly go through the below code.. Is there any new things to add..

 

#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/ssi.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "utils/uartstdio.c"

#define NUM_SSI_DATA 15

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 ssi_init(void)
{
	uint32_t ui32SysClkFreq;
	uint32_t temp;

    ui32SysClkFreq = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |                                               SYSCTL_CFG_VCO_480), 120000000);

///////////// Master  ///////////////////////////////////

    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    GPIOPinConfigure(GPIO_PA2_SSI0CLK);
    GPIOPinConfigure(GPIO_PA3_SSI0FSS);
    GPIOPinConfigure(GPIO_PA4_SSI0XDAT0);
    GPIOPinConfigure(GPIO_PA5_SSI0XDAT1);
    GPIOPinTypeSSI(GPIO_PORTA_BASE,GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2);

    SSIConfigSetExpClk(SSI0_BASE, ui32SysClkFreq, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 10000, 8);
    SSIEnable(SSI0_BASE);

/////////// Slave  /////////////////////////////////////

    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);  
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); 

    GPIOPinConfigure(GPIO_PD3_SSI2CLK);
    GPIOPinConfigure(GPIO_PD2_SSI2FSS);
    GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);
    GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);
    GPIOPinTypeSSI(GPIO_PORTD_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

    SSIConfigSetExpClk(SSI2_BASE, ui32SysClkFreq, SSI_FRF_MOTO_MODE_0, SSI_MODE_SLAVE, 10000, 8);
    SSIEnable(SSI2_BASE);
}


void main(void)
{
    uint32_t ui32Index;
    uint32_t ui32Data;
    char spi_data_received_back[NUM_SSI_DATA];
    uint32_t spi_received_char;
    const char spi_test_command[NUM_SSI_DATA] = {"This is a test\0"};
    bool pass_or_fail;

    InitConsole();
    ssi_init();

    memset(spi_data_received_back, '\0', NUM_SSI_DATA);


    for(ui32Index = 0; ui32Index < NUM_SSI_DATA; ui32Index++)
    {
		ui32Data = spi_test_command[ui32Index];
		SSIDataPut(SSI0_BASE, ui32Data);

        // SSIDataGet waits until a character is received

		SSIDataGet(SSI0_BASE, &spi_received_char); // Dummy read to empty master rx buffer
		SSIDataGet(SSI2_BASE, &spi_received_char); // Get data from slave rx buffer
		UARTprintf("Data = %c\n",spi_received_char);
		SSIDataPut(SSI2_BASE, spi_received_char);  // send back to master

		spi_data_received_back[ui32Index] = (char)spi_received_char;
    }

    if(strcmp(spi_test_command, spi_data_received_back) == 0)
    {
        pass_or_fail = 1;
        UARTprintf("\n\rPASSED\n\r");
    }
    else
    {
        pass_or_fail = 0;
        UARTprintf("\n\rFAILED\n\r");
    }

}

Thanks & Regards,

Venkatadri