gpt4 book ai didi

embedded - 简单的串行点对点通信协议(protocol)

转载 作者:行者123 更新时间:2023-12-01 18:43:29 24 4
gpt4 key购买 nike

我需要两个设备(PC 和微 Controller )之间的简单通信协议(protocol)。 PC必须向微处理器发送一些命令和参数。微 Controller 必须传输字节数组(来自传感器的数据)。

数据必须是 noise protected (除了奇偶校验之外,我想我还需要一些其他的数据校正方法)。

有没有标准的解决方案可以做到这一点? (我只需要一个想法,而不是完整的解决方案)。

附注任何建议表示赞赏。 P.P.S 对于任何语法错误,我深表歉意,希望您能理解。

编辑1.我还没有决定是主/从协议(protocol)还是双方都可以发起通信。 PC 必须知道微 Controller 何时完成工作并可以发送数据。如果数据准备好,它可以连续轮询微 Controller ,或者当作业完成时微 Controller 可以发送数据。我不知道哪个更好更简单。

编辑 2。 硬件和 physical layer协议(protocol)。RS-232 C串口标准用在PC上,我会用asynchronous communication 。我将仅使用 RxD、TxD 和 GND 信号。我不能使用额外的电线,因为微 Controller 据我所知不支持它们。顺便说一句,我正在使用 AVR ATmega128芯片。

所以我将使用固定波特率、8 位数据、2 个停止位,没有奇偶校验(或有?)。

Data link protocol 。这就是我的问题主要关心的问题。感谢您的建议HDLC , PPPModbus协议(protocol)。我会研究一下。

最佳答案

我会使用HDLC 。我过去在这方面运气很好。对于点对点串行,我只需使用 Asynchronous framing并忘记所有其他控制内容,因为它可能会太过分。

除了使用 HDLC 来对数据包进行组帧之外。我将数据包格式化如下。这就是使用 802.11 传递选项的方式

U8 cmd;
U8 len;
u8 payload[len];

每个命令包的总大小为len +2

然后定义类似的命令

#define TRIGGER_SENSOR 0x01
#define SENSOR_RESPONSE 0x02

另一个优点是您可以添加新命令,并且如果您正确设计解析器以忽略未定义的命令,那么您将具有一定的向后兼容性。

因此,将它们放在一起,数据包将如下所示。

 // total packet length minus flags len+4
U8 sflag; //0x7e start of packet end of packet flag from HDLC
U8 cmd; //tells the other side what to do.
U8 len; // payload length
U8 payload[len]; // could be zero len
U16 crc;
U8 eflag; //end of frame flag

然后系统将监视串行流中的标志 0x7e,当它出现时,您检查长度以查看它是否 pklen >= 4 且 pklen=len+4 以及 crc 是否有效。请注意,不要仅依赖 crc 来处理小数据包,在检查长度时您也会得到很多误报。如果长度或 crc 不匹配,只需重置长度和 crc 并开始解码新帧。如果匹配,则将数据包复制到新缓冲区并将其传递给命令处理函数。收到标志时始终重置长度和 crc。

对于命令处理函数,获取 cmd 和 len,然后使用开关来处理每种类型的命令。我还要求某些事件发送响应,以便系统的行为类似于事件驱动的远程过程调用。

例如,传感器设备可以有一个计时器或响应命令来读取读数。然后它会格式化一个数据包并将其发送到 PC,PC 会响应它收到了该数据包。如果没有,则传感器设备可能会在超时时重新发送。

此外,当您进行网络传输时,您应该将其设计为网络堆栈,如 OSI modleForedecker要点不要忘记physical layer stuff 。我的 HDLC 帖子是 data link layerRPC and command handling is the Application Layer .

关于embedded - 简单的串行点对点通信协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/815758/

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