數(shù)據(jù)校驗(yàn)是為保證數(shù)據(jù)的完整性進(jìn)行的一種驗(yàn)證操作。CAN通信采用CRC校驗(yàn)作為一種重要的錯(cuò)誤檢測(cè)手段,是節(jié)點(diǎn)判斷CAN幀信息的完整性并產(chǎn)生確認(rèn)應(yīng)答的依據(jù)。
在現(xiàn)場(chǎng)總線通信和控制的實(shí)際應(yīng)用中,工業(yè)應(yīng)用環(huán)境往往是極端的溫度以及電磁噪聲或是其他的惡劣環(huán)境,系統(tǒng)在這種條件下能否正常工作至關(guān)重要,試想一下倘若生產(chǎn)線設(shè)備發(fā)送的位置信息在傳輸過(guò)程出現(xiàn)了錯(cuò)誤,輕則可能造成生產(chǎn)癱瘓,重則可能導(dǎo)致設(shè)備損壞甚至人員傷害。
在CAN總線通信過(guò)程中CAN控制器具備完整的錯(cuò)誤檢測(cè)能力,其中包含:位錯(cuò)誤檢測(cè)、格式錯(cuò)誤檢測(cè)、填充錯(cuò)誤檢測(cè)、應(yīng)答錯(cuò)誤檢測(cè)和CRC錯(cuò)誤檢測(cè)。作為一種重要的錯(cuò)誤檢測(cè)手段,CRC錯(cuò)誤檢測(cè)是接收節(jié)點(diǎn)判斷CAN幀信息的完整性并向總線確認(rèn)應(yīng)答的依據(jù)。
常見的校驗(yàn)方法
1、最簡(jiǎn)單的校驗(yàn)是數(shù)據(jù)發(fā)送后進(jìn)行主動(dòng)回讀,結(jié)果一致才確認(rèn)傳輸成功,很顯然這種傳輸溝通的方式很直觀并非常精準(zhǔn),但是由于回讀的操作使得數(shù)據(jù)傳輸量翻倍,也就是傳輸對(duì)帶寬要求高且效率低下。
2、奇偶校驗(yàn),就是傳輸中使用額外1個(gè)位來(lái)記錄傳輸數(shù)據(jù)二進(jìn)制數(shù)中1的個(gè)數(shù)是奇數(shù)還是偶數(shù),這個(gè)方案適合絕大多數(shù)硬件,傳輸開銷適中,因此被廣泛使用,例如常見的串口通信。
3、累加和校驗(yàn),該算法原理是對(duì)數(shù)據(jù)逐一進(jìn)行累加后得到一個(gè)數(shù)值,接收方在接收數(shù)據(jù)同時(shí)也進(jìn)行數(shù)據(jù)的累加并最終與發(fā)送過(guò)來(lái)的累加和進(jìn)行比較,該算法計(jì)算簡(jiǎn)單,無(wú)論在硬件或是軟件實(shí)現(xiàn)都能保證較高的效率,常用于低速串行數(shù)據(jù)通信校驗(yàn)和芯片代碼的完整性判斷。
4、CRC檢驗(yàn),該算法是基于一個(gè)多項(xiàng)式除法取余的結(jié)果,其根據(jù)位數(shù)需求和多項(xiàng)式變化有數(shù)十種版本,憑借其硬件實(shí)現(xiàn)簡(jiǎn)單,位反轉(zhuǎn)偵錯(cuò)能力較強(qiáng)及運(yùn)算開銷適中的優(yōu)點(diǎn)被廣泛應(yīng)用與數(shù)字網(wǎng)絡(luò)傳輸以及數(shù)據(jù)存儲(chǔ)領(lǐng)域,如磁盤數(shù)據(jù)校驗(yàn)、USB、GSM/CDMA通信,在計(jì)算機(jī)應(yīng)用中經(jīng)常接觸到的RAR和ZIP文件的壓縮/解壓數(shù)據(jù)完整性檢查也采用了該算法。
5、MD5、SHA為代表的信息摘要校驗(yàn),數(shù)據(jù)摘要算法也被稱為哈希(Hash)算法、散列算法,摘要算法用于數(shù)據(jù)量比較大的場(chǎng)合。它通過(guò)對(duì)所有數(shù)據(jù)提取指紋信息以實(shí)現(xiàn)數(shù)據(jù)簽名、數(shù)據(jù)完整性校驗(yàn)等功能,由于其不可逆性,有時(shí)候會(huì)被用做敏感信息的加密,如軟件注冊(cè)授權(quán)文件的內(nèi)容保護(hù),還有經(jīng)常遇到的互聯(lián)網(wǎng)下載大文件(例如大小到GB級(jí)別的ISO鏡像)通常會(huì)帶有MD5、SHA1等信息方便用戶檢查傳輸數(shù)據(jù)的完整性。
CAN幀中的CRC檢驗(yàn)
1、CRC域在CAN幀中的位置
圖1
如圖1橙色塊方框所示,一個(gè)傳統(tǒng)CAN幀結(jié)構(gòu)中,CRC域放置在數(shù)據(jù)結(jié)束后應(yīng)答檢測(cè)之前,對(duì)于CAN FD也是相同的位置,該信息對(duì)于用戶應(yīng)用界面來(lái)說(shuō)是不可見的,可以通過(guò)CANscope總線分析儀解碼窗口或者帶有CAN協(xié)議解碼能力的示波器從總線模擬波形上得到對(duì)應(yīng)的CRC數(shù)據(jù)展示,見圖2。
圖2
2、CRC的在CAN幀中的生成