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

CPU与DSP之间SCI通讯丢数据问题?

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

rookiecalf:

可以先降一下波特率,找找看有没有配置的问题

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

wei li20:

回复 rookiecalf:

谢谢你的回复,我试过降低波特率,但效果反而更糟,115200数据7分钟才错位,用2400数据1分钟不到就错位了,是串口不稳定吗?115200设置为0x28应该没有错吧?另外,有没有可能是硬件问题导致的或CCS3.3的问题?

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

rookiecalf:

回复 wei li20:

不觉得是ccs的问题,波特率有问题,那应该一直有问题,不会出现前面好,后面坏的现象。

不知道在错位后,现象是否持续。

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

wei li20:

回复 rookiecalf:

错位后,会保持一段时间稳定,但时间没有第一次稳定长,是不是SCI通讯已经丢失同步?不知道怎么来检查原因

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

wei li20:

回复 rookiecalf:

你好,我在SCI接收中断服务子程序中加了几句代码,延时了一点时间,数据就稳定了,请问这是什么原因

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

rookiecalf:

回复 wei li20:

wei li20

你好,我在SCI接收中断服务子程序中加了几句代码,延时了一点时间,数据就稳定了,请问这是什么原因

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

wei li20:

回复 wei li20:

我的代码就是一个简单的For循环延时,没有对传输造成影响,我想知道中断服务子程序运行时间是不是有什么规则?还是串口有些中断标志位会有时间需求才可以擦除?

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

Charles Ji:

回复 wei li20:

用串口助手发送时,每发一个数 ,延时一下  再发下一个数,就行了

求问这种情况,比如我用串口调试助手循环发11 22 33 44 55 这5组数据给DSP,然后在程序里写入a[5]这个数组进行读取,按理来说a[0]=11,a[2]=22,a[3]=33,a[4]=44,a[5]=55.而且应该一直保持不变,但过一段时间(时间有长有短),数组读数就会发生错位,而且错位位数不定,比如变成a[0]=44,a[2]=55,a[3]=11,a[4]=22,a[5]=33.请教大神,这是什么原因呢?我觉得是丢了数据导致赋值错位,我的波特率是115200,发送间隔10ms,没有用FIFO,用普通中断接收,换了好几种调试助手都没有用。大家觉得是DSP的问题还是串口芯片的问题还是CCS3.3的问题还是波特率误差的原因呢?这种现象是不是丢了数据呢?为什么会这样?

wei li20:

回复 Charles Ji:

就是发送间隔呗,我试过,没有用

赞(0)
未经允许不得转载:TI中文支持网 » CPU与DSP之间SCI通讯丢数据问题?
分享到: 更多 (0)