我开始为一个在全双工模式下输入和输出数据的设备编写代码,所以我将使用硬件握手,并在出问题时设置中断条件。但是,当涉及到错误检测时,我们还不太清楚最好的方法是什么。
RS232有内置的奇偶校验,我可以使用。据我所知,如果我使用8个数据位,一个奇偶位和一个停止位,那么线路上的数据包将是10位。这意味着,对于我发送的每1024字节,我也发送了128字节的验证信息与它交织。
由于奇偶校验对于每个字节来说是50/50,所以短时间的噪声持续时间少于一个字节也不太可能导致与奇偶校验比特一致的损坏。所以这似乎不是一个可靠的测试。
如果我在每1024个字节的末尾使用校验和,在115200波特时仍然只有80 my,那么我的验证开销将从12%降到不到1%,即使我使用64位校验和。更难错过腐败。
奇偶技术仅仅是一种技术,在100波特连接时代是有用的,而且已经过时了,我应该使用块校验和,还是我遗漏了什么?
发布于 2014-02-11 15:10:16
发布于 2014-02-11 15:21:25
奇偶校验是一种非常粗糙的、老式的错误检测方法.它给传输增加了很多开销:实际上,它比校验和增加了更多的延迟。对于以115200波特发送的1024字节,奇偶校验将导致额外的8.88ms延迟。因此,最好忘记您曾经听说过的平价,并认为它是一个过时的功能。
对于使用哪种校验和算法,CRC是公认的最佳选择。然而,具有64位多项式的CRC将需要相当长的时间来计算。
考虑将大量数据分成更小的包,每个包的校验和都较小,例如CRC-8或CRC-16。
https://stackoverflow.com/questions/21705482
复制相似问题