TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28035: 28035 的 SCI FIFO接收中断是否有BUG?

Part Number:TMS320F28035

设置FIFO接收深度为4级, 发送深度0级;

用串口调试助手发送数据 01 03 00 00 00 02 C4 0B 共8个bytes, 示波器波形如下图

上图中,第一个为串口调试助手发送数据, 第二个波形为DSP回复数据.

注意看第一个波形持续时间为4.52ms, 波特率为19200, 可以计算1/19200*11*8=4.583ms,这与示波器波形相符,说明发送数据正确;如果是12个字节的话1/19200*11*12 = 6.875ms,这两个时间差示波器能轻易区分.

再看CCS监测数据

reDtat为接收数据,完全正确

但是 reciveCounter 为进接收中断次数,串口助手发送8个字节按理应该进中断为 8 / 4 = 2次, 监测数据为进了3次;re_data_counter = 12, 12 = 4 * 3, 接收了12个数据, 每进一次中断都读取了FIFO有几个数据再读取;如下面这段代码

dataNum = mo->SCIFFRX.bit.RXFFIL;

for (i = 0; i < dataNum; i++)
{
    md->reDtat[md->re_data_counter] = mo->SCIRXBUF.all;
    md->re_data_counter++;
}

很明显串口调试助手只发送了8个数据,按理FIFO尝试为4级的情况下只需进2次中断读8个字节;而实际28035却进了3次中断,读取了12个字节。并且示波器监测发送数据完全正确,28035读取数据也完全正确。但是进的中断次数却错了。

因此,在串口助手发送前我把reDtat[9]~reDtat[11]的数值手动改成其他数据,再用串口助手发送同样的数据,果然reDtat[9]~reDtat[11] 全部变为0。也就是说SCI在接收完毕后,在没有数据的情况下多进了一次中断,多接收了4个数据,且数据全为0.

目前, 我没有找到原因, 请各位大侠帮忙,如果需要我可以奉上代码.

Green Deng:

你好,内容比较多,我整理了一下,大概意思是说:

F28035的SCI启用FIFO的情况下接收8个字节的消息进入了3次中断,而且最后一次中断接收的是全为00的4个数据。是这样吗?

上面概述没问题的话可能还是要给出一下SCI & FIFO的配置代码查看一下。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28035: 28035 的 SCI FIFO接收中断是否有BUG?
分享到: 更多 (0)