首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微控制器与单片机通信库(UART/ to 232)

微控制器与单片机通信库(UART/ to 232)
EN

Stack Overflow用户
提问于 2014-12-11 15:27:57
回答 5查看 5.4K关注 0票数 4

我想把两个微控制器和一个UART接口连接起来,我搜索一个协议来交换它们之间的数据。

在实践中,我希望定期交换数据(即传感器读取)和事件数据(GPIO状态)。我有大约100到200个字节来交换每100毫秒.

有人知道一个协议或库来完成这种任务吗?

现在,我看到了原型机和纳米原型机?还有别的事吗?如果我能够在UART上添加一个软件层并使用“虚拟数据流”,就像它是到N个端口的TCP/IP连接,那就太好了。

知道吗?谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-11-25 07:33:08

这个怎么样: eRPC https://community.nxp.com/docs/DOC-334083

嵌入式远程过程调用( eRPC )是由NXP创建的远程过程调用(RPC)系统。RPC是一种使用简单的本地函数调用在远程系统上调用软件例程的机制。远程系统可以是由任意通信通道连接的任意CPU :跨网络的服务器,多核系统中的另一个CPU核心,等等。对于客户机来说,这就像调用应用程序中内置的库中的函数一样。唯一的区别是通信信道引入的任何延迟或不可靠。

我已经使用它在一个两个处理器嵌入式系统,一个上下文A9 CPU -M4单片机,与SPI/GPIO相互通信。

Erpc可以在UART、SPI、rpmsg和网络(Tcp)上运行。即使使用串行或SPI作为传输隧道,它也可以进行双向调用,而且占用空间非常小。

票数 3
EN

Stack Overflow用户

发布于 2014-12-11 16:03:25

我认为最直截了当的方法是自己动手。

您可以在制造商芯片支持库中找到RS232驱动程序。

RS232是一种面向流的传输,这意味着当您发送消息并检测接收端的帧边界时,您需要将消息编码成某种帧结构。一个聪明和易于使用的机制来做到这一点是“一致的开销字节填充”。

Stuffing

这个简单的算法将消息中的零转换为其他值,因此零字节可用于检测帧的开始和结束。如果字节在此过程中损坏,您甚至可以重新同步到流并继续运行。

维基百科上的代码应该足够简单,即使是最小的微处理器也是如此。

之后,您可以定义您的消息格式。您可能会保持它非常简单,并直接发送您的数据结构的原样。

关于一种简单消息格式的建议:

代码语言:javascript
复制
Byte-ID   Meaning
---------------------------------
0         Destination port number
1         message type (define your own)
2 to n    message data

如果要发送可变长度的消息,可以发送长度字节,也可以从常量开销byte填充帧的输出中派生长度。

顺便说一句,UART/ is 232很好,而且很容易使用,但是您可能也想看看SPI。SPI接口更适合于两个微控制器之间的数据交换.它通常比RS232更快,更健壮,因为它有一个专用的时钟线.

票数 5
EN

Stack Overflow用户

发布于 2014-12-17 08:02:22

Simple serial point-to-point communication protocol

mise

它取决于您是否需要主从实现、噪声保护、点点或多点(在本例中是冲突检测)等。

但是,就像我们的同事说的,我会用最简单的方法来解决这个问题,遵循principle的吻原则。

只需添加一些标题信息,如ID和长度,如果必要,CRC检查,并高兴:)

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

https://stackoverflow.com/questions/27426400

复制
相关文章

相似问题

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