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

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

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

CRC是如何完成校驗(yàn)工作的?

AGk5_ZLG_zhiyua ? 來源:YXQ ? 2019-08-06 16:50 ? 次閱讀

數(shù)據(jù)校驗(yàn)是為保證數(shù)據(jù)的完整性進(jìn)行的一種驗(yàn)證操作。CAN通信采用CRC校驗(yàn)作為一種重要的錯誤檢測手段,是節(jié)點(diǎn)判斷CAN幀信息的完整性并產(chǎn)生確認(rèn)應(yīng)答的依據(jù)。

在現(xiàn)場總線通信和控制的實(shí)際應(yīng)用中,工業(yè)應(yīng)用環(huán)境往往是極端的溫度以及電磁噪聲或是其他的惡劣環(huán)境,系統(tǒng)在這種條件下能否正常工作至關(guān)重要,試想一下倘若生產(chǎn)線設(shè)備發(fā)送的位置信息在傳輸過程出現(xiàn)了錯誤,輕則可能造成生產(chǎn)癱瘓,重則可能導(dǎo)致設(shè)備損壞甚至人員傷害。

在CAN總線通信過程中CAN控制器具備完整的錯誤檢測能力,其中包含:位錯誤檢測、格式錯誤檢測、填充錯誤檢測、應(yīng)答錯誤檢測和CRC錯誤檢測。作為一種重要的錯誤檢測手段,CRC錯誤檢測是接收節(jié)點(diǎn)判斷CAN幀信息的完整性并向總線確認(rèn)應(yīng)答的依據(jù)。1、最簡單的校驗(yàn)是數(shù)據(jù)發(fā)送后進(jìn)行主動回讀,結(jié)果一致才確認(rèn)傳輸成功,很顯然這種傳輸溝通的方式很直觀并非常精準(zhǔn),但是由于回讀的操作使得數(shù)據(jù)傳輸量翻倍,也就是傳輸對帶寬要求高且效率低下。

2、奇偶校驗(yàn),就是傳輸中使用額外1個位來記錄傳輸數(shù)據(jù)二進(jìn)制數(shù)中1的個數(shù)是奇數(shù)還是偶數(shù),這個方案適合絕大多數(shù)硬件,傳輸開銷適中,因此被廣泛使用,例如常見的串口通信。

3、累加和校驗(yàn),該算法原理是對數(shù)據(jù)逐一進(jìn)行累加后得到一個數(shù)值,接收方在接收數(shù)據(jù)同時也進(jìn)行數(shù)據(jù)的累加并最終與發(fā)送過來的累加和進(jìn)行比較,該算法計算簡單,無論在硬件或是軟件實(shí)現(xiàn)都能保證較高的效率,常用于低速串行數(shù)據(jù)通信校驗(yàn)和芯片代碼的完整性判斷。

4、CRC檢驗(yàn),該算法是基于一個多項(xiàng)式除法取余的結(jié)果,其根據(jù)位數(shù)需求和多項(xiàng)式變化有數(shù)十種版本,憑借其硬件實(shí)現(xiàn)簡單,位反轉(zhuǎn)偵錯能力較強(qiáng)及運(yùn)算開銷適中的優(yōu)點(diǎn)被廣泛應(yīng)用與數(shù)字網(wǎng)絡(luò)傳輸以及數(shù)據(jù)存儲領(lǐng)域,如磁盤數(shù)據(jù)校驗(yàn)、USB、GSM/CDMA通信,在計算機(jī)應(yīng)用中經(jīng)常接觸到的RAR和ZIP文件的壓縮/解壓數(shù)據(jù)完整性檢查也采用了該算法。

5、MD5、SHA為代表的信息摘要校驗(yàn),數(shù)據(jù)摘要算法也被稱為哈希(Hash)算法、散列算法,摘要算法用于數(shù)據(jù)量比較大的場合。它通過對所有數(shù)據(jù)提取指紋信息以實(shí)現(xiàn)數(shù)據(jù)簽名、數(shù)據(jù)完整性校驗(yàn)等功能,由于其不可逆性,有時候會被用做敏感信息的加密,如軟件注冊授權(quán)文件的內(nèi)容保護(hù),還有經(jīng)常遇到的互聯(lián)網(wǎng)下載大文件(例如大小到GB級別的ISO鏡像)通常會帶有MD5、SHA1等信息方便用戶檢查傳輸數(shù)據(jù)的完整性。

1、CRC域在CAN幀中的位置

圖1

如圖1橙色塊方框所示,一個傳統(tǒng)CAN幀結(jié)構(gòu)中,CRC域放置在數(shù)據(jù)結(jié)束后應(yīng)答檢測之前,對于CAN FD也是相同的位置,該信息對于用戶應(yīng)用界面來說是不可見的,可以通過CANscope總線分析儀解碼窗口或者帶有CAN協(xié)議解碼能力的示波器從總線模擬波形上得到對應(yīng)的CRC數(shù)據(jù)展示,見圖2。

圖2

2、CRC的在CAN幀中的生成

在經(jīng)典CAN中,使用15位CRC,在硬件可使用移位和異或運(yùn)算完成CRC的計算,而CAN FD規(guī)范中對幀數(shù)據(jù)長度進(jìn)行了擴(kuò)展,對于數(shù)據(jù)長度小于等于16字節(jié)的CAN FD幀,采用17位CRC,對于數(shù)據(jù)長度大于16字節(jié)的CAN FD幀采用21位CRC。CAN總線中使用的若干版本CRC生成多項(xiàng)式g整理如表1所示。

表1

3、CRC是如何完成校驗(yàn)工作的

CAN幀基于CRC多項(xiàng)式的安全校驗(yàn)是發(fā)送器根據(jù)發(fā)送的比特計算校驗(yàn)值,并在CAN幀結(jié)構(gòu)CRC字段中提供該結(jié)果。接收器使用相同的多項(xiàng)式來計算總線上所見位的校驗(yàn)值,將自我計算的校驗(yàn)值與接收的校準(zhǔn)值進(jìn)行比較,如果匹配,則認(rèn)為幀被正確接收,接收節(jié)點(diǎn)在ACK時隙位中發(fā)送顯性狀態(tài),從而覆蓋發(fā)送器的隱性狀態(tài)。在不匹配的情況下,接收節(jié)點(diǎn)在ACK定界符之后發(fā)送錯誤幀。

目前CAN FD的控制器CRC校驗(yàn)實(shí)現(xiàn)過程會相對復(fù)雜一點(diǎn),在一個CAN總線網(wǎng)絡(luò)中,幀起始被檢測到后所有的節(jié)點(diǎn)開始使用三組多項(xiàng)式g15、g17和g21同步計算CRC序列,其中也包含發(fā)送節(jié)點(diǎn),由于CRC的計算受CAN幀類型和DLC長度影響,直到CAN幀的控制域以及DLC確認(rèn)后才選擇采用對應(yīng)的CRC生成序列,確定的CRC序列會在幀結(jié)構(gòu)中CRC字段被采納用于發(fā)送或者用于接收比較。

4、有關(guān)CRC的ISO CAN FD、non-ISO CAN FD兼容性問題

當(dāng)前CAN FD協(xié)議有兩個版本,為提高故障(錯誤)檢測能力,新版本特別引入了一個3位填充位計數(shù)器和一個額外的奇偶校驗(yàn)位。此外,CRC計算方法也發(fā)生了變化。這些改進(jìn)使最新的CAN FD協(xié)議與博世BOSCH)開發(fā)的原始CAN FD協(xié)議不兼容。負(fù)責(zé)ISO的工作組已完成其文件,并已將其提交給DIS(國際標(biāo)準(zhǔn)草案)在進(jìn)行投票程序。

為了避免誤解,CiA建議使用術(shù)語“ISO CAN FD”和“non-ISO CAN FD”。所有符合ISO 11898-2:2015的產(chǎn)品都應(yīng)稱為“ISO CAN FD”。執(zhí)行博世(BOSCH)原始CAN FD協(xié)議的產(chǎn)品應(yīng)命名為“non-ISO CAN FD”,在這個過度階段的產(chǎn)品主要目的是用于前期評估和開發(fā),將來所有產(chǎn)品都將符合ISO標(biāo)準(zhǔn)。

請注意,早前一些供應(yīng)商提供的組件或者工具是針對non-ISO CAN FD協(xié)議的,包括目前在售的部分CAN FD產(chǎn)品,CiA建議僅使用ISO CAN FD產(chǎn)品進(jìn)行設(shè)計和開發(fā),不過你可繼續(xù)使用non-ISO CAN FD做評估和前期開發(fā),因?yàn)閰f(xié)議的改變對于用戶界面是不可見,但注意的是不能同一個網(wǎng)絡(luò)混用non-ISO CAN FD和ISO CAN FD接口設(shè)備,這樣會造成CAN總線錯誤無法完成發(fā)送和接收,如果僅僅是發(fā)送或接收傳統(tǒng)的CAN幀將不會受到任何影響,幸運(yùn)的是部分設(shè)備供應(yīng)商提供的組件或者工具允許用戶選擇支持ISO或者non-ISO模式,這樣能很好地在過渡時期幫助你完成工作。

總結(jié)

傳統(tǒng)CAN以及目前CAN FD采取的校驗(yàn)機(jī)制,保證傳輸過程中遭受破壞的幀數(shù)據(jù)幾乎不會被接收以及應(yīng)答成功,能有效防止物理層傳輸錯誤,讓用戶界面不需要額外關(guān)注幀傳輸數(shù)據(jù)的正確性。

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

原文標(biāo)題:詳解CAN/CAN FD通信中的循環(huán)冗余校驗(yàn)(CRC)方法

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ADS131B04-Q1 SPI通信時,為什么無法得到正常的CRC校驗(yàn)

    你好,我使用 ADS131B04 進(jìn)行產(chǎn)品開發(fā),使用中遇到如下問題還請幫忙解答。謝謝。 1 . SPI 通信時 CRC 不清楚怎么使用,按如下方法使用時無法得到正常的CRC 校驗(yàn)。 初始化代碼如下
    發(fā)表于 11-22 06:40

    TAS5805內(nèi)部的硬件CRC8對應(yīng)標(biāo)準(zhǔn)的哪種? CRC校驗(yàn)的數(shù)據(jù)是offset和value值嗎?

    TAS5805 內(nèi)部的硬件 CRC8 對應(yīng)標(biāo)準(zhǔn)的哪種? CRC 校驗(yàn)的數(shù)據(jù)是 offset 和 value 值嗎?用 PPC 加載文件計算出來的值和在線CRC計算工具計算的值不一樣。
    發(fā)表于 10-12 06:19

    請問InDTU IHDMP協(xié)議使用的CRC校驗(yàn)使用的什么參數(shù)模型?

    InDTU IHDMP協(xié)議使用的CRC校驗(yàn)使用的什么參數(shù)模型?
    發(fā)表于 07-25 06:39

    詳解TSMaster CAN 與 CANFD 的 CRC E2E 校驗(yàn)方法

    面對切換工具鏈的用戶來說,在TSMaster上完成總線通訊中的CRC/E2E校驗(yàn)處理不是特別熟悉,該文章可以協(xié)助客戶快速使用TSMaster完成CAN/CANFD總線通訊的
    的頭像 發(fā)表于 05-25 08:21 ?2386次閱讀
    詳解TSMaster CAN 與 CANFD 的 <b class='flag-5'>CRC</b> E2E <b class='flag-5'>校驗(yàn)</b>方法

    CRC(循環(huán)冗余校驗(yàn))應(yīng)用舉例

    CRC(循環(huán)冗余校驗(yàn))應(yīng)用舉例
    的頭像 發(fā)表于 05-16 16:12 ?1217次閱讀

    Hex文件格式CRC校驗(yàn),怎么編寫計算校驗(yàn)的程序?

    其中的一條記錄:1011000071079907E8071008D206FA0671079907D0 0xD0為校驗(yàn),但不知道怎么編寫計算校驗(yàn)的程序。 校驗(yàn)和的算法為:計算從0x3A 以后(不包括
    發(fā)表于 05-16 06:53

    stm32讀sd卡單個數(shù)據(jù)塊最后80個字節(jié)全是0,怎么crc校驗(yàn)正確?

    stm32 讀sd卡單個數(shù)據(jù)塊最后80個字節(jié)全是0,怎么crc校驗(yàn)正確。PS. 用的是SDIO口,4bit總線,1M的SDIO_CK.
    發(fā)表于 04-25 07:19

    新版CubeMX CRC校驗(yàn)模塊沒有Config嗎?

    最近發(fā)現(xiàn)CubeMX CRC 模塊config 部分沒有了,也就是用戶只能使能CRC模塊而不能對其做設(shè)置嗎。嘗試著生成工程看來一下發(fā)現(xiàn)默認(rèn)的是CRC32,輸入數(shù)據(jù) 輸出數(shù)據(jù)都是32位的。那么我希望
    發(fā)表于 04-03 08:04

    怎么使用hal accumulate函數(shù)完成crc分塊校驗(yàn)與整體校驗(yàn)crc值相等?

    怎么使用hal accumulate函數(shù)完成crc分塊校驗(yàn)與整體校驗(yàn)crc值相等
    發(fā)表于 03-27 07:46

    淺析MCU通信、存儲常用的簡單校驗(yàn)算法

    UART有一個奇偶校驗(yàn),CAN通信有CRC校驗(yàn)。Modbus、MAVlink、USB等通信協(xié)議也有校驗(yàn)信息。
    的頭像 發(fā)表于 03-07 10:56 ?519次閱讀
    淺析MCU通信、存儲常用的簡單<b class='flag-5'>校驗(yàn)</b>算法

    RA MCU中的CRC模塊和使用方法

    瑞薩RA單片機(jī)硬件CRC計算單元采用固定的多項(xiàng)式發(fā)生器來計算8位或者32位數(shù)據(jù)的CRC校驗(yàn)值,對數(shù)據(jù)傳輸或數(shù)據(jù)存儲的一致性、完整性進(jìn)行驗(yàn)證。這篇文章重點(diǎn)介紹RA MCU中的CRC模塊和
    發(fā)表于 02-26 11:45 ?967次閱讀
    RA MCU中的<b class='flag-5'>CRC</b>模塊和使用方法

    什么是熱電偶校驗(yàn)儀?它的工作原理是什么?

    什么是熱電偶校驗(yàn)儀?它的工作原理是什么? 熱電偶校驗(yàn)儀是一種用于測試和校準(zhǔn)熱電偶的儀器。熱電偶是一種將溫度轉(zhuǎn)換為電信號的傳感器,由兩個不同金屬線材組成,通過端頭的接觸產(chǎn)生溫差電勢,從而測量溫度。由于
    的頭像 發(fā)表于 02-02 15:11 ?5616次閱讀

    fpga報告crc故障是什么意思

    常用的校驗(yàn)方法,用于檢測和校正數(shù)據(jù)傳輸中的錯誤。在FPGA設(shè)計中,CRC故障指的是與CRC相關(guān)的錯誤或問題。 首先,讓我們了解CRC是什么以及它在數(shù)據(jù)傳輸中的作用。
    的頭像 發(fā)表于 01-04 11:06 ?1485次閱讀

    虹科技術(shù) | 保障數(shù)據(jù)傳輸穩(wěn)定性:BabyLIN產(chǎn)品的CRC算法實(shí)現(xiàn)

    CRC校驗(yàn)(循環(huán)冗余校驗(yàn))是數(shù)據(jù)通訊中最常采用的校驗(yàn)方式。CAN協(xié)議中,總線通信節(jié)點(diǎn)也常采用CRC算法對各種總線傳輸?shù)臄?shù)據(jù)進(jìn)行
    的頭像 發(fā)表于 01-02 17:23 ?548次閱讀
    虹科技術(shù) | 保障數(shù)據(jù)傳輸穩(wěn)定性:BabyLIN產(chǎn)品的<b class='flag-5'>CRC</b>算法實(shí)現(xiàn)

    虹科技術(shù)|保障數(shù)據(jù)傳輸穩(wěn)定性:BabyLIN產(chǎn)品的CRC算法實(shí)現(xiàn)

    導(dǎo)讀: CRC校驗(yàn)(循環(huán)冗余校驗(yàn))是數(shù)據(jù)通訊中最常采用的校驗(yàn)方式。CAN協(xié)議中,總線通信節(jié)點(diǎn)也常采用CRC算法對各種總線傳輸?shù)臄?shù)據(jù)進(jìn)行
    的頭像 發(fā)表于 01-02 10:45 ?508次閱讀
    虹科技術(shù)|保障數(shù)據(jù)傳輸穩(wěn)定性:BabyLIN產(chǎn)品的<b class='flag-5'>CRC</b>算法實(shí)現(xiàn)