首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用UART总线在数据流和控制之间切换

如何使用UART总线在数据流和控制之间切换
EN

Stack Overflow用户
提问于 2014-11-25 22:40:30
回答 1查看 340关注 0票数 0

这个问题是关于一个8输出通道红外发射机的固件。它是一个带有8个红外发光二极管的微控制器.目标是具有能够使用一个或多个信道发送数据流的发射机。数据通过UART传送到板上,然后通过一个或多个信道传送。

我的发射机电路比UART快,所以不需要流量控制。

目前,我在固件中固定了通道,所以来自UART的每个字节都是直接传输的。这意味着无法通过UART设置所需的通道,这正是我想要的。

当然,最简单的解决方案是在数据字节中附加一个控制字节,其中每个位代表一个通道。这样做的好处是每个字节可以被路由到一个或多个通道,但当然会大大增加开销。

由于传输的流类型,我试图避免在我的发射机长度场。

我的研究工作是在网络栈之上的。

我的问题是,是否有解决这一问题的方案或良好做法。我希望机器人也会出现类似的问题,传感器数据流总是交叉控制信号,但我无法找到一个简单而优雅的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-04 16:42:59

我通常在我的项目中使用SLIP传输协议。它是非常快速,易于实现,并工作非常好的框架任何数据包你想。

SerialLineInternetProtocolSLIP.htm https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=slip%20protocol

基本上,您将要传输或接收的每个字节输入到一个函数中,该函数使用0xC0作为页眉和页脚。由于0xC0是您可能发送的数据包中的一个有效字节,所以对0xC0的数据字节进行了一些转换,以确保0xC0只成为页眉和页脚。

然后,使用相反的算法,您可以对传入的数据进行帧化,并按正确的顺序查找两次0xC0。这意味着可以缓冲并标记为主cpu处理的完整数据包。

这张纸条将保证正确的包装。

然后由您来定义您自己存在的数据包格式,因为SLIP数据包中的数据字段已经正确地定义了该数据包。

我经常做以下事情..。

<0xC0> ...<0xC0>

对不同的频道使用不同的操作码。如果愿意,您可以轻松地添加另一个带有认可的层。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27138138

复制
相关文章

相似问题

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