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收发机。
这篇关于串口通信中对校验和的需求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:串口通信中对校验和的需求
基础教程推荐
- Page.OnAppearing 中的 Xamarin.Forms Page.DisplayAlert 2022-01-01
- 当键值未知时反序列化 JSON 2022-01-01
- C# - 如何列出发布到 ASPX 页面的变量名称和值 2022-01-01
- 创建属性设置器委托 2022-01-01
- 覆盖 Json.Net 中的默认原始类型处理 2022-01-01
- C# - 将浮点数转换为整数...并根据余数更改整数 2022-01-01
- 我什么时候应该使用 GC.SuppressFinalize()? 2022-01-01
- 如何使用OpenXML SDK将Excel转换为CSV? 2022-01-01
- 使用 SED 在 XML 标签之间提取值 2022-01-01
- 从 VB6 迁移到 .NET/.NET Core 的最佳策略或工具 2022-01-01