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

A simple implementation of serial communication between two software entities (Uart / I2C / etc.)

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

的形式
Barker | Size | Data | Checksum

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

我已经四处寻找了一段时间,但我自己找不到任何东西。 你碰巧认识一个吗?

勾选Open Source HDLC

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

同时检查这个 Simple serial point-to-point communication protocol

使用X/Y/ZMODEM协议一定是解决您问题的好选择。它易于实施且随时可用。我在 ISP 工具上使用 X-MODEM 与我们的 cortex-m0 驱动的 MCU 通信,它工作得很好。

我对最近的一个项目有完全相同的要求,但我发现对于低端 8 位微控制器来说,没有什么足够简单的了。所以我设计了 MIN(微控制器互连网络)来完成这项工作(受 CAN 和 LIN 启发)。

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

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

我还在研究一个更高的层,它正式定义了传感器数据(温度、压力、电压等)的打包方式,具有 JSON 表示和自动生成嵌入式代码的工具pack/unpack 他们来自框架。最终目标是创建一个 Wireshark 解析器,它可以夹在串行线上,当输入 JSON 时,将以人类可读的形式显示信号。

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

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

这个系列问题经常发生,如果我们作为一个社区只是解决它而不是为每个项目重新编码,那就太好了。