簡體   English   中英

串行通信中需要校驗和

[英]Need of checksum in serial communication

我目前正在從事一個項目,該項目涉及從PC(以C#編碼的USB TO SERIAL應用程序)到嵌入式平台(STM32F4)的串行COM。 我看到在某些情況下,在通信幀中必須具有校驗和。 通訊配置:

波特率= 115200,

沒有奇偶校驗位,

一個StopBit,

沒有握手

幀長:16字節

是否值得在我的應用程序中添加校驗和? 為什么我不應該擁有這個校驗和是什么原因?

謝謝您的回答。

是的,您必須具有校驗和。 唯一可接受的非業余愛好者解決方案是基於CRC的正確校驗和。 最常見的行業標准是“ CRC-16-CCITT”(多項式0x1021)。 這將捕獲任何一位錯誤,大多數兩位錯誤和某些突發錯誤。

即使您只在辦公室環境中使用RS-232(?),由笨拙的消費類電子產品引起的任何EMI都可能導致毛刺和錯誤的數據。 周圍有如此糟糕的電子產品:例如,PC中的電子產品具有較差的EMC性能並不少見。 特別是,有無數的USB到串行適配器質量非常差。

UART硬件本身沒有錯誤檢測功能,值得一提:它是1960年代的古老技術。 在硬件級別,它僅根據起始位和停止位檢查數據完整性,並且會遺漏介於兩者之間的任何錯誤。 (奇偶校驗同樣差)。

或者,您可以改為使用USB轉RS-485適配器並使用RS-485,因為它具有差分信號,因此更加堅固。 但是,這還要求目標端也有RS-485收發器。

盡管串行通信是相對可靠的,但是習慣上具有校驗和以驗證數據的正確性。 您肯定需要至少由兩個字節組成的同步,該同步將始終被分配一個特定的值,而該值不會出現在數據中。 同步在接收側用於查找發送的每個消息的開始,因為它是流通信而不是基於數據包的通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM