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.

这是example_2806xSci_Echoback.c的一段程序,有不理解的地方,还望指点一二

Other Parts Discussed in Thread: C2000WARE, CONTROLSUITE

 msg = "\r\n\n\nHello World!\0";
    scia_msg(msg);
    msg = "\r\nYou will enter a character, and the DSP will echo it back! \n\0";
    scia_msg(msg);
 for(;;)
    {
       msg = "\r\nEnter a character: \0";
       scia_msg(msg);
       // Wait for inc character
       while(SciaRegs.SCIFFRX.bit.RXFFST !=1) { } // wait for XRDY =1 for empty state
       // Get character
       ReceivedChar = SciaRegs.SCIRXBUF.all;
       // Echo character back
       msg = "  You sent: \0";
       scia_msg(msg);
       scia_xmit(ReceivedChar);
       LoopCount++;
    }
我实验之后的结果为:
发送第一段字符时,会按照程序运行,再发送一段字符时,不会按照程序进行
我需要发送一串字符,他会循环接收这串字符,而不是单纯的一个字节,
这段程序具体的含义是什么?为什么只能接收一次呢?
  • 这是我再次运行的结果,如果我发送3位,该如何修改呢?

  • 这段程序就是你这边发送一个字符,然后DSP会将你发送的字符再返回给你。发送的只是你输入的第一个字符,所以返回的也只有第一个。
    你的这段程序是在哪里编译的?是CCS吗?
  • 是的,28069的FIFO的深度是4级,而我需要接收8个字节,目前程序只能接收4个,可目前我还是不知道该怎么去正确修改。有点儿苦恼!
  • 如果你想一次移动2个或更多的字符,那么还是需要用到FIFO,且需要修改下面两处代码:
    FIFO init like SciaRegs.SCIFFTX ...
    FIFO ISR inclusions
    参考下面例程,这里发送一个数据流,然后与接收的数据流进行比较。一次发送和接收两个字的数据。
    C2000Ware\device_support\f2806x\examples\c28\scia_loopback_interrupts
    C2000Ware\device_support\f2806x\examples\c28\scia_loopback
    也可以参考controlSUITE对应位置的例程:C:\ti\controlSUITE\device_support\f2806x\v151\F2806x_examples_ccsv5\...