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:中断模式下的 TMS570LS0432 SCI Rx 问题

Guru**** 2470720 points


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

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

器件型号:TMS570LS0432

您好!

我使用 的是 TMS570LS0432 。 我希望 在中断模式下与 SCI Rx 通信、并每隔1秒将接收到的数据传输到终端。

进行比较

我启用了 Rx INT 、并且我正在正确地从终端接收数据到微控制器。

对于从微控制器到终端的每1秒传输、我启用了100ms 的 RTI INT、并且每1秒传输一次数据。

如果我从终端发送数据、那么我可以正确接收数据、同样我也可以在终端上传输正确的数据。但是、如果我不从终端向微控制器发送任何数据、我仍然会接收垃圾数据、因为每次代码运行时都会接收垃圾数据 在 RX ISR 中,即使我没有从终端发送任何数据。我如何避免这个问题,需要在 scisend()函数中进行任何更改。

这是我的代码

char ReceivedChar[1]={0};

字符计数= 0;

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 (sci、1、ReceivedChar[0]);

void rtiNotification (uint32_t 通知)

   if (notification=rtiNOTIFICATION_COMPARE0)
   {
       count++;

   }

提前感谢..

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

    您是否能够在 Rx 线路上放置一个示波器探针、以查看 Rx 线路上是否存在数据? 即、终端是否以某种方式发送垃圾、或者线路上是否有噪声导致中断发生?

    此外、请检查是否仅启用接收中断、也不启用 Tx。 我对此很好奇、因为无论是否根据您的代码接收数据、都会调用 sprintf 和 sciSend 函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢

    我已经检查了范围并解决了问题。

    在微控制器端编写的代码没有问题、它 只是我的 PC 端 GUI 代码中的故障、解决了我的问题。