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.

[参考译文] TMS320F280025:如何将 LIN 上的 TX 空用作半双工 RS485的 SCI 模式?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1011974/tms320f280025-how-to-deal-with-tx-empty-on-lin-as-sci-mode-for-half-duplex-rs485

器件型号:TMS320F280025

尊敬的香槟:

我向我们的客户提出这一问题。

用户使用 LIN 作为带有半双工 RS485收发器的 SCI。

由于采用半双工 RS485收发器、用户必须确保在启用接收之前完成传输。

在用作 SCI 的 LIN 模块上、 有一个 TX 空寄存器、但它没有中断功能。

相反、只有 TXRDY 中断。

在 TRM 中、它显示"当 SCI 将 SCITD 的内容传输到移位寄存器 SCITXSHF 时、发送就绪(TXRDY)标志被置位。 TXRDY 标志指示 SCITD 已准备好加载更多数据。 此外,如果 SCITD 和 SCITXSHF 寄存器都为空,SCI 将设置 TX 空位。”

仅使用 TXRDY 中断、在 RS485上启用 RX 时、最后一个字节可能卡在移位寄存器中、因此该字节在通信中丢失。

目标是确保始终发送最后一个字节、然后将 RS485从 TX 使能切换到 RX 使能。

用户需要使用基于中断的代码而不是基于轮询的代码、并且希望传输能够无延迟地连续进行。

也就是说、用户不想在 TXRDY 中断中使用下面的代码执行此操作、这可能会导致相当长的延迟。

while (LinaRegs.SCIFLR.bit.TXEMPTY=0);

while (LinaRegs.SCIFLR.bit.TXRDY = 0);

因此、您是否有任何建议让我们来处理它?

黄维恩

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

    您好、Wayne、

    我可以看到这是半双工 RS485通信的问题。 客户能否在 TXRDY 上启动 CPU 定时器并将定时器窗口配置为1字节宽、并在超时时触发中断?

    此致、

    Nirav