精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

累加和校驗算法的實現

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

前言

因為外界總會對電路存在或多或少的干擾,對于數字信號,很可能導致傳輸的數據出現千差萬別。

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

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

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

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

累加和校驗算法的實現

發送方:

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

接收方:

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

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

還是舉個例子:

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

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

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

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

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

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5044

    文章

    18810

    瀏覽量

    298397
  • 累加
    +關注

    關注

    0

    文章

    6

    瀏覽量

    6788
  • 校驗算法
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6599

原文標題:累加和校驗算法在嵌入式中的應用~

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

收藏 人收藏

    評論

    相關推薦

    三菱plc累加指令怎么用

    中,累加指令通常使用ADD指令來實現。以下是關于三菱PLC累加指令的詳細介紹。 累加指令的基本概念 累加指令是一種對數據進行求和操作的指令,
    的頭像 發表于 06-20 11:34 ?2012次閱讀

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

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

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

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

    總線數據傳輸的要求有哪些 can總線和lin總線的區別

    數據傳輸應該是可靠的,即確保數據無誤、完整地從發送方傳輸到接收方。這可以通過使用糾錯編碼、檢驗和校驗等技術來實現
    發表于 01-10 16:18 ?1129次閱讀

    fpga報告crc故障是什么意思

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

    虹科技術 | 保障數據傳輸穩定性:BabyLIN產品的CRC算法實現

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

    虹科技術|保障數據傳輸穩定性:BabyLIN產品的CRC算法實現

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

    簡述循環冗余碼crc校驗方法的工作原理

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

    CRC校驗原理及其軟件實現

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

    常用的校驗算法有哪些?

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

    modbus協議怎么實現一個數據幀的校驗

    modbus是怎么實現校驗
    發表于 10-31 08:09

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

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

    奇偶校驗和crc校驗的區別 CRC校驗和奇偶校驗之間有什么關系?

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

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

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

    密碼算法實現的SCA防護

    對于安全控制器而言,密碼算法實現與安全性緊密相關,密碼算法實現
    的頭像 發表于 10-11 09:12 ?507次閱讀