Need of checksum in serial communication(串口通信中对校验和的需求)
问题描述
我目前正在做一个项目,涉及从PC(USB到C#编码的串口应用程序)到嵌入式平台(STM32F4)的串口COM。 我发现在某些情况下,在通信帧中必须有一个校验和。 通信配置:
波特率=115200,
无奇偶校验位
One StopBit
无握手
帧长度:16字节
是否值得在我的应用程序中添加校验和?我应该(不)拥有此校验和的原因是什么?
感谢您的答复。
推荐答案
是,您必须有校验和。唯一可接受的非业余人士解决方案是基于CRC的适当校验和。最常用的行业标准是"CRC-16-CCITT"(多项式0x1021)。这将捕获任何单比特错误、大多数双比特错误和一些突发错误。
即使您只在办公环境中使用RS-232(?),但由劣质消费电子产品引起的任何EMI都可能导致故障和错误数据。这种劣质电子产品随处可见:例如,你个人电脑中的电子产品EMC性能差的情况并不少见。尤其是,有无数的USB转串口适配器,其质量简直糟糕透顶。
UART硬件本身没有值得一提的错误检测:它是20世纪60年代的古老技术。在硬件层面上,它只根据起始位和停止位检查数据完整性,并将忽略两者之间的任何错误。(奇偶校验同样很差)。
或者,您也可以改为使用USB转RS-485适配器,并使用RS-485,因为它有差分信号,所以更加坚固。但这需要你在目标端也有RS-485收发机。
这篇关于串口通信中对校验和的需求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:串口通信中对校验和的需求
基础教程推荐
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- .NET SerialPort DataReceived 事件未触发 2022-01-01
- C# 从 List<List<int>> 中删除重 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- WPF 模态进度窗口 2022-01-01
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
