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.

[参考译文] CCS/TMS320F28027F:SCI 接收

Guru**** 2341440 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/585758/ccs-tms320f28027f-sci-receive

器件型号:TMS320F28027F
Thread 中讨论的其他器件:controlSUITEC2000WARE

工具/软件:Code Composer Studio

我使用 C2000 piccolo launchpad (28027F)进行 sci 通信。 首先 、我从 controlSUITE 中导入了 sci ecoback 示例、运行正常。 它从计算机键盘获取输入作为 C2000 Launchpad 的 Rx 信号。 但是、当我将信号从 Raspberry PI TX 引脚发送到 C2000 launchpad Rx 引脚时、它不会接收。 我需要在 sci 配置寄存器中进行哪些更改。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要确保针对您正在使用的 SCI 引脚的器件正确连接 TX/RX 引脚。 您还需要确保两者使用相同的波特率。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的建议。

    但我仍然无法在 C2000 Launchpad (28027F)的 Rx 引脚上获取信号

    寄存器配置如下:

    void scia_init()

      //注意:SCIA 外设的时钟被打开

      //在 InitSysCtrl()函数中

      SciaRegs.SCICCR.all =0x0007; // 1停止位, 无回路

                     //无奇偶校验,8个字符位,

                     //异步模式,空闲线协议

      SciaRegs.SCICTL1.all =0x0003; //启用 TX、RX、内部 SCICLK、

                     //禁用 RX ERR、睡眠、TXWAKE

      SciaRegs.SCICTL1.bit.RXENA=1;

      SciaRegs.SCICTL1.bit.TXENA=1;

      SciaRegs.SCICTL2.all =0x0003;

      SciaRegs.SCICTL2.bit.TXINTENA=1;

      SciaRegs.SCICTL2.bit.RXBKINTENA=1;

      // SCI BRR = LSPCLK/(SCI BAUDx8)- 1.

      SciaRegs.SCIHBAUD  = 0x0000; // 250K @ LSPCLK = 10MHz

      SciaRegs.SCILBAUD  = 0x0004;

      SciaRegs.SCICTL1.all =0x0023; //从复位中撤回 SCI

    void sciSend (uint32长度、uint8 *数据)

      while ((length--)>0U)

      {

        // while (SciaRegs.SCIFFTX.bit.TXFFST!= 0){}

        // SciaRegs.SCITXBUF=*data;

        //*DATA++;

       while (SciaRegs.SCICTL2.bit.TXRDY=0){}

       SciaRegs.SCITXBUF=*data;

       *DATA++;

      }

    空 sciReceive (uint32 length,uint8 * data)

      while ((length--)>0U)

      {

       // while (SciaRegs.SCIFFRX.bit.RXFFST!=1){}

       // while (SciaRegs.SCIFFRX.bit.RXFFST=0){}

       //*数据=(uint8)(SciaRegs.SCIRXBUF.All);

       //*数据++;

      // SciaRegs.SCICTL1.bit.SWRESET=0;

        while (SciaRegs.SCIRXST.bit.RXRDY!= 1){}

        //while (SciaRegs.SCIRXST.bit.RXRDY=0){}

       *data=(uint8)(SciaRegs.SCIRXBUF.all);

       *DATA++;

      }

    void scia_fifo_init()

      SciaRegs.SCIFFTX.All=0xE040;

      SciaRegs.SCIFFRX.All=0x2044;

      SciaRegs.SCIFFCT.All=0x0;

    发送功能工作正常。

    请帮助我找出接收不起作用的原因。 它实际上在高亮显示的行停止。

    提前感谢您。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请使用振荡器确保数据到达 C2000 RX 引脚。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉耽误你的回答、
    我已使用 CRO 进行检查。
    问题是我在 SCI 上使用空闲线路模式、但我从具有常规 UART 的器件获取信号、这种配置可以毫无问题地接收8-N-1标准 UART 信号。 SLEEP=0、TXWAKE=0;
    非常感谢您的参与。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    8-N-1为标准配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想说,该配置是否会接收常规 UART 信号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定你的意思是什么? 请再次考虑 controlSUITE 和 C2000Ware 中的示例。
    SAL