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.

28335中断FIFO接收问题



使用FIFO模式,用中断发送数据,和中断接受数据,实现串口助手和28335的数据通信,实现目标串口助手发送固定格式的数据,28335接收到返回给串口助手。

现在出现这样的问题:

串口助手发送$M01TOS02,>TRAEND,#指令

接收缓存里面接收到的是$M01TOS02,>T 这部分,在发送一次接收到时RAEND,#$M01TOS02,>T 这部分,现在整个缓存里面的数据是$M01TOS02,>TRAEND,#$M01TOS02,>T 这样的,

请问这是什么原因造成的

  • 你好,你的意思是总共要发送19个字符,第一次发送的是前12个,第二次发送的是后7个+前12个的组合,之后每次都是后7个+前12个的组合?
    这似乎也不是溢出的问题。你是自己编写的程序吗?还是用例程修改的?方便贴一下主要的程序代码吗?
  • 对的 就是这样的 之后每次接收的都是7个+12个的数据组合
    就是修改的例程
    下面是中断接收程序
    interrupt void Scia_RxFifoIsr(void)
    {
    SciaRx_Start_Index%=Scibuff_Data_Length;
    Rxa_Fifo_Buf[SciaRx_Start_Index++]=SciaRegs.SCIRXBUF.all;
    SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
    SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
    PieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ack

    }

    初始化

    void scia_fifo_init()
    {
    SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback // No parity,8 char bits,// async mode, idle-line protocol
    SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,使能接受和发送

    SciaRegs.SCICTL2.bit.TXINTENA =1;
    SciaRegs.SCICTL2.bit.RXBKINTENA =1;
    SciaRegs.SCIHBAUD = 0x01; //波特率高位
    SciaRegs.SCILBAUD = 0xE7; //波特率地位

    SciaRegs.SCIFFTX.all=0xC028;
    SciaRegs.SCIFFRX.all=0x0028;
    SciaRegs.SCIFFCT.all=0x00;

    SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
    SciaRegs.SCIFFTX.bit.TXFIFORESET=1;
    SciaRegs.SCIFFRX.bit.RXFIFORESET=1;
    }

  • 请你看一下,我的接收程序,哪里有问题,谢谢