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.
尊敬的香槟:
我向我们的客户提出这一问题。
用户使用 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