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:控制套件中的 Echoback 示例

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/585971/ccs-tms320f28027f-echoback-example-in-control-suite

器件型号:TMS320F28027F
主题中讨论的其他器件:BQ76PL455A-Q1

工具/软件:Code Composer Studio

我使用的是 C2000 (28027F) piccolo launchpad。 当我从控制套件运行 echoback 示例时,没有任何更改,它正在运行,但它从键盘获取输入并回送它。 我希望从外部 UART 设备输入,即该示例从控制器的 Rx 引脚获取输入。 我应该在代码中进行哪些更改、以便它从其他串行器件获取输入。  

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

    您可以使用相同的代码、而不是传输从超级终端接收到的内容(例如、回声站示例)->您应该存储来自外部 UART 器件的值并根据您的要求进行处理。

    此致、
    Gautam
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的快速回复。 但是当我运行代码时,我会向外部设备发送一些命令,并且 IC 回复了我在 CRO 上看到的消息,但我没有从 RX 引脚获得任何信号,因为它会停止@ while (SciaRegs.SCIFFRX.bit.RXFFST!=1){行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我希望您已经连接了 RX->TX 和 TX->RX、并在它们之间建立了公共接地。 此外、您提到的这款外部器件是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,我已检查 Tx-Rx 引脚是否正确。 我使用 bq76pl455A-Q1 IC 进行电池被动均衡。

    这是寄存器配置

    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


    空 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++;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Indrajit、尝试启用 RX 中断。 通过禁用环回特性、请参阅"scia_loopback _interrupts"示例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SIR 实际上我已经添加了 SciaRegs.SCICTL2.bit.RXBKINTENA=1;这一行代码在上面启用 Rx 中断
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否经历过 scia_loopback_interrupts 代码? 仅仅启用 RXBKINTENA 是不够的、您还需要一个 ISR。