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

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

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

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

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

冬至子 ? 來源:知鋰 ? 作者:SW十五 ? 2023-10-31 12:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

看到了一種checksum校驗和的方法,分享給大家。

為什么需要checksum

前段時間分享ISO 11898內(nèi)容的時候,提到了幀結(jié)構(gòu)里的CRC場。

CAN信號在傳輸?shù)臅r候,有可能會因為干擾、攻擊之類的原因產(chǎn)生錯誤,比如發(fā)送方要發(fā)1,結(jié)果傳輸錯誤,到接收方那就成0了。為了避免這種比特錯誤,數(shù)據(jù)鏈路層做了CRC(Cyclic Redundancy Check)校驗。

但是,CRC并不能檢測到所有的差錯,有些方式是可以騙過去的,就像黑客攻破防火墻一樣。為了盡可能保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,我們用的CAN通信里還增加了checksum校驗和,checksum在傳輸層。

當(dāng)然,checksum起初被發(fā)明是因為有些通信的數(shù)據(jù)鏈路層沒有CRC,新出的一種校驗方法。

另外,CRC和checksum只能做到無差錯接收,而不是可靠接收。接收方如果發(fā)現(xiàn)了比特錯誤,這幀報文不要了,那必然是少了一幀報文。為了避免這個問題,CAN有重傳和確認(rèn)機制,接收方會發(fā)出信號告訴發(fā)送方有錯誤,那發(fā)送方將重傳該幀報文,接收方收到后回復(fù)確認(rèn)后結(jié)束。

checksum舉例

我見過幾種checksum方式,下面以最近看到的一個為例。僅做分享。

圖片

checksum的計算方式

從上圖可以看出,這幀報文里Byte 0是checksum的值。checksum是所有字節(jié)模256的和的反。這里的所有字節(jié)就是Byte 1到Byte 7。

模256就是不考慮大于等于255的進(jìn)位,只做8位以內(nèi)的算術(shù)加法,即求和的值不會比255(0xFF)更大了。

那怎么做到不比255(0xFF)大呢?求和后超過255的進(jìn)位(Carry),再去求和(ADD)。這個進(jìn)位(Carry)是放到LSB(Least Significant Bit,二進(jìn)制的最低位)去求和的。

模256的和是sum,再對sum取反(inverted),得出checksum。

圖片

checksum的計算舉例

從圖里的例子可以計算,Byte 1(0x4A)+Byte 2(0x55)=0x9F,這里進(jìn)位是0。

然后0x9F+Byte 3(0x93)=0x132,這個0x132就比0xFF大了,進(jìn)位是1,那就把進(jìn)位和該字節(jié)的Bit 0~Bit 7再求和。

圖片

依次計算,最后求得sum=0x20。再取反,得出checksum=0xDF。

接收方收到數(shù)據(jù)后,算出Byte 1到Byte 7的sum,再與發(fā)送方發(fā)出的checksum(Byte 0)相加,得出0xFF就說明該幀報文數(shù)據(jù)是正確的,可以接收。否則該幀報文棄之不用。

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

    關(guān)注

    5

    文章

    97

    瀏覽量

    18434
  • 接收機
    +關(guān)注

    關(guān)注

    9

    文章

    1224

    瀏覽量

    54593
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    807

    瀏覽量

    42338
  • CRC校驗
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    15606
  • 信號傳輸
    +關(guān)注

    關(guān)注

    4

    文章

    456

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    CAN總線通信協(xié)議的基礎(chǔ)知識

    本文將介紹CAN總線通信協(xié)議的基礎(chǔ)知識,目前的內(nèi)容僅為通用的協(xié)議部分,暫不涉及具體的外設(shè)模塊的用法。研究通信協(xié)議的具體內(nèi)容,主要是看建立通信
    的頭像 發(fā)表于 06-16 10:58 ?7695次閱讀
    <b class='flag-5'>CAN</b>總線<b class='flag-5'>通信協(xié)議</b>的基礎(chǔ)知識

    CAN通信協(xié)議

    CAN通信協(xié)議,需要的看看。
    發(fā)表于 04-19 17:11

    如何去設(shè)計一種點對點通信協(xié)議PPPoE模塊?

    如何去設(shè)計一種點對點通信協(xié)議PPPoE模塊?
    發(fā)表于 06-03 07:06

    STM32 CAN通信協(xié)議

    CAN 簡介CAN 是控制器區(qū)域網(wǎng)絡(luò)(Controller Area Network) 的縮寫(以下稱為CAN),是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議。在當(dāng)前的汽車產(chǎn)業(yè)中,出于對安全性、舒
    發(fā)表于 08-19 09:31

    CAN通信協(xié)議簡析

    CAN 簡介CAN 是 Controller Area Network 的縮寫(以下稱為 CAN),是 ISO 國際標(biāo)準(zhǔn)化的串行通信協(xié)議。在當(dāng)前的汽車產(chǎn)業(yè)中,出于對安全性、舒適性、方便
    發(fā)表于 08-19 06:29

    一種支持TTL協(xié)議設(shè)備與CAN協(xié)議設(shè)備通信的電路

    本實用新型涉及通信電路,尤其是一種支持TTL協(xié)議設(shè)備與CAN協(xié)議設(shè)備通信的電路。背景技術(shù):
    發(fā)表于 08-23 08:31

    一種高效的串行通信協(xié)議的制定及實現(xiàn)

    一種高效的串行通信協(xié)議的制定及實現(xiàn)
    發(fā)表于 11-09 18:08 ?56次下載

    CAN總線通信協(xié)議的分析和實現(xiàn) CAN總線通信協(xié)議以及其實現(xiàn)方法

    CAN總線通信協(xié)議的分析和實現(xiàn) CAN總線通信協(xié)議以及其實現(xiàn)方法
    發(fā)表于 09-04 08:45 ?40次下載
    <b class='flag-5'>CAN</b>總線<b class='flag-5'>通信協(xié)議</b>的分析和實現(xiàn) <b class='flag-5'>CAN</b>總線<b class='flag-5'>通信協(xié)議</b>以及其實現(xiàn)<b class='flag-5'>方法</b>

    一種輕量級的通信協(xié)議 - MAVLink

    一種輕量級的通信協(xié)議 - MAVLink
    的頭像 發(fā)表于 03-12 14:14 ?5235次閱讀
    <b class='flag-5'>一種</b>輕量級的<b class='flag-5'>通信協(xié)議</b> -  MAVLink

    CAN總線通信協(xié)議

    CAN總線通信協(xié)議詳細(xì)如下。
    發(fā)表于 04-19 16:54 ?79次下載

    CAN入門書之中文版CAN通信協(xié)議

    CAN入門書之中文版CAN通信協(xié)議
    發(fā)表于 11-18 16:36 ?0次下載

    個簡單的基礎(chǔ)通信協(xié)議的設(shè)計與實現(xiàn)

    之間的數(shù)據(jù)的穩(wěn)定傳輸,通信協(xié)議的設(shè)計需要考慮很多的問題。當(dāng)然應(yīng)對不同的應(yīng)用場景,可以有針對性的設(shè)計不同的通信協(xié)議。一種常見的通信協(xié)議格式這是一種
    發(fā)表于 12-14 18:38 ?10次下載
    <b class='flag-5'>一</b>個簡單的基礎(chǔ)<b class='flag-5'>通信協(xié)議</b>的設(shè)計與實現(xiàn)

    can總線的通信協(xié)議有哪些 CAN接口保護(hù)及工作原理

    CAN總線(Controller Area Network)是一種廣泛應(yīng)用于汽車、工業(yè)自動化和其他領(lǐng)域的串行通信協(xié)議。以下是幾種常見的CAN總線通信
    的頭像 發(fā)表于 08-18 14:40 ?2.6w次閱讀
    <b class='flag-5'>can</b>總線的<b class='flag-5'>通信協(xié)議</b>有哪些 <b class='flag-5'>CAN</b>接口保護(hù)及工作原理

    CAN通信協(xié)議中有哪幾種幀類型?CAN通信中幀格式的作用

    CAN通信協(xié)議中有四幀類型,分別是數(shù)據(jù)幀、遠(yuǎn)程幀、錯誤幀和過載幀。
    的頭像 發(fā)表于 01-30 09:18 ?6984次閱讀

    can通信協(xié)議主要由什么完成

    CAN(Controller Area Network)是一種基于消息的通信協(xié)議,主要用于汽車和工業(yè)領(lǐng)域。它是一種局域網(wǎng)技術(shù),允許多個設(shè)備在同
    的頭像 發(fā)表于 06-16 10:29 ?1084次閱讀