TMS320F2812通过SCIA向PC发送数据,PC用串口助手接收,PC接收总是延后2个字符。代码如下:
char *tmp;
tmp = "123456789";
Scia_Putstring(tmp, strlen_2812(tmp));
……………………………………
// ===========================================
void Scia_Putchar(unsigned char buf)
{
//while (SciaRegs.SCICTL2.bit.TXRDY == 0){}
while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
SciaRegs.SCITXBUF = buf;
}
// ============================================
void Scia_Putstring(const char * pBuf, unsigned int uLen)
{
unsigned int i;
for(i=0; i< uLen; i++)
{
if(pBuf == '\n')
{
Scia_Putchar('\r');
}
Scia_Putchar(pBuf);
}
}
单步执行:
(1)“1”和“2”后,串口助手收到字节为0;
(2)“2”发送完后,SCIFFTX的SCIFFTX位一直为1,表示发送FIFO内有数据。一直在while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}等待
(3)跳出while循环,发送“3”的时候,串口助手收到1;发送4的时候,收到2,依次类推。
(4)“8”和“9”总是收不到。
下图是“2”发送完的截图(CCS3.3)。
请教一下怎样才能让2812发送完单个字符后,PC端马上接收到? |