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/TMS320F280049: SPI LOOP back test fail

Part Number: TMS320F280049
Other Parts Discussed in Thread: C2000WARE

Tool/software: Code Composer Studio

Hi there,

I am trying to check the spi module of my control board using the loop back mode. I am attaching my code below. While running the same i am not getting the transmitted value on the receive buffer, if i go with continuous run mode there is no change in the register values, as if the program is not running. But when i tried with single step mode values of transmit buffer and SPIDAT is changing but not the value in receive buffer. I am beginner kindly pardon me for the simple mistakes in code if any. 

Thank you

#include "F28x_Project.h"

void main(void)
{
uint16_t tx =0x0000;
uint16_t rx =0x0000;

InitSysCtrl();

DINT;

InitPieCtrl();

IER = 0x0000;
IFR = 0x0000;

InitPieVectTable();
InitGpio();

EALLOW;

GpioCtrlRegs.GPAGMUX1.bit.GPIO9 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 3; // set Gpio pin 9 as SPI clock pin

GpioCtrlRegs.GPAGMUX1.bit.GPIO8 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 3; // set Gpio pin 8 as SPI SIMO pin

GpioCtrlRegs.GPAGMUX1.bit.GPIO10 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 3; // set Gpio pin 10 as SPI SOMI pin

EDIS;

SpiaRegs.SPICCR.bit.SPISWRESET = 0; // clear software reset bit
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1; // master mode selected
SpiaRegs.SPICTL.bit.CLK_PHASE = 0; // clock phase selection
SpiaRegs.SPICCR.bit.CLKPOLARITY = 0; // clock polarity
SpiaRegs.SPIBRR.bit.SPI_BIT_RATE = 4; //(25MHz/4)
SpiaRegs.SPICCR.bit.SPICHAR = 15; // character per transfer
SpiaRegs.SPISTS.bit.INT_FLAG = 0; // clear interrupt flag
SpiaRegs.SPISTS.bit.OVERRUN_FLAG = 0; // clear over run flag
SpiaRegs.SPIFFTX.bit.SPIFFENA = 1; // Enable FIFO mode
SpiaRegs.SPIFFTX.bit.TXFFINTCLR = 1;
SpiaRegs.SPIFFTX.bit.TXFIFO = 1;
SpiaRegs.SPIFFRX.bit.RXFFOVFCLR = 1;
SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;
SpiaRegs.SPIFFRX.bit.RXFIFORESET = 1;
SpiaRegs.SPIFFRX.bit.RXFFIL = 2;
SpiaRegs.SPIFFTX.bit.SPIRST = 1;

SpiaRegs.SPICCR.bit.SPILBK = 1; // loop back enable
SpiaRegs.SPICTL.bit.TALK = 1; // slave talk enabled
SpiaRegs.SPICTL.bit.SPIINTENA = 0; // interrupt enable


SpiaRegs.SPICCR.bit.SPISWRESET = 1; // software reset disabled

//SpiaRegs.SPIFFTX.all = 0xE040; // configure spia transmit registers
//SpiaRegs.SPIFFRX.all = 0x2044; // configure spia receive registers
//SpiaRegs.SPIFFCT.all = 0x0;


tx = 0x0010;

SpiaRegs.SPITXBUF = tx;

while(SpiaRegs.SPIFFRX.bit.RXFFST != 1)
{
}

rx = SpiaRegs.SPIRXBUF;

}