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.

SPI out for C28xx controller chip

I am getting the above result as an output of the data out pin, the manual says that the clk out will stop when the data output is over. But in my case it is continuous.

the code is as below:

#include "DSP28x_project.h"
#include "dsp2834x_cputimers.h"
#include "dsp2834x_gpio.h"
#include "DSP2834x_spi.h"



void delay_loop(void);
void spi_xmit(Uint16 a);
void spi_fifo_init(void);
void spi_init(void);
void error(void);

void main(void)
{
    int16 sdata1,sdata2;  // send data
    int16 rdata;// received data

    InitSysCtrl();
    InitSpiaGpio();
    DINT;
    SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1;
    //GpioCtrlRegs.GPAMUX2.all =0xFFFF;
     InitPieCtrl();
     IER = 0x0000;
        IFR = 0x0000;
        InitPieVectTable();
        EALLOW;
        spi_fifo_init();      // Initialize the Spi FIFO
           spi_init();          // init SPI
           sdata1 = 0x8017;
           sdata2 = 0xF001;
           SpiaRegs.SPIBRR=50;
              for(;;)
              {
                // Transmit data
                SpiaRegs.SPICTL.bit.TALK=1;
                spi_xmit(sdata1);
                delay_loop();

                while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
                                // Check against sent data
                                rdata = SpiaRegs.SPIRXBUF;
                            if(rdata != sdata1) error();
                                sdata1++;
                                spi_xmit(sdata2);

                                // Wait until data is received
                            while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
                                // Check against sent data
                                rdata = SpiaRegs.SPIRXBUF;

                            if(rdata != sdata2) error();
                                sdata2++;
              }



}


void delay_loop()
{
    long      i;
    for (i = 0; i < 1000000; i++) {}
}


void error(void)
{
    asm("     ESTOP0");                        // Test failed!! Stop!
    for (;;);
}

void spi_init()
{
    SpiaRegs.SPICCR.all =0x000F;                 // Reset on, rising edge, 16-bit char bits
    SpiaRegs.SPICTL.all =0x0006;                 // Enable master mode, normal phase,
                                                 // enable talk, and SPI int disabled.
    SpiaRegs.SPIBRR =0x007F;
    SpiaRegs.SPICCR.all =0x009F;                 // Relinquish SPI from Reset
    SpiaRegs.SPIPRI.bit.FREE = 1;                // Set so breakpoints don't disturb xmission
}

void spi_xmit(Uint16 a)
{
    SpiaRegs.SPITXBUF=a;
}

void spi_fifo_init()
{
// Initialize SPI FIFO registers
    SpiaRegs.SPIFFTX.all=0xE040;
    SpiaRegs.SPIFFRX.all=0x204f;
    SpiaRegs.SPIFFCT.all=0x0;
}