"Serial transmit complete" -中断RS485 [小猎犬骨黑 - 埃]

"Serial transmit complete"-Interrupt RS485 [BeagleBoneBlack - Angstrom]

本文关键字:猎犬 RS485 Serial transmit complete 中断      更新时间:2023-10-16

我正在BeagleBoneBlack上开发一个应用程序。嵌入式linux对我来说是全新的=/

我面临的问题是,我想实现RS485通信,我使用SeriaLib库编写了一段C++代码,目前使用专用GPIO来切换RS485接口的方向。到目前为止一切都很好。

要写入消息,使用下面的功能写入

write(fd,Message,Lenght);

唯一的问题是在最后一个字节写入总线=()后立即切换DIRECTION引脚

在微控制器上开发时,对各种中断等做出反应是没有问题的

内核深处有什么解决方案吗在成功传输消息后切换引脚DIRECT?

通常在小型微控制器上,在输入最后一个字符后,您可以启用传输完全中断,也可以在发送例程中忙于等待传输完成标志,然后禁用驱动程序。

然而,一些较重的MCU没有传输完全中断,并且多任务操作系统可能不喜欢忙于等待(如果在轮询之间让步,则会引入不希望的延迟)。我想到了两种处理方法。

  1. 由于您有一个要禁用的驱动程序,听起来就像您有一对双向驱动程序,并且将接收您发送的所有内容。再加上一些状态跟踪,您可以使用接收中断来知道您的最后一个字符已经发送,并禁用驱动程序。(如果其他人堵塞了总线,也可以处理RX错误)

  2. 确定从最后一个字符入队到传输完成的波特率相关时间,并在该时间段内设置计时器中断,然后禁用ISR中的驱动程序。