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/TMS320F28377S:TMS320F28377S

Guru**** 2482105 points
Other Parts Discussed in Thread: TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/602444/ccs-tms320f28377s-tms320f28377s

器件型号:TMS320F28377S

工具/软件:Code Composer Studio

您好!

我使用的是 TMS320F28377S launchpad。 我正在努力通过 SCI 协议接收串行数据、并将此数据用于进一步处理。

这是接收数据的函数

uint16 readChar()

//等待 inc 字符
while (SciaRegs.SCIFFRX.bit.RXFFST = 0){}//等待空状态

//获取字符
char tempchar = SciaRegs.SCIRXBUF.all;
返回 tempchar;

在 Windows 上使用 CCS 进行测试时、此函数按预期工作、即使数据流是连续的。  

我的应用程序需要在 Linux 上使用连续的数据流。  

有时在 Linux CTRL + A (^A - ASCII 值1)或 CTRL + B (^B - ASCII 值2)上发送时会出现问题。 这不是 Linux 代码的一部分,而是从其他地方添加的(不能阻止生成,因此必须在 MCU 中进行整流,同时接收自身)。 发生这种情况时、MCU - F28377S 会卡住、即使下一个数据序列正确、也不会继续。 我发现、MCU 卡在上述代码中 while 环路内的无限循环中。 MCU f28377s 无法读取这些字符、也无法在下一个数据序列到来时从该循环中退出。  

我可以通过什么方式读取这些字符、或者通过任何方式从循环中退出并读取下一个数据。

我尝试通过切换这个来清除 RX 缓冲器... SciaRegs.SCIFFRX.bit.RXFIFORESET ...但是它不起作用。

谢谢

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

    您如何处理收到的不符合您期望的命令? 我看不到为什么当您接收到0x01或0x02时无法继续接收数据。

    您可以在 Windows 中发送这些控制字符吗? 它是否会导致相同的问题?

    您能否检查以确保它不是 Linux 问题? 可能通过使用这些字符来禁用 Linux 中的传输? 发生这种情况后、您可以使用逻辑分析仪或示波器探测 SCI 线路、并确保看到正确的信号。

    请告诉我您的发现!

    谢谢、

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

    我正在使用 ASCII 值过滤掉收到的不需要的数据。
    问题是、每当收到垃圾值时、微控制器就无法首先读取它、因此微控制器程序绝不会进入将过滤接收到的值的器件。

    此问题已在传输结束时得到解决、因此接收没有任何错误。

    谢谢、此致、
    Shiva Sanketh RM