我想把两个微控制器和一个UART接口连接起来,我搜索一个协议来交换它们之间的数据。
在实践中,我希望定期交换数据(即传感器读取)和事件数据(GPIO状态)。我有大约100到200个字节来交换每100毫秒.
有人知道一个协议或库来完成这种任务吗?
现在,我看到了原型机和纳米原型机?还有别的事吗?如果我能够在UART上添加一个软件层并使用“虚拟数据流”,就像它是到N个端口的TCP/IP连接,那就太好了。
知道吗?谢谢
发布于 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作为传输隧道,它也可以进行双向调用,而且占用空间非常小。
发布于 2014-12-11 16:03:25
我认为最直截了当的方法是自己动手。
您可以在制造商芯片支持库中找到RS232驱动程序。
RS232是一种面向流的传输,这意味着当您发送消息并检测接收端的帧边界时,您需要将消息编码成某种帧结构。一个聪明和易于使用的机制来做到这一点是“一致的开销字节填充”。
这个简单的算法将消息中的零转换为其他值,因此零字节可用于检测帧的开始和结束。如果字节在此过程中损坏,您甚至可以重新同步到流并继续运行。
维基百科上的代码应该足够简单,即使是最小的微处理器也是如此。
之后,您可以定义您的消息格式。您可能会保持它非常简单,并直接发送您的数据结构的原样。
关于一种简单消息格式的建议:
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更快,更健壮,因为它有一个专用的时钟线.
发布于 2014-12-17 08:02:22
Simple serial point-to-point communication protocol
mise
它取决于您是否需要主从实现、噪声保护、点点或多点(在本例中是冲突检测)等。
但是,就像我们的同事说的,我会用最简单的方法来解决这个问题,遵循principle的吻原则。
只需添加一些标题信息,如ID和长度,如果必要,CRC检查,并高兴:)
https://stackoverflow.com/questions/27426400
复制相似问题