gpt4 book ai didi

c++ - "Serial transmit complete"- 中断 RS485 [BeagleBoneBlack - 埃]

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:19 24 4
gpt4 key购买 nike

我正在 BeagleBoneBlack 上开发应用程序。嵌入式 linux 对我来说很新 =/

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

要写消息,使用下面的函数 write

write(fd,Message,Lenght);

唯一的问题是在最后一个字节写入 BUS 后立即切换 DIRECTION-Pin =(

在微 Controller 上开发时,对各种中断等使用react没有问题。

是否有任何解决方案 - 在内核深处? - 在成功传输消息后直接切换引脚?

最佳答案

通常在 小型 微 Controller 上,在 fifoing 最后一个字符后,您可以启用传输完成中断,或者只是忙于等待发送例程中的传输完成标志,然后禁用驱动程序。

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

  1. 因为您有一个要禁用的驱动程序,听起来您只有一个双向对,并且将接收您传输的所有内容。结合一些状态跟踪,您可以使用 receive 中断来了解您的最后一个字符已发送,并禁用驱动程序。 (如果其他人堵塞总线,也处理 RX 错误)

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

关于c++ - "Serial transmit complete"- 中断 RS485 [BeagleBoneBlack - 埃],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com