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.

28032的SCI通信乱码

哪位能帮我看下sci通讯发送出来的数据是乱码,找了好久都不知道是哪里出错了。外部晶振20MHZ,波特率设置的是115200

InitPll(6,2);

SysCtrlRegs.LOSPCP.all = 0x0002;

int main(void)
{
char *msg;
InitSysCtrl();
InitSciaGpio();
DINT;
InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();

EALLOW;
PieVectTable.SCIRXINTA = &sciarx_isr;

EDIS;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
IER |= M_INT9;
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
EINT;
ERTM;

scia_echoback_init(); // Initalize SCI for echoback
scia_fifo_init(); // Initialize the SCI FIFO

for(;;)
{
msg = "\r\n0123456789\n\0";
scia_msg(msg);
DSP28x_usDelay(4000000);
}
return 0;
}
void scia_echoback_init()
{

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.TXINTENA =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;

SciaRegs.SCIHBAUD =0x0000; // 9600 baud @LSPCLK = 15MHz (60 MHz SYSCLK).
SciaRegs.SCILBAUD =0x000F;//0x0F(115200)

SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}

// Transmit a character from the SCI
void scia_xmit(int a)
{
// while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
while (SciaRegs.SCICTL2.bit.TXEMPTY == 0) {}
SciaRegs.SCITXBUF=a;

}

void scia_msg(char * msg)
{
int i;
i = 0;
while(msg[i] != '\0')
{
scia_xmit(msg[i]);
i++;
}
}

// Initalize the SCI FIFO
void scia_fifo_init()
{
// SciaRegs.SCIFFTX.all=0xE040;
// SciaRegs.SCIFFRX.all=0x2044;
// SciaRegs.SCIFFCT.all=0x0;
SciaRegs.SCIFFTX.all = 0x8000;
}
char Scia_recvchar()
{
return SciaRegs.SCIRXBUF.all;
}
interrupt void sciarx_isr()
{
data = Scia_recvchar();
PieCtrlRegs.PIEACK.all |= M_INT9;
}