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

F28335 两个SCI接收中断之间丢数据

由于要接收很长的字符串,所以将接收的数据分段放在字符数组中,结果发现每一段之间都丢了一个字符,请问是什么原因呢?

HeiHei:

我觉得问题出在28335本身的可能性不大,更有可能的是你接受并将字符串存储在字符数组的这一处理程序中

如果方便,可以贴出你的代码,并描述下你的思路,大家一起看看

由于要接收很长的字符串,所以将接收的数据分段放在字符数组中,结果发现每一段之间都丢了一个字符,请问是什么原因呢?

js z:

回复 HeiHei:

interrupt void scib_isr(void)//接收gps数据中断程序{ int i;

gpsnum++;

for(i=gpsnum*16;i<((gpsnum+1)*16);i++) { tempgps[i]=ScibRegs.SCIRXBUF.all; } if(gpsnum>13) { gpsnum=0; }

ScibRegs.SCIFFRX.all=0x607E; PieCtrlRegs.PIEACK.all|=PIEACK_GROUP9; }

//初始化

void scib_init(){ ScibRegs.SCICCR.all =0x0007; ScibRegs.SCICTL1.all=0x0003; ScibRegs.SCICTL2.all=0x0003; ScibRegs.SCICTL2.bit.TXINTENA=1; ScibRegs.SCICTL2.bit.RXBKINTENA=1;

#if(CPU_FRQ_150MHZ)

ScibRegs.SCIHBAUD=0x0001; ScibRegs.SCILBAUD=0x00E7;//9600 #endif

#if(CPU_FRQ_100MHZ) ScibRegs.SCIHBAUD=0x0001; ScibRegs.SCILBAUD=0x0044; #endif

ScibRegs.SCICTL1.all=0x0023; }

void scib_fifo_init(){ //enable SCI FIFO enhancements,disable TXFFIENA ScibRegs.SCIFFTX.all=0xE040; //disable RXFFIENA ScibRegs.SCIFFRX.all=0x607B; //0 FIFO transfer delay ScibRegs.SCIFFCT.all=0x0;

}

用了fifo,在接收类似$GPRMC,023543.00,A,2308.28715,N,11322.09875,E,0.195,,240213,,,A*78数据时,每次中断的第一位就没有了,这样数据就不完整了。

请大神看看sci设置是否有问题,还是用fifo的中断法只能接收16个字符的数?

赞(0)
未经允许不得转载:TI中文支持网 » F28335 两个SCI接收中断之间丢数据
分享到: 更多 (0)