gpt4 book ai didi

embedded - 微 Controller 到微 Controller 通信库(通过 UART/RS232)

转载 作者:行者123 更新时间:2023-12-04 22:45:43 25 4
gpt4 key购买 nike

我想将两个微 Controller 与一个 UART 接口(interface)连接起来,并搜索一个协议(protocol)以在它们之间交换数据。

在实践中,我想定期交换数据(即:传感器读取)以及事件数据(GPIO 状态)。我每 100 毫秒有大约 100-200 个字节要交换。

有人知道实现这种任务的协议(protocol)或库吗?

现在,我看到了 protobuf 和 nano protobuff 吗?还有别的吗?
如果我可以在 UART 上添加一个软件层并使用“虚拟数据流”,就像它是到 N 个端口的 TCP/IP 连接一样,那就太好了。

任何的想法 ?
谢谢

最佳答案

我认为最直接的方法是自己动手。

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

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

https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing

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

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

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

简单消息格式的建议:

Byte-ID   Meaning
---------------------------------
0 Destination port number
1 message type (define your own)
2 to n message data

如果您想发送可变长度的消息,您可以发送一个长度字节,或者从 Constant Overhead Byte Stuffing 帧的输出中获取长度。

顺便说一句,UART/RS232 很好用,也很容易使用,但您可能还想看看 SPI。 SPI接口(interface)更适合在两个微 Controller 之间交换数据。它通常比 RS232 更快并且更强大,因为它具有专用的时钟线。

关于embedded - 微 Controller 到微 Controller 通信库(通过 UART/RS232),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27426400/

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