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 输出在中断期间损坏

Guru**** 2539500 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/958434/tms570ls0432-sci-output-being-corrupted-during-interrupts

器件型号:TMS570LS0432

我有一个设计、它以1MBd (无字节间隙)持续输出串行数据、使用低优先级中断发送数据、完成后重新加载消息。 我可以在 Launchxl-TMS570004的 UART 调试端口上看到这一点。

我可以发送单个返回字节、这些字节通过高优先级中断处理、而不会明显影响输出流。

但是、如果我使用 TeraTerm 宏发送一个字节块、则输出流必须以某种方式损坏、尽管示波器视图看起来没有不同。 如果损坏、TeraTerm 上的调试输出会重复出现垃圾。 我必须假定一个或多个字节、其开始和单个停止周期已中断、因此终端无法恢复同步。

无论是刚上电还是在 CCS7的控制下、都会发生这种情况。

我本以为 UART 硬件应该完全独立于软件功能、只要 在发送数据缓冲寄存器(SCITD)加载了新数据后提供其10周期输出即可。 我不会故意写入任何控制寄存器以复位或更改 SCI 的波特率。

此外、如果处于调试模式、当单步执行 scilinREG->TD =(uint32)(txdata)时、指令我会看到 UART 数据、但不会得到任何结果。 我已清除“属性”>“调试”>“程序/内存加载”选项卡中的“禁用中断”的所有选项。 我确信我已经看到了一些需要设置/清除的东西、以便 SCI 在调试期间正常工作、但我认为这是以上内容...

谢谢

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

    您好!

    请使用示波器测量位时间并确保误码率。 如果发送器波特率和接收器波特率之间的差值大于3%,则接收到的数据可能会被损坏。

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

    谢谢。 回到工作岗位 后、我设法找到了示波器并显示了正确的波特率、但我还在 TMS SCI 输出上安装了一个独立的 UART 接收器、这看起来不错。

    因此、我必须假设问题是由 TeraTerm、Windows 或 DevBoard USB 桥导致的、而不是0432本身。