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.