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.

SCI : Higher nibble going wrong in transmission to hyper terminal



Hello,

Below is background:

1. Sci_echoback example is working all OK with my hyper-terminal.

2. I have Uart driver (Interrupt based, FIFO enabled to full - 4 regs in my chip) which works all great in LOOPBACK mode with following HW settings.

SciaRegs.SCICCR.all = 0x0007;
SciaRegs.SCICCR.bit.LOOPBKENA = 1;
SciaRegs.SCICTL2.bit.TXINTENA = 1;
SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = SCI_PRD;
SciaRegs.SCIFFTX.all = 0xC020;
SciaRegs.SCIFFRX.all = 0x0024;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.all = 0x0023;
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;

Now, I want to test this driver with hyper terminal by disabling LOOPBACK mode.

Issue: After I do this, I am facing a strange problem - Higher nibble (MSB 4 bits) of byte (8 bit data) is going wrong. Lower nibble (4 bits LSB) is transmitted and received correctly.

When doing TX (from controller) : Higher nibble is getting right shifted by 1 and 1 is added at MSB (shift is only at higher nibble, incase 1st bit of nibble is set after shift it will shift 4th bit of lower nibble but not further shift in LSB)

e.g.

0x61 ==> 0x81

33 ==> 9B

70 ==> B8

 F0 ==> F8

78 ==> B8

When doing RX (to controller) : When we send data from hyper terminal to controller almost reverse pattern of above behavior is being done.

Now, Left shift of higher nibble by 1 and LSB (of higher nibble) is set as 0. Lower nibble is always remains unaffected here but higher nibble is wrong.

0x61 ==> 0xC1

0x62 ==> 0xC2

0x70 ==> 0xE0

0x41 ==> 0x81

Is there something I missed in settings? anyone else, please give some clues...

Thanks, 

Varun

Update: I get framing error atleast for recieve... RXST register is 0000000010010010