天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

單片機開發:什么是CRC(循環冗余校驗)?

更新時間: 2020-09-26
閱讀量:7845

許多單片機開發工程師經常使用各種通訊協議,而且設備之間的成功通信是嵌入式系統正常運行的關鍵。嵌入式系統依賴并使用通訊協議,通訊協議是一組用于管理設備之間發送和接收的數據的傳輸、同步和錯誤檢查的規則來起作用的。

由于該協議是可工作的嵌入式系統的重要組成部分,因此正確運行至關重要。由于通信錯誤不可避免,因此許多協議(包括USB,CAN和A2B)都包含錯誤檢查機制,例如循環冗余校驗或CRC。

CRC用于標記損壞的數據并防止其通過總線發送。當今的協議通常支持更高的帶寬和速度,因此CRC對于保持嵌入式系統中數據的簡潔和可靠至關重要。

word-image-15.png

一、通信協議中的CRC

通信協議通常在數據包中使用兩種CRC:一種用于保護數據包的標頭,另一種用于保護數據包的數據部分。

盡管CRC的實現在協議之間有所不同,但目的仍然是相同的:為系統創建一種方法來檢測錯誤并發起重傳或忽略數據的請求。

CRC如何生成以及如何工作?所有這些都是基于算法計算的,該算法用于檢測正在發送和接收的數據之間的不一致。本質上,CRC是從多個數據字節計算得出的值,以形成唯一的多項式密鑰,該密鑰被附加到傳出消息中。在接收端執行相同的過程。然后,接收器將消息除以與發送器使用的相同多項式,如果此除的結果為零,則表示傳輸成功。但是,如果結果不等于零,則表明發生了錯誤。

二、USB協議中的CRC

所述USB協議,或通用串行總線,在傳輸過程中使用循環冗余檢查,以保護所有非PID字段中從錯誤標記和數據分組。在USB 2.0中,令牌和幀開始(SOF)數據包包括5位CRC(CRC5),而數據數據包包括更長的16位CRC(CRC16),以為數據有效載荷提供足夠的支持,直至1024個字節。

在USB 3.1數據包中,可以在標頭數據包中找到CRC,該標頭數據包由標頭數據包框架,數據包標頭和鏈接控制字組成。標頭受16位CRC(CRC16)保護,鏈接控制字受5位CRC(CRC5)保護。數據有效載荷數據包包括一個32位CRC(CRC32),以容納較大的數據有效載荷。此外,用于控制各種特定于鏈路的功能的鏈路命令包還包括5位CRC(CRC5)。

三、CAN協議中的CRC

的CAN協議,或控制器區域網絡,被稱為其健壯和可靠的通信,因為它包含多個錯誤檢查機制,包括位錯誤檢測,格式錯誤檢測,填充錯誤檢測,響應錯誤檢測和CRC檢錯。CRC字段包含在數據幀和遠程幀中。

CRC錯誤檢測通過在數據幀中包含15位CRC來驗證消息是否通過總線正確發送而起作用。就像前面討論的CRC如何工作一樣,發送節點計算15位CRC值,然后在CRC字段中發送該值。所有節點將接收此消息,相互計算CRC,然后比較這些值以確定它們是否確實相同。否則,接收節點將通過總線發送錯誤幀。此外,CAN協議還包括一個1位隱性CRC分隔符,有助于防止格式錯誤,并確保這些位在總線上正確廣播并在接收端正確接收。

四、A2B協議中的CRC

的A2B協議,或汽車音頻總線,是另一種協議,該協議使用錯誤檢查機制,以驗證正確的通信。其中一種措施是在特定幀內使用CRC,以幫助檢測總線上的錯誤。

同步控制幀(SCF)充當節點的控制幀或控制頭,而同步響應幀(SRF)充當節點的響應幀或響應頭。整個A2B幀結構稱為超幀,它以SCF開始,包括可選的數據時隙,以SRF結尾。這些幀都包含循環冗余碼(CRC),以幫助檢測上游和下游數據錯誤。

對于下游數據錯誤檢測,在SCF中使用16位CRC,它確定在接收方傳輸期間發生的任何SCF數據錯誤。SCF包括一個指示超幀開始的前同步碼,并提供從機用于時鐘和幀同步的位模式。如果從機未檢測到幀同步,則從機將指示CRC錯誤。

對于上游數據錯誤檢測,在SRF中還使用16位CRC來確定在接收方傳輸期間發生的任何SRF數據錯誤。中斷請求字段在SCF中具有一個附加的CRC,以避免錯誤的中斷被觸發。SRF還具有一個前導以指示響應幀的開始,并提供上游節點用于時鐘和幀同步的位模式。如果上游節點未檢測到幀同步,則將指示CRC錯誤。

以上就是英銳恩單片機開發工程師分享的單片機通訊CRC算法的相關知識。英銳恩專注單片機應用方案設計與開發,提供8位單片機、16位單片機、32位單片機、運放芯片和模擬開關。

联系我们: 容城县| 湄潭县| 福安市| 金秀| 武宁县| 盐亭县| 上杭县| 高雄县| 永吉县| 泊头市| 苏尼特左旗| 黑山县| 绥芬河市| 枝江市| 临泽县| 平谷区| 长乐市| 华亭县| 赤水市| 平乡县| 安义县| 石阡县| 梅河口市| 额敏县| 博野县| 邹城市| 二手房| 夏津县| 安国市| 合江县| 广昌县| 永定县| 长乐市| 台北县| 邻水| 兴义市| 台北县| 抚顺市| 汽车| 布拖县| 花莲市|