0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)通訊CRC算法的相關(guān)知識

科技觀察員 ? 來源:英銳恩 ? 作者:英銳恩 ? 2023-07-10 11:02 ? 次閱讀

許多單片機(jī)開發(fā)工程師經(jīng)常使用各種通訊協(xié)議,而且設(shè)備之間的成功通信嵌入式系統(tǒng)正常運(yùn)行的關(guān)鍵。嵌入式系統(tǒng)依賴并使用通訊協(xié)議,通訊協(xié)議是一組用于管理設(shè)備之間發(fā)送和接收的數(shù)據(jù)的傳輸、同步和錯(cuò)誤檢查的規(guī)則來起作用的。

由于該協(xié)議是可工作的嵌入式系統(tǒng)的重要組成部分,因此正確運(yùn)行至關(guān)重要。由于通信錯(cuò)誤不可避免,因此許多協(xié)議(包括USB,CAN和A2B)都包含錯(cuò)誤檢查機(jī)制,例如循環(huán)冗余校驗(yàn)或CRC。

CRC用于標(biāo)記損壞的數(shù)據(jù)并防止其通過總線發(fā)送。當(dāng)今的協(xié)議通常支持更高的帶寬和速度,因此CRC對于保持嵌入式系統(tǒng)中數(shù)據(jù)的簡潔和可靠至關(guān)重要。

一、通信協(xié)議中的CRC

通信協(xié)議通常在數(shù)據(jù)包中使用兩種CRC:一種用于保護(hù)數(shù)據(jù)包的標(biāo)頭,另一種用于保護(hù)數(shù)據(jù)包的數(shù)據(jù)部分。

盡管CRC的實(shí)現(xiàn)在協(xié)議之間有所不同,但目的仍然是相同的:為系統(tǒng)創(chuàng)建一種方法來檢測錯(cuò)誤并發(fā)起重傳或忽略數(shù)據(jù)的請求。

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

二、USB協(xié)議中的CRC

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

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

三、CAN協(xié)議中的CRC

的CAN協(xié)議,或控制器區(qū)域網(wǎng)絡(luò),被稱為其健壯和可靠的通信,因?yàn)樗鄠€(gè)錯(cuò)誤檢查機(jī)制,包括位錯(cuò)誤檢測,格式錯(cuò)誤檢測,填充錯(cuò)誤檢測,響應(yīng)錯(cuò)誤檢測和CRC檢錯(cuò)。CRC字段包含在數(shù)據(jù)幀和遠(yuǎn)程幀中。

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

四、A2B協(xié)議中的CRC

的A2B協(xié)議,或汽車音頻總線,是另一種協(xié)議,該協(xié)議使用錯(cuò)誤檢查機(jī)制,以驗(yàn)證正確的通信。其中一種措施是在特定幀內(nèi)使用CRC,以幫助檢測總線上的錯(cuò)誤。

同步控制幀(SCF)充當(dāng)節(jié)點(diǎn)的控制幀或控制頭,而同步響應(yīng)幀(SRF)充當(dāng)節(jié)點(diǎn)的響應(yīng)幀或響應(yīng)頭。整個(gè)A2B幀結(jié)構(gòu)稱為超幀,它以SCF開始,包括可選的數(shù)據(jù)時(shí)隙,以SRF結(jié)尾。這些幀都包含循環(huán)冗余碼(CRC),以幫助檢測上游和下游數(shù)據(jù)錯(cuò)誤。

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

對于上游數(shù)據(jù)錯(cuò)誤檢測,在SRF中還使用16位CRC來確定在接收方傳輸期間發(fā)生的任何SRF數(shù)據(jù)錯(cuò)誤。中斷請求字段在SCF中具有一個(gè)附加的CRC,以避免錯(cuò)誤的中斷被觸發(fā)。SRF還具有一個(gè)前導(dǎo)以指示響應(yīng)幀的開始,并提供上游節(jié)點(diǎn)用于時(shí)鐘和幀同步的位模式。如果上游節(jié)點(diǎn)未檢測到幀同步,則將指示CRC錯(cuò)誤。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6026

    文章

    44455

    瀏覽量

    630946
  • crc
    crc
    +關(guān)注

    關(guān)注

    0

    文章

    199

    瀏覽量

    29399
  • 通訊協(xié)議
    +關(guān)注

    關(guān)注

    10

    文章

    265

    瀏覽量

    20295
收藏 人收藏

    評論

    相關(guān)推薦

    CRC算法單片機(jī)通信系統(tǒng)中的實(shí)現(xiàn)

    主要論述了在單片機(jī)通信系統(tǒng)中CRC算法的設(shè)計(jì)和在單片機(jī)硬件下的編程實(shí)現(xiàn)。為了實(shí)現(xiàn)單片機(jī)系統(tǒng)之間高效無差錯(cuò)的數(shù)據(jù)傳輸,必須對數(shù)據(jù)進(jìn)行檢錯(cuò),當(dāng)傳
    發(fā)表于 03-03 14:02

    單片機(jī)在硬件上是怎樣去實(shí)現(xiàn)CRC算法計(jì)算引擎的

    單片機(jī)在硬件上是怎樣去實(shí)現(xiàn)CRC算法計(jì)算引擎的?
    發(fā)表于 02-23 06:10

    單片機(jī)講座--單片機(jī)基礎(chǔ)知識

    單片機(jī)講座--單片機(jī)基礎(chǔ)知識
    發(fā)表于 07-16 11:12 ?107次下載

    簡單實(shí)用的單片機(jī)CRC快速算法

    摘要:提供兩個(gè)實(shí)用的、能夠在單片機(jī)上通過軟件來實(shí)現(xiàn)的CRC快速算法,其中一個(gè)適用于51系列等單片機(jī),另一個(gè)適用于PIC單片機(jī),這兩種
    發(fā)表于 09-09 17:52 ?33次下載

    C51實(shí)現(xiàn)單片機(jī)CRC快速算法

    摘要:本文介紹了CRC的基本原理和計(jì)算方法,給出了利用C51實(shí)現(xiàn)單片機(jī)CRC的快速算法關(guān)鍵字:CRC;C51;
    發(fā)表于 09-10 11:14 ?50次下載

    CRC差錯(cuò)檢驗(yàn)法在PC機(jī)與8031單片機(jī)串行通訊中的應(yīng)用

    CRC差錯(cuò)檢驗(yàn)法在PC機(jī)與8031單片機(jī)串行通訊中的應(yīng)用摘  要  通過對不同校驗(yàn)方法的分析,介紹了一種適合PC機(jī)
    發(fā)表于 03-14 16:44 ?728次閱讀
    <b class='flag-5'>CRC</b>差錯(cuò)檢驗(yàn)法在PC<b class='flag-5'>機(jī)</b>與8031<b class='flag-5'>單片機(jī)</b>串行<b class='flag-5'>通訊</b>中的應(yīng)用

    STC單片機(jī)相關(guān)知識

    本內(nèi)容提供了 STC單片機(jī) 的各個(gè)方面的相關(guān)知識,對STC單片機(jī)學(xué)習(xí)者有所幫助
    發(fā)表于 08-11 17:22 ?732次下載
    STC<b class='flag-5'>單片機(jī)</b><b class='flag-5'>相關(guān)</b><b class='flag-5'>知識</b>

    protel,pcb,單片機(jī),stm32相關(guān)知識

    protel相關(guān)知識,pcb相關(guān)知識,單片機(jī)相關(guān)知識
    發(fā)表于 03-10 17:18 ?0次下載

    簡單實(shí)用的單片機(jī)CRC快速算法

    本文提供兩個(gè)實(shí)用的、能夠在單片機(jī)上通過軟件來實(shí)現(xiàn)CRC快速算法。
    發(fā)表于 03-22 16:40 ?3次下載

    51單片機(jī)C語言各種算法大全

    電子專業(yè)單片機(jī)相關(guān)知識學(xué)習(xí)教材資料——51單片機(jī)C語言各種算法大全
    發(fā)表于 07-25 09:49 ?0次下載

    51單片機(jī)最基礎(chǔ)的知識

    關(guān)于51單片機(jī)最基礎(chǔ)的知識及如何認(rèn)識單片機(jī)的組成與相關(guān)功能的介紹,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-11 11:55 ?11次下載

    單片機(jī)原理及應(yīng)用教程之單片機(jī)基礎(chǔ)知識概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)原理及應(yīng)用教程之單片機(jī)基礎(chǔ)知識概述包括了:1. 單片機(jī)概述,2. 單片機(jī)學(xué)習(xí)的預(yù)備
    發(fā)表于 04-16 08:00 ?23次下載
    <b class='flag-5'>單片機(jī)</b>原理及應(yīng)用教程之<b class='flag-5'>單片機(jī)</b>基礎(chǔ)<b class='flag-5'>知識</b>概述

    如何使用51單片機(jī)實(shí)現(xiàn)CRC校驗(yàn)算法

    介紹了CRC(循環(huán)冗余碼校驗(yàn))原理及集成混合信號片上系統(tǒng)單片機(jī)C8051F的新特性,推導(dǎo)獲得以字節(jié)為單位的數(shù)據(jù)序列CRC碼遞推算法,利用C8051F
    發(fā)表于 12-17 16:09 ?17次下載
    如何使用51<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>CRC</b>校驗(yàn)<b class='flag-5'>算法</b>

    [單片機(jī)] crc32

    [單片機(jī)] crc32
    發(fā)表于 11-23 17:36 ?5次下載
    [<b class='flag-5'>單片機(jī)</b>] <b class='flag-5'>crc</b>32

    單片機(jī)CRC原理及應(yīng)用

    單片機(jī)CRC原理及應(yīng)用
    的頭像 發(fā)表于 09-27 16:02 ?1727次閱讀
    <b class='flag-5'>單片機(jī)</b>中<b class='flag-5'>CRC</b>原理及應(yīng)用