日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機(jī)站
  • 小程序

    汽車測(cè)試網(wǎng)

  • 公眾號(hào)
    • 汽車測(cè)試網(wǎng)

    • 在線課堂

    • 電車測(cè)試

新能源汽車控制節(jié)點(diǎn)中的CRC校驗(yàn)

2024-12-20 22:06:44·  來(lái)源:覺知汽車  
 

一、CRC簡(jiǎn)介

隨著汽車電動(dòng)化與智能化的深入,車輛電子電氣架構(gòu)變得日益復(fù)雜,各控制節(jié)點(diǎn)之間的數(shù)據(jù)交換變得更為頻繁且快速,此過(guò)程中為了確保車輛運(yùn)行的安全可靠,數(shù)據(jù)交換過(guò)程的完整性則成為保障安全應(yīng)用至關(guān)重要的手段之一,這其中,CRC校驗(yàn)方式便是其中一種較為常用且有效的技術(shù)實(shí)現(xiàn)手段。

CRC(Cyclic RedundancyCheck,循環(huán)冗余校驗(yàn))是一種用于檢測(cè)數(shù)據(jù)傳輸錯(cuò)誤的校驗(yàn)算法,其是通過(guò)計(jì)算消息的校驗(yàn)碼,并將該校驗(yàn)碼附加到數(shù)據(jù)后面一起發(fā)送出去,當(dāng)接收端節(jié)點(diǎn)接收到該數(shù)據(jù)后,將使用相同的算法重新計(jì)算校驗(yàn)碼并與接收到的校驗(yàn)碼進(jìn)行比較,如果兩者匹配,則認(rèn)為數(shù)據(jù)傳輸成功,如果不匹配,則認(rèn)為數(shù)據(jù)在傳輸過(guò)程中發(fā)生了錯(cuò)誤,此時(shí)接收方可要求發(fā)送端重發(fā)數(shù)據(jù)或采取相關(guān)糾錯(cuò)措施,以此來(lái),確保數(shù)據(jù)在傳輸過(guò)程中沒有發(fā)生位錯(cuò)誤。

二、CRC工作過(guò)程

在車載系統(tǒng)中,CRC校驗(yàn)可被用于確保從各傳感器收集的數(shù)據(jù)在傳輸?shù)娇刂乒?jié)點(diǎn)時(shí)保持其完整無(wú)損。其過(guò)程如下:

當(dāng)控制節(jié)點(diǎn)從相關(guān)傳感器讀取如電壓、電流、溫度等參數(shù)時(shí),這些數(shù)值會(huì)按照協(xié)議要求被打包成一條或多條消息,每條消息都包含有多個(gè)數(shù)據(jù)字段以及源地址、目標(biāo)地址等,如下示意:

圖片

圖1報(bào)文信息

假設(shè)此時(shí)驅(qū)動(dòng)電機(jī)的溫度為60℃,那按照上述協(xié)議要求,則該條報(bào)文數(shù)據(jù)內(nèi)容如下:

圖片

圖2 報(bào)文數(shù)據(jù)內(nèi)容

在數(shù)據(jù)打包完成后,會(huì)通過(guò)CRC算法并依據(jù)消息中的所有數(shù)據(jù)位選擇一種多項(xiàng)式公式來(lái)計(jì)算出一個(gè)值,該值即校驗(yàn)碼,會(huì)被附加到數(shù)據(jù)段末尾,以形成一個(gè)完整的消息,并將其進(jìn)行傳輸。

當(dāng)該消息到達(dá)接收節(jié)點(diǎn)時(shí),接收端會(huì)再次應(yīng)用相同的CRC算法來(lái)重新計(jì)算校驗(yàn)碼,并與接收到的校驗(yàn)碼進(jìn)行對(duì)比,如果兩個(gè)值相同,則表示數(shù)據(jù)在傳輸過(guò)程中沒有發(fā)生錯(cuò)誤,如果有差異,則說(shuō)明數(shù)據(jù)可能已經(jīng)損壞,此時(shí)接收端可以選擇丟棄該報(bào)文并請(qǐng)求重新發(fā)送。

三、CAN總線應(yīng)用的CRC

在車載應(yīng)用中,根據(jù)通信協(xié)議和應(yīng)用需求的差異,采用的CRC多項(xiàng)式也不盡相同。但基于CAN總線在車載中的廣泛性,為了適應(yīng)CAN硬件且滿足其通信的高效性和可靠性,專門設(shè)計(jì)有一種特定的15位CRC多項(xiàng)式:x15+x14+1。其對(duì)校驗(yàn)碼的計(jì)算方式,可簡(jiǎn)化如下:

圖片

上述函數(shù)接受一個(gè)字節(jié)數(shù)組data和數(shù)組的長(zhǎng)度length作為輸入?yún)?shù),并返回計(jì)算的15位CRC值,在實(shí)際應(yīng)用中,需要傳遞一個(gè)指向CAN數(shù)據(jù)幀的指針以及該幀的長(zhǎng)度。但通常情況下,CAN總線的CRC計(jì)算是由集成在CAN芯片中的邏輯電路自動(dòng)處理的,即此功能的實(shí)現(xiàn)由硬件自動(dòng)完成,CAN芯片會(huì)在收發(fā)期間自動(dòng)更新CRC寄存器,軟件并不需要單獨(dú)再去實(shí)現(xiàn)這部分內(nèi)容。

通常我們需要做的是通信配置,即在初始化CAN模塊時(shí),確保CRC校驗(yàn)功能被正確開啟,并根據(jù)硬件規(guī)格書、CAN規(guī)范等設(shè)置相關(guān)的寄存器、波特率、濾波器等,以確保CRC校驗(yàn)可按照預(yù)期的方式工作。

繼續(xù)上述示例,當(dāng)MCU準(zhǔn)備發(fā)送消息時(shí),它便會(huì)按照CAN消息結(jié)構(gòu)構(gòu)造一個(gè)消息幀,并填充數(shù)據(jù)域內(nèi)容,然后CAN收發(fā)器會(huì)自動(dòng)計(jì)算數(shù)據(jù)域的CRC校驗(yàn)碼,并將該值插入到CRC域中。根據(jù)上述示例的數(shù)據(jù)內(nèi)容及CRC算法(不需要手動(dòng)完成),此時(shí)生成的CRC校驗(yàn)碼為:0x93A7。

由此,該條CAN消息幀的完整內(nèi)容包含如下:

起始域: SOF (隱式位,邏輯1)

標(biāo)識(shí)符域: 0x270

RTR: 0 (數(shù)據(jù)幀)

IDE: 0 (標(biāo)準(zhǔn)幀)

DLC: 8

數(shù)據(jù)域: 0x14 0x00 0x00 0x00 0x00 0x00 0x00 0x00

CRC域: 0x93A7

ACK域: ACK Slot + ACKDelimiter

結(jié)束域: EOF (隱式位,邏輯1)

即:

圖片

圖3 CAN消息幀完整內(nèi)容

盡管在實(shí)際應(yīng)用中,CRC計(jì)算和驗(yàn)證都是自動(dòng)完成的,軟件開發(fā)時(shí)不需要再去手動(dòng)實(shí)現(xiàn)CRC校驗(yàn)邏輯。但針對(duì)錯(cuò)誤檢測(cè)與處理,當(dāng)硬件檢測(cè)到CRC錯(cuò)誤時(shí),軟件需要檢查這些標(biāo)志位,以確定接收到的數(shù)據(jù)是否有效,同時(shí)根據(jù)CRC錯(cuò)誤標(biāo)志采取相應(yīng)的措施。

如在發(fā)送數(shù)據(jù)時(shí),軟件需確保數(shù)據(jù)幀的構(gòu)建是正確的:

圖片

在接收數(shù)據(jù)時(shí),軟件需檢查CRC校驗(yàn)是否通過(guò),從而決定如何處理接收到的這些數(shù)據(jù):

圖片

另外,在系統(tǒng)調(diào)試和故障排查時(shí),了解CRC原理對(duì)于提高排查效率等還是可以起到一定作用的。

分享到:
 
反對(duì) 0 舉報(bào) 0 收藏 0 評(píng)論 0
滬ICP備11026917號(hào)-25