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.

[参考译文] TMS320F28075:UART 故障、位错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/896691/tms320f28075-uart-failure-with-bit-error

器件型号:TMS320F28075

有一个应用采用 TMS32F28075、一个 UART 端口用作 RS485、另一个 UART 端口用于与其他 MCU 通信。 当 RS485通信电缆接触不良时、所有 UART 都无法正常接收和传输数据、 即使错误中断被清除、所有 UART 也无法正常运行、在 MCU 电源复位后、它们返回到正常状态、会发生什么情况? 如何解决该问题? 请帮帮我。谢谢!

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

    塞缪尔

    尝试 复位 SCI、而不是仅清除错误中断。  例如:

    if (SciaRegs.SCIRXST.bit.RXERROR=1) 
    SciaRegs.SCICTL1.bit.SWRESET=0;//sci 软件复位 
    SciaRegs.SCICTL1.bit.SWRESET=1;//再次启用 sci 

    但愿这对您有所帮助。 如果这可以解决您的问题、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken

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

    您好、Ken:

    谢谢、下面是我的代码、它似乎无法恢复 UART 和28075的其他 UART 端口。

       if (SciaRegs.SCIRXST.bit.RXERROR)
       {
           DelayCnt++;
           if (((SciaRegs.SCICTL2.bit.TXEMPTY=0)||(DelayCnt > 50))//50 *กก100ms = 5s
           {
               DelayCnt = 0;
               SciaRegs.SCICTL1.bit.SWRESET = 0;
               asm (" nop");
               SciaRegs.SCICTL1.bit.SWRESET = 1;
           }
       }

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

    塞缪尔

    这 是一种奇怪的行为。   两个 SCI 应该是独立的、并且一个 SCI 上的错误 不应该导致 另一个 SCI 停止正常通信、除非一个 SCI 上的错误 导致 CPU 不处理 另一个 SCI 上的中断。  请告诉我:

    1. 您是否在两个 SCI 上都看到了位错误状态?

    2、 哪个 SCI 正在复位?  它是用作 RS-485还是本应正常工作的其他 SCI?  您能否重置这两者并检查是否解决了问题?

     CCS 的调试复位是否可以解决此问题?

    - Ken