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.

各位老师好,我想请教一下一个关于TMS320F28335的sci模块的细节问题,谢谢。



各位老师好,我目前在学习F28335的sci模块,使用RS232协议向串口调试助手发送字符。 我用的是最简单的查询方式,在初始化和相关配置方面没有问题。我采用的函数为scib_xmit 函数(具体的函数内容附在了最后)。  我连续用了多条语句,每条语句都只发送一个字符(调用一次这个函数)。为了方便说明,假设要发送的六个字符是 A B C D E F。 但是在单步调试的过程中,我发现,当执行完第一条发送语句后,发送缓冲寄存器ScibRegs.SCITXBUF的值确实变成了A的ASCII码值,但串口调试助手显示并没有接到任何内容;执行完第2条发送语句后,串口调试助手显示接收到了第1个字符A;当执行完第3条语句时,串口调试助手显示接收到了第2个字符B……,也就是说,串口调试助手接收到的字符总是滞后于这个字符所对应的语句。想请教一下各位老师 这是什么原因。

对照着这幅原理图,我个人猜测, 是不是发送移位寄存器的原因?是不是当执行完第一条发送语句时,字符A的ASCII码只是被从发送缓冲寄存器转移到了移位寄存器,但并没有从移位寄存器发出?然后当移位寄存器中有了新的数的时候(也就是第2条发送语句执行完之时),之前的值才被真正发送出去?

不知道我理解的对不对,请各位老师指教

使用的发送函数:

void scib_xmit ( int a )

{

ScibRegs.SCITXBUF=a;

while ( ScibRegs.SCICTL2.bit.TXRDY == 0 ) {}

}