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. 

