首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“串行传输完成”-Interrupt RS485 [BeagleBoneBlack - Angstrom]

“串行传输完成”-Interrupt RS485 [BeagleBoneBlack - Angstrom]
EN

Stack Overflow用户
提问于 2014-01-15 15:36:58
回答 1查看 1K关注 0票数 1

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

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

若要写入消息,请在下面使用函数写

代码语言:javascript
运行
复制
write(fd,Message,Lenght);

唯一的问题是在总线=(

在微控制器上开发的过程中,对各种中断的反应是没有问题的。

有什么解决方案-在内核深处吗?-在成功地传送消息后直接切换一个引脚?

EN

回答 1

Stack Overflow用户

发布于 2014-01-15 16:19:49

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

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

  1. 因为您有一个驱动程序要禁用,这听起来就像您有一个双向对,并将接收所有您发送的东西。再加上一些状态跟踪,您可以使用接收中断来知道您的最后一个字符已经发送,并禁用驱动程序。(如果其他人阻塞了总线,也会处理RX错误)
  2. 确定从加入最后一个字符到传输完成的依赖于波德率的时间,并为这个时间设置一个定时器中断,然后在ISR中禁用驱动程序。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21141669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档