Hi!
In have my SCI setup with RX interrupt, no TX interrupt and no FIFO. The RX part is fine, however I can't TX out more than 2 bytes. Here are my initial settings:
SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.
SciaRegs.SCILBAUD =0x00E7;
SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
My TX out part:
SciaRegs.SCITXBUF=0x55;
SciaRegs.SCITXBUF=0x56;
SciaRegs.SCITXBUF=0x57;
SciaRegs.SCITXBUF=0x58;
The resulting output is:0x56 and 0x58. Watching the SCICTL2 register, I can see the following sequence:
-After writing 0x55 into TXBUF, TXRDY asserts
-After writing 0x56 into TXBUF, TXRDY de-asserts
-After writing 0x57 into TXBUF, SCICTL2 doesn't change
-After writing 0x58 into TXBUF, SCICTL2 doesn't change
Clearly, it is something important which I have overlook in the SCI datasheet. It would be great if someone would point my the right direction. Thank you.