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通信时,SCI的FIFO模式的深度最大为16级,接收数据最大为16字符,我想要获取一个31字符的数据,请问该如何获取正确的数据?请问需要如何对我现有的代码进行修改?
/*
* SCIA接收中断服务函数
*/
interrupt void SciaRxFifoIsr(void)
{
int i = 0;
while(SciaRegs.SCIFFRX.bit.RXFFST!=1)
{
m[i] = SciaRegs.SCIRXST.all;
i++;
}
msg = "You just sent the following characters:\r";
Scia_msg(msg);
Scia_msg(m);
//
SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1;
SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;
PieCtrlRegs.PIEACK.bit.ACK9 = 1; //PIEACK:PIE中断应答寄存器
//X=1说明来自中断组的中断向量已经向CPU发送了中断请求,该中断组的其他中断项目目前被锁存;向相应的中断位写1,可以让该位清零,并且让PIE模块产生一个脉冲给CPU中断
//以使得CPU可以响应该组中断中尚未被相应的中断
}
楼上说的没有问题。在主循环中通过读取SCIRXBUF即可,因为是FIFO,所以每次读到的都是队列中最早进入队列的数据。
使用中断的话,可以设置FIFO的深度为10,即每接收10个字符进入一次FIFO中断;至于最后一个字符,可以通过在上一次接收中断中,重新配置深度/使能SCI 接收中断、或者主循环中轮询的方式等都可以来实现。