两个软件实体(Uart / I2C /等)之间串行通信的简单实现

时间:2015-04-01 07:39:53

标签: c embedded protocols

我做过很多项目,包括PC和PC。 arduino / PLC /某种其他微控制器/处理器,在每个项目中,我们都有不同的协议用于PC应用程序和嵌入式应用程序之间的通信。通常,硬件/控制器开发人员发明了一个简单的协议,该协议总是在整个项目中发生变化,并采用

的形式
Barker | Size | Data | Checksum

这次我实施双方,所以我想 - 这已经做了一百万次了。这些东西必须有一个基本协议,包括C,C#,Java等实现。 我正在寻找的是一个轻量级层,它将基于流的串行通信转换为基于消息的串行通信。

我一直在四处寻找,但我自己找不到任何东西。 你碰巧认识一个吗?

3 个答案:

答案 0 :(得分:1)

我对最近的项目提出了完全相同的要求,我发现对于低端8位微控制器来说并不算太简单。所以我设计了MIN(微控制器互连网络)来完成这项工作(灵感来自CAN和LIN)。

代码在github上:https://github.com/min-protocol/min(查看那里的wiki)。

我定义了第0层(UART设置)和第1层(帧层,带校验和等)以及C API。

我还正在开发一个更高层,正式定义传感器数据(温度,压力,电压等)的打包方式,使用JSON表示和自动生成嵌入代码以打包/解压缩它们的工具来自帧。最终目标是创建一个可以剪切到串行线上的Wireshark解剖器,当用JSON提供时,它将以人类可读的形式显示信号。

我写了一篇博文,展示了在Arduino板上运行的Hello World应用程序(带有FTDI UART-USB分线板,将数据传输到我的主机PC):

https://kentindell.wordpress.com/2015/02/18/micrcontroller-interconnect-network-min-version-1-0/

这个串行问题经常发生,如果我们作为一个社区只是钉它而不是继续为每个项目重新编码它会很好。

答案 1 :(得分:0)

检查Open Source HDLC

我最近遇到MIN - 从未使用过这个

同时检查一下 Simple serial point-to-point communication protocol

答案 2 :(得分:0)

使用X / Y / Z MODEM协议必须是解决问题的不错选择。它易于实现和随时可用。我在ISP工具上使用X-MODEM与我们的cortex-m0供电MCU进行通信,效果非常好。