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/MSP430I2041:UART 有时会在终端内部提供奇怪的数据

Guru**** 2589245 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/844306/ccs-msp430i2041-uart-occasionally-gives-weird-data-inside-the-terminal

器件型号:MSP430I2041

工具/软件:Code Composer Studio

如上图所示。 小数点有时会被一个奇怪的字符取代。 是否有人知道导致此行为的原因以及如何解决此问题?

此致、

Erik

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

    这种情况通常会提示在边界线运行的时钟。 (当然、它也可能是偶尔在缓冲区上出现的软件错误。)

    UART 通常在较低速度下更具宽容度。 如果您减慢链路速度、这是否会消失?

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

    我以前使用的波特率是38400、但将其降低到9600无法解决问题。  

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

    奇怪的是,它是*仅*小数点。

    您是否曾尝试查看收到的字节以查看其是否存在任何模式?

    您还可以使用逻辑分析仪来查看串行流中的内容、以查看串行流是位于接收端还是发送端。

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

    是的。 我同意 Keith 的看法、如果您可以使用逻辑分析仪来查看您是否在串行流上获得了正确的数据。

    谢谢、

    是的

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

    使用逻辑分析仪、我注意到问题出在传输侧。 我已向代码添加数组(Teststring)、该数组遵循小数点应位于的索引处的数据值。 我注意到、值在'while (UCA0STATW&UCBUSY)之后发生变化;//等待数据已发送'行。

    void UART_Send (char Data[])
    {
    Teststring[0]= Data[1];
    while (Data[u]!='\0')//'\0'(空)字符表示数据结束
    {
    if (u = 0)
    Teststring[1]=数据[1];
    if (u = 1)
    Teststring[5]=数据[u];
    UCA0TXBUF =数据[u];
    if (u = 0)
    Teststring[2]=数据[1];
    IF (数据[1]!= 0x2E && u = 1)
    __no_operation();
    while (UCA0STATW&UCBUSY);//等待数据已发送
    if (u = 0)
    Teststring[3]=数据[1];
    U++;
    if (u = 1)
    Teststring[4]=数据[1];
    }
    UCA0TXBUF =';';
    while (UCA0STATW&UCBUSY);//等待数据已发送
    UCA0TXBUF = 0x20;//空间(SP)
    U = 0;
    } 

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

    都是全局变量(尤其是 u!) 易失性?

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

    我没有将它们定义为易失性变量。

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

    更新:在发送字符串之前禁用中断后、发生的怪异字符的频率已从每30行一次下降到每630行一次(平均值)。  

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

    从第一次响应开始:

    "(当然、它也可能是一个软件错误、偶尔会在缓冲区中出现。)"

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

    更新了:使 UART_Send 函数保持静态似乎可以解决奇怪字符的问题。