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

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

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

累加和校驗算法的實現(xiàn)

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 作者:嵌入式ARM ? 2021-03-04 15:57 ? 次閱讀

前言

因為外界總會對電路存在或多或少的干擾,對于數(shù)字信號,很可能導(dǎo)致傳輸?shù)臄?shù)據(jù)出現(xiàn)千差萬別。

對于很多需要傳輸數(shù)據(jù)的場合,尤其是一些數(shù)據(jù)可能會影響一些硬件的動作(諸如嵌入式的一些設(shè)備、機器人等),錯誤的數(shù)據(jù)可能會帶來一些隱性風(fēng)險,想想都可怕。

由于本人是嵌入式相關(guān)領(lǐng)域的,平時玩的都是單片機,當(dāng)然單片機的性能千差萬別,不過很多的性能都只能說是勉強夠用,畢竟成本考慮。

所以今天的校驗算法,比較簡單,但是有效,尤其是一些性能一般的硬件。

說道今日主角:累加和校驗算法,又名CheckSum算法。至于出處,這里就不考究了。

累加和校驗算法的實現(xiàn)

發(fā)送方:

對要數(shù)據(jù)累加,得到一個數(shù)據(jù)和,對和求反,即得到我們的校驗值。然后把要發(fā)的數(shù)據(jù)和這個校驗值一起發(fā)送給接收方。

接收方:

對接收的數(shù)據(jù)(包括校驗和)進行累加,然后加1,如果得到0,那么說明數(shù)據(jù)沒有出現(xiàn)傳輸錯誤。

注意,此處發(fā)送方和接收方用于保存累加結(jié)果的類型一定要一致,否則加1就無法實現(xiàn)溢出從而無法得到0,校驗就會無效。

還是舉個例子:

發(fā)送方:要發(fā)送0xA8,0x50,我們使用unsigned char(8位)來保存累加和,即為0xF8(0b11111000),取反得到校驗和為0x07(0b00000111)。然后將這三個數(shù)據(jù)發(fā)送出去。

接收方:如果接收正確,這三個數(shù)據(jù)的累加和就是(0b11111111),此時加1,則得到的結(jié)果為0(實際得到的應(yīng)該是0b100000000,但是由于是使用unsigned char(8位)來保存累加和,所以高位被截取掉,只剩下了低八位的8個0).

由上面的例子,我們可以知道算法的目的是:使累加和和校驗值相加得到一個二進制下每一位都是1的結(jié)果,這個結(jié)果很明顯很好處理,這種算法實現(xiàn)起來也很簡單,下面給出C語言的代碼示例。

發(fā)送方:以下是如何得到校驗值的代碼,結(jié)果就是我們想要的校驗值。

接收方:輸入已包含發(fā)送發(fā)發(fā)來的校驗值,如果函數(shù)返回的值如果是0,說明數(shù)據(jù)正確。

責(zé)任編輯:lq

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

    關(guān)注

    5045

    文章

    18817

    瀏覽量

    298489
  • 累加
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6788
  • 校驗算法
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6599

原文標(biāo)題:累加和校驗算法在嵌入式中的應(yīng)用~

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    三菱plc累加指令怎么用

    中,累加指令通常使用ADD指令來實現(xiàn)。以下是關(guān)于三菱PLC累加指令的詳細(xì)介紹。 累加指令的基本概念 累加指令是一種對數(shù)據(jù)進行求和操作的指令,
    的頭像 發(fā)表于 06-20 11:34 ?2056次閱讀

    Hex文件格式CRC校驗,怎么編寫計算校驗的程序?

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

    淺析MCU通信、存儲常用的簡單校驗算法

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

    總線數(shù)據(jù)傳輸?shù)囊笥心男an總線和lin總線的區(qū)別

    數(shù)據(jù)傳輸應(yīng)該是可靠的,即確保數(shù)據(jù)無誤、完整地從發(fā)送方傳輸?shù)浇邮辗健_@可以通過使用糾錯編碼、檢驗和校驗等技術(shù)來實現(xiàn)
    發(fā)表于 01-10 16:18 ?1145次閱讀

    fpga報告crc故障是什么意思

    方法,通過對發(fā)送的數(shù)據(jù)進行計算并附加到數(shù)據(jù)末尾,接收方能夠使用相同的校驗算法來檢測傳輸中的錯誤。CRC可以檢測多種不同類型的錯
    的頭像 發(fā)表于 01-04 11:06 ?1026次閱讀

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

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

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

    文章將以CRC8校驗為例,介紹在BabyLIN產(chǎn)品中如何使用CRC校驗算法。 CRC校驗原理 在CAN報文中,增加Checksum校驗,能夠用來檢測
    的頭像 發(fā)表于 01-02 10:45 ?356次閱讀
    虹科技術(shù)|保障數(shù)據(jù)傳輸穩(wěn)定性:BabyLIN產(chǎn)品的CRC<b class='flag-5'>算法</b><b class='flag-5'>實現(xiàn)</b>

    簡述循環(huán)冗余碼crc校驗方法的工作原理

    位 首先,需要將需要進行CRC校驗的數(shù)據(jù)進行補位操作。CRC校驗算法通常以二進制的形式工作,因此需要將原始數(shù)據(jù)轉(zhuǎn)換為二進制。同時,生成多項式也需要進行補位操作,使其與數(shù)據(jù)的位數(shù)相對應(yīng)。 例如,如果數(shù)據(jù)為11101,生成多項式為1101,則
    的頭像 發(fā)表于 12-20 11:27 ?802次閱讀

    CRC校驗原理及其軟件實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《CRC校驗原理及其軟件實現(xiàn).pdf》資料免費下載
    發(fā)表于 11-16 10:11 ?1次下載
    CRC<b class='flag-5'>校驗</b>原理及其軟件<b class='flag-5'>實現(xiàn)</b>

    常用的校驗算法有哪些?

    常用的校驗算法有哪些,是不是和通信規(guī)約有關(guān)。比如MODBUS一般都用CRC16(不確定是不是叫這個)。這些校驗算法是之前積累下來的嗎。自己也可以定義一個校驗算法吧,只要發(fā)送端和接收端用同一個
    發(fā)表于 11-03 06:50

    modbus協(xié)議怎么實現(xiàn)一個數(shù)據(jù)幀的校驗?

    modbus是怎么實現(xiàn)校驗
    發(fā)表于 10-31 08:09

    Linux獲取文件MD5碼命令md5sum詳解

    md5sum 用于計算和校驗文件的MD5值。
    的頭像 發(fā)表于 10-27 11:20 ?2916次閱讀
    Linux獲取文件MD5碼命令md5sum詳解

    奇偶校驗和crc校驗的區(qū)別 CRC校驗和奇偶校驗之間有什么關(guān)系?

    奇偶校驗和crc校驗的區(qū)別 CRC校驗和奇偶校驗之間有什么關(guān)系? 奇偶校驗和 CRC(Cyclic Redundancy Check)
    的頭像 發(fā)表于 10-17 16:28 ?3046次閱讀

    什么是奇校驗和偶校驗?常見的奇偶校驗方式有哪些?

    什么是奇校驗和偶校驗?常見的奇偶校驗方式有哪些? 1. 奇偶校驗是指在數(shù)字通信中采用一種技術(shù)對傳輸?shù)臄?shù)據(jù)進行校驗。由于數(shù)字信號傳輸容易受到干
    的頭像 發(fā)表于 10-17 16:28 ?9788次閱讀

    密碼算法實現(xiàn)的SCA防護

    對于安全控制器而言,密碼算法實現(xiàn)與安全性緊密相關(guān),密碼算法實現(xiàn)
    的頭像 發(fā)表于 10-11 09:12 ?509次閱讀