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/TMS320F28069: SCI-B Receive Problem

Part Number: TMS320F28069

Tool/software: Code Composer Studio

Hello,

I configured SCI-B to work as 8-N-1 250K. In transmitting there is no problem, but when I try to receive anything, nothing comes to the buffer. 

Here is my code and settings of SCI-B.

//
    //Set Low Peripheral Clock to 90 MHZ
    //LOSPCP = SYSCLOCK / 1;
    //
    EALLOW;
    SysCtrlRegs.LOSPCP.all = 0;
    EDIS;

void scib_fifo_init(void)
{
    //
    // 1 stop bit,  No loopback, No parity,8 char bits, async mode,
    // idle-line protocol
    //
    ScibRegs.SCICCR.all =0x0007;
    //
    // enable TX, RX, internal SCICLK, Disable RX ERR, SLEEP, TXWAKE
    //
    ScibRegs.SCICTL1.all =0x0003;
    ScibRegs.SCICTL2.bit.TXINTENA =0;           // No TX Interrupt
    ScibRegs.SCICTL2.bit.RXBKINTENA =0;         // No RX Interrupt
    //
    // 250000 baud @LSPCLK = 90MHz (90 MHz SYSCLK)    90M /(250K * 8) - 1 = 44
    //
    ScibRegs.SCIHBAUD = 0x0000;
    ScibRegs.SCILBAUD = SCI_PRD;
    ScibRegs.SCICCR.bit.LOOPBKENA =0;   // Disable loop back
    ScibRegs.SCIFFTX.all=0xE040;
    ScibRegs.SCIFFRX.all=0x0042;
    ScibRegs.SCIFFCT.all=0x0;

    ScibRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset
    SciaRegs.SCIFFRX.bit.RXFIFORESET=1;
    SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;

}

void ScibGpio(void)
{
    EALLOW;

    //
    // Enable internal pull-up for the selected pins
    // Pull-ups can be enabled or disabled disabled by the user.
    // This will enable the pullups for the specified pins.
    //
    //GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up for GPIO19 (SCIRXDB)
    GpioCtrlRegs.GPBPUD.bit.GPIO44 = 0;
    GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pull-up for GPIO14 (SCITXDB)

    //
    // Set qualification for selected pins to asynch only
    // Inputs are synchronized to SYSCLKOUT by default.
    // This will select asynch (no qualification) for the selected pins.
    //
    //GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3;  // Asynch input GPIO19 (SCIRXDB)
    GpioCtrlRegs.GPBQSEL1.bit.GPIO44 = 3;  // Asynch input GPIO44 (SCIRXDB)

    //GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2;
    GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 2;
    GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 2;

    EDIS;
}

This is the receiver function, but the compiler stuck in line;  while(ScibRegs.SCIFFRX.bit.RXFFST == 0)

void sciReceive(Uint32 length, Uint8 * data)
{

    while(ScibRegs.SCIFFRX.bit.RXFFST == 0)
    {

    }
    //
    // Check received character
    //
    while (length--)
    {
        *data = ScibRegs.SCIRXBUF.all;
        data++;
    }
}

I made sure that the coming signal is ok by logic analyzer. 

Here is the response can be seen from the device. 4 Bytes 0x00 Data. 

And Here is the SCI-B Registers