一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

CRC和Checksum信號(hào)的區(qū)別 Checksum信號(hào)在CAPL中實(shí)現(xiàn)的方法

汽車電子設(shè)計(jì) ? 來(lái)源:北匯信息 ? 作者:北城舊巷 ? 2022-10-14 13:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CRC與Checksum區(qū)別

相信大家在CAN Msg或者ETH PDU中經(jīng)常會(huì)看到Checksum這種信號(hào)。提到Checksum,就必須要說(shuō)明一下CRC校驗(yàn),很多工程師會(huì)概念混淆,認(rèn)為兩者是同一個(gè)東西,實(shí)則它們有很大的區(qū)別。

01兩者存放位置不同

CRC校驗(yàn):循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯(cuò)功能,對(duì)數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。

通過(guò)CRC概念可以得知,CRC存放在CRC場(chǎng),而Checksum存放在數(shù)據(jù)場(chǎng)之中,一般在數(shù)據(jù)場(chǎng)的第一個(gè)字節(jié)或者最后一個(gè)字節(jié)。

38ebe63a-4b7b-11ed-a3b6-dac502259ad0.png

圖1 標(biāo)準(zhǔn)數(shù)據(jù)幀格式

02兩者應(yīng)用場(chǎng)景不同

在CAN報(bào)文幀中,CRC校驗(yàn)是發(fā)送器根據(jù)發(fā)送的bit進(jìn)行多項(xiàng)式計(jì)算校驗(yàn),結(jié)果放在15bit長(zhǎng)度的CRC位。接收器也是用相同的多項(xiàng)式計(jì)算總線上的數(shù)據(jù),與接收到的校驗(yàn)值進(jìn)行比較,相同則表示幀正確接收,并在ACK時(shí)隙中發(fā)送顯性狀態(tài),覆蓋發(fā)送器的隱性位;如果不同接收節(jié)點(diǎn)在ACK界定符之后發(fā)送錯(cuò)誤幀。

39194440-4b7b-11ed-a3b6-dac502259ad0.png

圖2 CRC校驗(yàn)原理

CRC校驗(yàn)是為了保證數(shù)據(jù)從一個(gè)CAN收發(fā)器發(fā)送到另外一個(gè)收發(fā)器的信號(hào)完整性,而數(shù)據(jù)場(chǎng)中Checksum校驗(yàn)算法是為了校驗(yàn)數(shù)據(jù)被正確的打包與解包,并且Checksum算法是可以自行制定的,計(jì)算規(guī)則的靈活度高。

Checksum的應(yīng)用場(chǎng)景

對(duì)于Checksum而言,它的應(yīng)用場(chǎng)景有以下三點(diǎn):

01確保數(shù)據(jù)正確打包

有些ECU內(nèi)部的變量在傳遞到CAN收發(fā)器之前就有可能發(fā)生錯(cuò)誤,這種類型的錯(cuò)誤CAN收發(fā)器是無(wú)法檢測(cè)到的。報(bào)文中的信號(hào)和Checksum校驗(yàn)是在應(yīng)用層完成的,將報(bào)文中的各個(gè)字節(jié)進(jìn)行校驗(yàn),報(bào)文和Checksum一起發(fā)送,并且在接收節(jié)點(diǎn)進(jìn)行解析,從而確保數(shù)據(jù)鏈路完整和數(shù)據(jù)正確打包。

02實(shí)現(xiàn)數(shù)據(jù)加密

CAN網(wǎng)絡(luò)是開(kāi)放性的,CAN節(jié)點(diǎn)可以隨時(shí)加入到總線當(dāng)中,為了保證通信的安全性,ECU傳輸?shù)年P(guān)鍵控制信號(hào)需要進(jìn)行加密,報(bào)文的發(fā)送方和接收方使用相同的Checksum算法作為數(shù)據(jù)加密的密鑰。接收方對(duì)比秘鑰,如果不同,此條報(bào)文的數(shù)據(jù)不被使用,從而避免被其他節(jié)點(diǎn)的數(shù)據(jù)影響。Checksum算法不在DBC等數(shù)據(jù)庫(kù)文件中說(shuō)明,可以單獨(dú)保密,從而確保了數(shù)據(jù)的加密。

03提高數(shù)據(jù)的可信度

一幀報(bào)文在多個(gè)字節(jié)中可能出現(xiàn)位錯(cuò)誤,一般情況下CRC8校驗(yàn)的錯(cuò)誤率為1/256,crc16校驗(yàn)的錯(cuò)誤率為1/65536,crc32校驗(yàn)的錯(cuò)誤率為1/(65536*65536)。通過(guò)Checksum校驗(yàn)可以提高數(shù)據(jù)的可信度。

由于Checksum的作用,其也常應(yīng)用在車載以太網(wǎng)當(dāng)中。

在CAPL中Checksum信號(hào)實(shí)現(xiàn)

通常情況下,Checksum和LiveCounter信號(hào)是成對(duì)出現(xiàn)的。在CANoe中使用仿真節(jié)點(diǎn)與真實(shí)控制器交互,需要將LiveCounter和Checksum信號(hào)仿真,這樣才能成功通信。LiveCounter長(zhǎng)度為4bit,它是用于報(bào)文發(fā)送計(jì)數(shù)的生命信號(hào),每發(fā)送一幀報(bào)文后就對(duì)該LiveCounter位加1,會(huì)在0~15之間循環(huán)增加。在報(bào)文其他信號(hào)沒(méi)有改變時(shí),LiveCounter實(shí)時(shí)更新使得Checksum信號(hào)跟著更新,提高校驗(yàn)的準(zhǔn)確性。那么LiveCounter信號(hào)該如何仿真呢?下面以CAN總線DBC為例,介紹在CAPL中實(shí)現(xiàn)LiveCounter和Checksum校驗(yàn)仿真。

CAPL是CANoe和CANalyzer中可用的類C的編程語(yǔ)言。CAPL中程序塊的執(zhí)行由事件控制,在專用的編譯器中開(kāi)發(fā)和編譯,這樣可以訪問(wèn)數(shù)據(jù)庫(kù)中的所有對(duì)象以及系統(tǒng)變量,被汽車電子工程師們廣泛使用。

下圖為L(zhǎng)iveCounter計(jì)算的代碼,為了保證數(shù)據(jù)的準(zhǔn)確性,進(jìn)行一次Checksum計(jì)算,這樣就可以實(shí)現(xiàn)LiveCounter信號(hào)的仿真。

393e2576-4b7b-11ed-a3b6-dac502259ad0.png

圖3 LiveCounter計(jì)算代碼

下圖為示例報(bào)文中各個(gè)信號(hào)位置排布關(guān)系,在此報(bào)文中,Checksum校驗(yàn)方式為前七個(gè)字節(jié)異或運(yùn)算,將運(yùn)算結(jié)果存放到最后一個(gè)字節(jié)。排布圖中共有8個(gè)信號(hào),它們的格式為Motorola格式,也就是俗稱的大端模式。

3960e4a8-4b7b-11ed-a3b6-dac502259ad0.png

圖4 報(bào)文中信號(hào)排布

CAPL只能訪問(wèn)到報(bào)文中的信號(hào),無(wú)法訪問(wèn)到報(bào)文中的每個(gè)字節(jié),要進(jìn)行Checksum計(jì)算,需要根據(jù)信號(hào)排布把前七個(gè)字節(jié)的真實(shí)值重新組合存放在一個(gè)byte類型的數(shù)組當(dāng)中,然后對(duì)這個(gè)數(shù)組異或運(yùn)算獲取的結(jié)果為該報(bào)文中Checksum信號(hào)值。

對(duì)于不同長(zhǎng)度的信號(hào),需要聲明不同類型的數(shù)組來(lái)存放不同的信號(hào)。byte類型長(zhǎng)度為1字節(jié),聲明兩個(gè)byte *[8]類型的數(shù)組(*為省略的數(shù)組名稱)分別存放長(zhǎng)度小于一字節(jié)的信號(hào)和重組后每個(gè)字節(jié)的真實(shí)值;int類型長(zhǎng)度為2字節(jié),聲明int *[8]類型的數(shù)組存放長(zhǎng)度為1-2字節(jié)的信號(hào);long類型長(zhǎng)度為4字節(jié),聲明long *[8]類型的數(shù)組存放長(zhǎng)度為2-4字節(jié)的信號(hào)。下圖為Checksum中信號(hào)長(zhǎng)度小于1字節(jié)的字節(jié)重組示例代碼。

399d90c4-4b7b-11ed-a3b6-dac502259ad0.png

圖5 Checksum字節(jié)重組示例代碼

另外,參與Checksum計(jì)算的是信號(hào)的真實(shí)值而不是物理值,如果信號(hào)中有偏移量和比例因子,在賦值時(shí)需要將信號(hào)加上偏移量,并除以比例因子以獲得真實(shí)值。

39bf3184-4b7b-11ed-a3b6-dac502259ad0.png

圖6 信號(hào)描述

為了保證和真實(shí)控制器通信正常,Checksum數(shù)據(jù)必須準(zhǔn)確,Checksum計(jì)算步驟一般寫(xiě)成無(wú)返回值函數(shù)(void),在LiveCounter信號(hào)改變或者其他信號(hào)改變時(shí)調(diào)用計(jì)算。

正確計(jì)算的LiveCounter和Checksum信號(hào)曲線如下圖所示。

39d0269c-4b7b-11ed-a3b6-dac502259ad0.png

圖7 LiveCounter和Checksum信號(hào)曲線

總結(jié)

本文重點(diǎn)描述了CRC和Checksum信號(hào)的區(qū)別以及Checksum信號(hào)在CAPL中實(shí)現(xiàn)的方法。CAPL編程作為CANoe的靈魂,使CANoe滿足仿真、分析、測(cè)試和診斷的各種復(fù)雜的要求,同時(shí)使CANoe的功能得以不斷擴(kuò)展。

北匯信息作為Vector中國(guó)的合作伙伴,致力于為中國(guó)汽車客戶提供優(yōu)質(zhì)的工具支持、解決方案以及測(cè)試服務(wù)。

注:圖片來(lái)自于Vector。

審核編輯:湯梓紅

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

    關(guān)注

    57

    文章

    2921

    瀏覽量

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

    關(guān)注

    0

    文章

    204

    瀏覽量

    30137
  • 信號(hào)
    +關(guān)注

    關(guān)注

    11

    文章

    2854

    瀏覽量

    78323

原文標(biāo)題:CAPL編程的進(jìn)階應(yīng)用 | Checksum算法的實(shí)現(xiàn)

文章出處:【微信號(hào):QCDZSJ,微信公眾號(hào):汽車電子設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    CAN通信協(xié)議里一種checksum校驗(yàn)和的方法

    看到了一種checksum校驗(yàn)和的方法,分享給大家。
    的頭像 發(fā)表于 10-31 12:58 ?6114次閱讀
    CAN通信協(xié)議里一種<b class='flag-5'>checksum</b>校驗(yàn)和的<b class='flag-5'>方法</b>

    IAR Embedded Workbench中計(jì)算多個(gè)地址區(qū)間的Checksum

    在前面的文章“使用IAR Embedded Workbench和MCU的CRC模塊來(lái)檢查代碼的完整性”中介紹了如何在IAR Embedded Workbench配置生成對(duì)應(yīng)代碼區(qū)域的CRC校驗(yàn)碼
    的頭像 發(fā)表于 01-05 12:33 ?2136次閱讀
    <b class='flag-5'>在</b>IAR Embedded Workbench中計(jì)算多個(gè)地址區(qū)間的<b class='flag-5'>Checksum</b>

    求助,關(guān)于PSOC4模擬EEPROM的checksum問(wèn)題求解

    的部分,這樣的話當(dāng)芯片燒錄了Hex2后運(yùn)行,通過(guò)PSoC Programmer去讀取芯片的checksum會(huì)是變化的嗎?謝謝。 [1]main.c的內(nèi)容如下: const uint8_t
    發(fā)表于 02-02 08:48

    CAPL編程進(jìn)階應(yīng)用——Checksum算法的實(shí)現(xiàn)#CANoe #CAPL #Checksum

    編程
    北匯信息POLELINK
    發(fā)布于 :2023年04月21日 23:00:01

    如何在IAR配置CRC參數(shù)

    0xB23CD458· 對(duì)輸出數(shù)據(jù)的位反轉(zhuǎn)。o 例如輸出數(shù)據(jù)為0x11223344,反轉(zhuǎn)后為0x22CC4488IAR的CRC配置1.修改Link文件指定checksumFLASH
    發(fā)表于 09-06 16:01

    請(qǐng)問(wèn)如何在IAR配置CRC參數(shù)?

    前言 STM32全系列產(chǎn)品都具有CRC外設(shè),對(duì)CRC的計(jì)算提供硬件支持,為應(yīng)用程序節(jié)省了代碼空間。CRC校驗(yàn)值可以用于數(shù)據(jù)傳輸的數(shù)據(jù)正確性的驗(yàn)證,也可用于數(shù)據(jù)存儲(chǔ)時(shí)的完整性檢查。
    發(fā)表于 07-02 02:32

    如何解決checksum bad的問(wèn)題?

    怎么解決checksum bad的問(wèn)題
    發(fā)表于 10-23 04:53

    TMS320LF2403A下載時(shí)提示的Checksum計(jì)算方法?

    使用CCS3.3和TDS510仿真器下載時(shí),軟件上提示的Checksum,請(qǐng)問(wèn)此Checksum是如何計(jì)算的,有沒(méi)有相關(guān)的文檔介紹呢?
    發(fā)表于 06-16 15:36

    labview怎樣計(jì)算checksum

    labview怎么計(jì)算checksum呢?
    發(fā)表于 11-24 15:10

    怎么讀取瑞薩mcu的checksum

    怎么讀取瑞薩mcu的checksum?
    發(fā)表于 02-10 07:03

    M451芯片F(xiàn)MC讀寫(xiě)flash,如何使用checksum功能?

    M451芯片,F(xiàn)MC讀寫(xiě)flash,如何使用checksum功能? 另外,5.0V供電時(shí),F(xiàn)MC正常讀寫(xiě)的最低電壓是多少?會(huì)不會(huì)出現(xiàn)因?yàn)殡妷哼^(guò)低而不能寫(xiě)成功的現(xiàn)象?
    發(fā)表于 06-25 10:32

    新功能發(fā)布 | TSMaster如何實(shí)現(xiàn)checksum和rolling counter的本地化支持

    前言TSMaster近日更新了五大模塊的新功能,主要包含網(wǎng)絡(luò)仿真中的checksum和rollingcounter的本地化支持、J1939多幀報(bào)文收發(fā)、MATLAB自動(dòng)化控制模塊等等。小編接下來(lái)將在
    的頭像 發(fā)表于 08-29 10:12 ?2358次閱讀
    新功能發(fā)布 | TSMaster如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>checksum</b>和rolling counter的本地化支持

    CAPL編程的進(jìn)階應(yīng)用 | Checksum算法的實(shí)現(xiàn)

    作者:北城舊巷小編:吃不飽CRCChecksum區(qū)別相信大家CANMsg或者ETHPDU中經(jīng)常會(huì)看到Checksum這種
    的頭像 發(fā)表于 10-11 09:29 ?1623次閱讀
    <b class='flag-5'>CAPL</b>編程的進(jìn)階應(yīng)用 | <b class='flag-5'>Checksum</b>算法的<b class='flag-5'>實(shí)現(xiàn)</b>

    TSMaster如何自定義CRC校驗(yàn)算法

    通訊過(guò)程,用戶需要利用CheckSum信號(hào)對(duì)傳輸數(shù)據(jù)用自己規(guī)定的算法邏輯進(jìn)行校驗(yàn),來(lái)看數(shù)據(jù)傳輸過(guò)程
    的頭像 發(fā)表于 09-09 08:23 ?1998次閱讀
    TSMaster<b class='flag-5'>中</b>如何自定義<b class='flag-5'>CRC</b>校驗(yàn)算法

    TI電量計(jì)Checksum功能的介紹

    電子發(fā)燒友網(wǎng)站提供《TI電量計(jì)Checksum功能的介紹.pdf》資料免費(fèi)下載
    發(fā)表于 09-05 11:19 ?0次下載
    TI電量計(jì)<b class='flag-5'>Checksum</b>功能的介紹