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

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

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

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

淺析MCU通信、存儲(chǔ)常用的簡(jiǎn)單校驗(yàn)算法

strongerHuang ? 來(lái)源:strongerHuang ? 2024-03-07 10:56 ? 次閱讀

UART有一個(gè)奇偶校驗(yàn),CAN通信有CRC校驗(yàn)。Modbus、MAVlink、USB等通信協(xié)議也有校驗(yàn)信息

在自定義數(shù)據(jù)存儲(chǔ)時(shí),有經(jīng)驗(yàn)的工程師都會(huì)添加一定校驗(yàn)信息。

你平時(shí)通信,或者數(shù)據(jù)存儲(chǔ)時(shí),你有用到校驗(yàn)信息嗎?下面就介紹幾種常見(jiàn)的校驗(yàn)算法

校驗(yàn)和

校驗(yàn)和是最基本,也是嵌入式軟件工程師最常用的一種校驗(yàn)算法,其實(shí)現(xiàn)方法很簡(jiǎn)單,簡(jiǎn)單到只有幾行代碼。

實(shí)現(xiàn)的方式方法很多,不同的編程語(yǔ)言,不同的應(yīng)用有所不同,下面以C語(yǔ)言8位校驗(yàn)和為例:

uint8_t CheckSum(uint8_t *Buf, uint8_t Len)
{
  uint8_t i = 0;
  uint8_t sum = 0;
  uint8_t checksum = 0;


  for(i=0; i

異或校驗(yàn)

【異或校驗(yàn)】與【校驗(yàn)和】類似,對(duì)數(shù)據(jù)進(jìn)行“異或”,最終得到一個(gè)“異或值”。

uint8_t CheckXOR(uint8_t *Buf, uint8_t Len)
{
  uint8_t i = 0;
  uint8_t x = 0;


  for(i=0; i
校驗(yàn)和、異或校驗(yàn)的方式有很多種,比如有的還會(huì)傳入一個(gè)參數(shù)作為異或校驗(yàn)的值。 

當(dāng)然,以上代碼僅供學(xué)習(xí)參考,實(shí)際應(yīng)用需結(jié)合項(xiàng)目情況修改代碼。

CRC校驗(yàn)

CRC:Cyclic Redundancy Check,即循環(huán)冗余校驗(yàn)。

CRC是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯(cuò)功能,對(duì)數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。

CRC校驗(yàn)屬于冗余校驗(yàn)中的一種,大學(xué)學(xué)計(jì)算機(jī)相關(guān)專業(yè)的同學(xué)都應(yīng)該學(xué)過(guò)CRC校驗(yàn)(學(xué)習(xí)時(shí)可能沒(méi)幾個(gè)同學(xué)搞明白了)

CRC有多種變體,比如:CRC-1、 CRC-5-USB、 CRC-8、 CRC-16、 CRC-32、 CRC-64等。其中,在嵌入式領(lǐng)域,CRC-16用的比較多。

常見(jiàn)CRC參數(shù)模型:

a686751e-dc1d-11ee-a297-92fbcf53809c.png ?

比如一種在單片機(jī)上實(shí)現(xiàn)CRC16的源碼:

uint8_t CRCTAB_H[256] = {/*表省略*/};
uint8_t CRCTAB_L[256] = {/*表省略*/};
void CRC16(uint8_t *pData, uint8_t Len, uint8_t *CRC_H, uint8_t *CRC_L)
{
  uint8_t  i;
  uint8_t  index;
  uint8_t  crc_h = 0xFF;
  uint8_t  crc_l = 0xFF;


  for(i=0; i
CRC校驗(yàn)不同場(chǎng)景實(shí)現(xiàn)方式不同

網(wǎng)上還有在線計(jì)算CRC校驗(yàn)值以及代碼生成工具,感興趣的讀者可以自行了解。

MD5算法

MD5:Message-Digest Algorithm 5,即“信息-摘要算法。

從名字來(lái)看就知道它是從MD3、MD4發(fā)展而來(lái)的一種加密算法,其主要通過(guò)采集文件的信息摘要,以此進(jìn)行計(jì)算并加密。

通過(guò)MD5算法進(jìn)行加密,文件就可以獲得一個(gè)唯一的MD5值,這個(gè)值是獨(dú)一無(wú)二的,就像我們的指紋一樣,因此我們就可以通過(guò)文件的MD5值來(lái)確定文件是否正確,密碼進(jìn)行加密后也會(huì)生成MD5值,論壇就是通過(guò)MD5值來(lái)驗(yàn)證用戶的密碼是否正確的。

a69c7670-dc1d-11ee-a297-92fbcf53809c.png

MD5是輸入不定長(zhǎng)度信息,輸出固定長(zhǎng)度128-bits的算法。經(jīng)過(guò)程序流程,生成四個(gè)32位數(shù)據(jù),最后聯(lián)合起來(lái)成為一個(gè)128-bits散列。基本方式為,求余、取余、調(diào)整長(zhǎng)度、與鏈接變量進(jìn)行循環(huán)運(yùn)算。得出結(jié)果。

MD5的源碼在網(wǎng)上都能找到現(xiàn)成的,而且有不同編程語(yǔ)言(C、 C++JAVA)版本。

其他算法

隨著變成技術(shù)越來(lái)越發(fā)達(dá),校驗(yàn)算法也越來(lái)越多,有通用的算法,也有特殊領(lǐng)域特定的算法。

比如我之前做過(guò)密碼相關(guān)的開(kāi)發(fā),使用了由密碼管理局發(fā)布的SM3密碼雜湊算法

還有從MD4算法改進(jìn)而來(lái)的SHA-1算法(Secure Hash Algorithm 1即安全散列算法1)。




審核編輯:劉清

聲明:本文內(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通信
    +關(guān)注

    關(guān)注

    5

    文章

    93

    瀏覽量

    17810
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7598

    瀏覽量

    136170
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    240

    瀏覽量

    26616
  • CRC校驗(yàn)
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    15188

原文標(biāo)題:MCU通信、存儲(chǔ)常用的簡(jiǎn)單校驗(yàn)算法

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于C8051F的CRC校驗(yàn)算法的實(shí)現(xiàn)

    基于C8051F的CRC校驗(yàn)算法的實(shí)現(xiàn) 
    發(fā)表于 03-14 17:14

    常用校驗(yàn)算法有哪些?

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

    基于iSCSI協(xié)議校驗(yàn)算法的改進(jìn)

    CRC 校驗(yàn)作為iSCSI 協(xié)議中使用最頻繁的一種檢錯(cuò)機(jī)制,其算法的優(yōu)劣會(huì)直接影響協(xié)議的執(zhí)行效率。文章在分析傳統(tǒng)CRC算法低效率的基礎(chǔ)上,引入了一種快速并行的CRC 算法,并根據(jù)iSC
    發(fā)表于 11-08 16:45 ?12次下載

    BCH解碼校驗(yàn)算法

      BCH解碼校驗(yàn)原理   二元BCH(15,7)碼的解碼校驗(yàn)原理是在時(shí)域上直接利用碼的代數(shù)結(jié)構(gòu)進(jìn)行解碼。首先,由于BCH(15,7)碼的糾錯(cuò)能力t=2,所以根據(jù)接收序列計(jì)算伴隨式sk=r(αk),其
    發(fā)表于 07-30 09:32 ?5666次閱讀
    BCH解碼<b class='flag-5'>校驗(yàn)算法</b>

    IP協(xié)議校驗(yàn)算法程序

     IP 協(xié)議采用統(tǒng)一的校驗(yàn)算法,其計(jì)算比較簡(jiǎn)單:設(shè)校驗(yàn)和初值為0,然后對(duì)數(shù)據(jù)每16位求異或,結(jié)果取反,便得校驗(yàn)和。校驗(yàn)時(shí)將數(shù)據(jù)(含
    發(fā)表于 08-13 10:55 ?1017次閱讀

    LTE系統(tǒng)的CRC校驗(yàn)算法及DSP實(shí)現(xiàn)

    通過(guò)對(duì)兩種常用CRC校驗(yàn)算法的研究分析,為T(mén)D-LTE測(cè)試儀表系統(tǒng)選擇了一種最優(yōu)的CRC校驗(yàn)算法,并在TMS320C64xDSP中實(shí)現(xiàn)。將CRC校驗(yàn)程序在CCS3.3中運(yùn)行,其結(jié)果驗(yàn)證
    發(fā)表于 02-23 14:58 ?30次下載

    變壓器設(shè)計(jì)(經(jīng)驗(yàn)算法)

    變壓器設(shè)計(jì)(經(jīng)驗(yàn)算法)
    發(fā)表于 03-15 09:12 ?4次下載

    一種基于矩陣的并行CRC校驗(yàn)算法

    針對(duì)高速網(wǎng)絡(luò)通信中高位寬并行數(shù)據(jù)的實(shí)時(shí)校驗(yàn)需求,提出了一種可單周期實(shí)現(xiàn)的、面向128位并行數(shù)據(jù)的循環(huán)冗余校驗(yàn)算法(Cyclic Redundancy Check,CRC )。該算法首先
    發(fā)表于 10-30 16:39 ?3次下載
    一種基于矩陣的并行CRC<b class='flag-5'>校驗(yàn)算法</b>

    循環(huán)冗余校驗(yàn)算法

    針對(duì)循環(huán)冗余校驗(yàn)(CRC)準(zhǔn)則在信道條件惡化時(shí)可能使譯碼出現(xiàn)較大迭代次數(shù)及錯(cuò)誤的問(wèn)題,提出了基于可靠度的迭代停止算法及重傳算法。首先,每次迭代后,計(jì)算本次譯碼中間結(jié)果的可靠度,通過(guò)判斷其是否達(dá)到閾值
    發(fā)表于 01-14 16:24 ?0次下載
    循環(huán)冗余<b class='flag-5'>校驗(yàn)算法</b>

    如何用SMART編寫(xiě)CRC校驗(yàn)算法程序

    CRC即循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check):是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段
    的頭像 發(fā)表于 11-26 09:50 ?9180次閱讀
    如何用SMART編寫(xiě)CRC<b class='flag-5'>校驗(yàn)算法</b>程序

    如何使用SMART編寫(xiě)CRC的校驗(yàn)算法程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用SMART編寫(xiě)CRC的校驗(yàn)算法程序。
    發(fā)表于 10-24 08:00 ?4次下載
    如何使用SMART編寫(xiě)CRC的<b class='flag-5'>校驗(yàn)算法</b>程序

    基于TMS320C64x的CRC校驗(yàn)算法分析

    CRC(Cyclic Redundancy Check)循環(huán)冗余校驗(yàn)碼是數(shù)據(jù)通信領(lǐng)域中常用的一種差錯(cuò)校驗(yàn)碼,在早期的通信中運(yùn)用廣泛。
    發(fā)表于 08-10 16:46 ?1507次閱讀
    基于TMS320C64x的CRC<b class='flag-5'>校驗(yàn)算法</b>分析

    CRC校驗(yàn)算法原理及c語(yǔ)言實(shí)現(xiàn)

    CRC校驗(yàn)算法原理及c語(yǔ)言實(shí)現(xiàn)
    發(fā)表于 11-30 10:04 ?9次下載

    單片機(jī)中常用的輕量級(jí)校驗(yàn)算法

    UART有一個(gè)奇偶校驗(yàn),CAN通信有CRC校驗(yàn)。Modbus、MAVlink、USB等通信協(xié)議也有校驗(yàn)信息。
    的頭像 發(fā)表于 03-24 10:22 ?792次閱讀

    單片機(jī)中幾種常見(jiàn)的校驗(yàn)算法介紹

    CRC是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯(cuò)功能,對(duì)數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后
    發(fā)表于 06-05 14:25 ?1575次閱讀
    單片機(jī)中幾種常見(jiàn)的<b class='flag-5'>校驗(yàn)算法</b>介紹