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.

[参考译文] TMS570LS0432:SCI Tx 和 Rx 处于中断模式

Guru**** 2470720 points
Other Parts Discussed in Thread: TMS570LS0432

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/676505/tms570ls0432-sci-tx-and-rx-in-interrupt-mode

器件型号:TMS570LS0432

您好!

我使用的是 TMS570LS0432。 我希望 SCI 在中断模式下通信、但尚未成功。它在轮询模式下工作良好。 是否有任何示例代码和处理器可用于 sci 中断模式。

如果是、请向我们提供。正在等待您的肯定答复。

提前感谢...

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

    您好!

    1.在 HALCoGen 中的 SCI 全局启用 SCI TX 和 RX INT
    2.启用 VIM 通道0-31下的 SCI 中断(通道13和通道27)
    3.检查 VIM RAM 以确保为通道13和通道27分配了正确的 ISR:线性高电平中断和线性低电平中断
    4.生成代码、并将 HALCoGen 导入 CCS 项目
    5.在您的 main()中启用 IRQ 中断:_enable_IRQ ();
    6.初始化 SCI:sicInit(),并通过 SCI 发送 TX/RX 数据
    7.在 TeraTerm 终端中键入字符时应获得 INT

    8. ISR 位于 sci.c 中

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

    您好!

    我已经完成了多达6个步骤、并且.I 希望从微控制器侧持续传输数据。 执行此操作后、我编写了以下代码来发送和接收数据。我在 TeraTerm 终端不断接收数据、但从 TeraTerm 传输时、我在微控制器 side.please 上未接收到有效数据。建议 在以下代码中写入数据时出错。

    int main (空)

    _enable_IRQ ();

     sciInit();

     memset (Tx_buff、0、sizeof (Tx_buff));
     sprintf (Tx_buff、"\r\n 速度_EST_RPM:%d\0"、speed_est_rpm);
     sciSend (scilinREG、sizeof (Tx_buff)、(uint8*) Tx_buff);
      sciReceive (scilinREG、1、ReceivedChar);

    while (1);

    void sciNotification (sciBASE-t * sci、uint32标志)


          memset (Tx_buff、0、sizeof (Tx_buff));
          sprintf (Tx_buff、"\r\n 速度_EST_RPM:%d\0"、speed_est_rpm);
          sciSend (scilinREG、sizeof (Tx_buff)、(uint8*) Tx_buff);

          sciReceive (scilinREG、1、ReceivedChar[0]);

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

    Sameer、您好!

    1.禁用 TX 中断以测试当前代码中的 RX int

    2.注释掉或删除 sciSend (...) 来自 sciNotification (..)

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

    感谢你的答复。

    如果我禁用 TX INT 并在 sci 通知中注释 scisend(),则只要键入 terminal,我就能够将数据仅传输一次到终端,并在控制器上接收数据。但是我希望连续地将数据传输到终端,并且仅在键入时才在控制器侧接收数据 终端。那么、如何执行此操作。

    对于连续传输、我启用 了100ms 的 RTI 中断、并且每隔1秒我就将数据传输 到终端、传输的数据只不过是从终端接收到的数据。

    这是我的代码

    int main (空)

    _enable_IRQ ();

     sciInit();

     rtiinit();

    rtiStartCounter (rtiCOUNTER_BLOCK0);  

    sciReceive (scilinREG、1、ReceivedChar[0]);

    while (1)

     if (count = 10)
           {
               memset (Tx_buff、0、sizeof (Tx_buff));
               sprintf (Tx_buff、"\r\nSpeed_EST_RPM:%d\0"、ReceivedChar[0]);

               sciSend (scilinREG、strlen (Tx_buff)、(uint8*) Tx_buff);
               gioToggleBit (gioPORTA、 1);
               计数= 0;
           }

    /******* 主代码结束 /

    void sciNotification (sciBASE-t * sci、uint32标志)


          sciReceive (scilinREG、1、ReceivedChar[0])

    void rtiNotification (uint32_t 通知)

       if (notification=rtiNOTIFICATION_COMPARE0)
       {
           count++;

       }

    之后每次我在终端中键入内容时、 都会在微控制器中正确接收数据、但之后会显示垃圾数据、直到我从终端发送字节。

    代码中的任何错误。

    正在等待您的回复。

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

    你(们)好

    请在启动 RTI 之前启用 RTI 中断:

      _enable_IRQ ();

      rtiInit();

      rtiEnableNotification (rtiNOTIFICATION_COMPARE0);

      rtiStartCounter (rtiCOUNTER_BLOCK0);

      sciReceive (scilinREG、1、ReceivedChar[0]);

      while (1)

      {...}

     

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

    谢谢

    问题已解决