99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

CRC-16公式是什么?如何利用單片機(jī)去驗(yàn)證呢

通信工程師專輯 ? 來源:通信工程師專輯 ? 作者:了凡三訓(xùn) ? 2022-11-09 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、實(shí)驗(yàn)?zāi)康?/p>

1、完成CRC-16的程序編寫

2、根據(jù)模板整改,實(shí)現(xiàn)函數(shù)調(diào)用

3、在程序中不可以出現(xiàn)長(zhǎng)數(shù)組

4、利用單片機(jī)驗(yàn)證

二、CRC-16校驗(yàn)

CRC-16公式是什么?

94e074a0-5f59-11ed-8abf-dac502259ad0.png

上堂課提到了哦!

再來看看框圖是什么樣子?

94f535e8-5f59-11ed-8abf-dac502259ad0.png


每個(gè)小框都是一個(gè)寄存器

CRC即循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check):是數(shù)據(jù)通信領(lǐng)域中最常用的一種差錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。

生成步驟如下:

1、將x的最高次冪為R的生成多項(xiàng)式G(x)轉(zhuǎn)換成對(duì)應(yīng)的R+1位二進(jìn)制數(shù)。

2、將信息碼左移R位,相當(dāng)于對(duì)應(yīng)的信息多項(xiàng)式C(x)*x的R次方。

3、用生成多項(xiàng)式(二進(jìn)制數(shù))對(duì)信息碼做除,得到R位的余數(shù)。

4、將余數(shù)拼到信息碼左移后空出的位置,得到完整的CRC碼。

三、實(shí)驗(yàn)程序

1、調(diào)用函數(shù)

這里完成的是寄存器生成法,同樣的根據(jù)模板,主要的是調(diào)用函數(shù)的編寫。

調(diào)用函數(shù)首先要進(jìn)行調(diào)用函數(shù)名的定義

function z = crc16(message)

接下來是寄存器的編寫,一開始寄存器的初始值都為0,為了程序的簡(jiǎn)明,根據(jù)實(shí)驗(yàn)要求不可以出現(xiàn)長(zhǎng)數(shù)組,只能出現(xiàn)一個(gè)數(shù)組。

a=zeros(1,16)

zeros函數(shù)是全零矩陣,所以滿足要求。

根據(jù)公式和框圖就可直接寫出每個(gè)寄存器的等式,這時(shí)候就要注意框圖中的箭頭方向,最重要的是要在最前面先定義第一個(gè)寄存器。

第一個(gè)寄存器里的數(shù)據(jù)是第十六個(gè)寄存器和輸入數(shù)據(jù)的第一個(gè)值的異或,尤為關(guān)鍵。后面的編寫就比較簡(jiǎn)單,只要注意一一對(duì)應(yīng)就好。同時(shí)crc是一個(gè)循環(huán)碼,這里就要使用for循環(huán)。循環(huán)的次數(shù)由輸入比特?cái)?shù)決定。

函數(shù)的最后還要把完整的寄存器寫上。

z=[a(16),a(15),a(14),a(13),a(12),a(11),a(10),a(9),a(8),a(7),a(6),a(5),a(4),a(3),a(2),a(1)];

2、主函數(shù)

在寫主函數(shù)之前先要把調(diào)用的函數(shù)寫上,后面的程序才能夠使用。

在這里應(yīng)用的是randi函數(shù)

randi是matlab中能產(chǎn)生均勻分布的偽隨機(jī)整數(shù)的新函數(shù)。

主要語法:

randi(iMax)在開區(qū)間(0,iMax)生成均勻分布的偽隨機(jī)整數(shù)
randi(iMax,m,n)在開區(qū)間(0,iMax)生成m*n型隨機(jī)矩陣
randi([iMin,iMax],m,n)在開區(qū)間(iMin,iMax)生成m*n型隨機(jī)矩陣

相似的還有rand函數(shù)和randn。

rand 生成均勻分布的偽隨機(jī)數(shù)。分布在(0~1)之間

主要語法:

rand(m,n)生成m行n列的均勻分布的偽隨機(jī)數(shù)
rand(m,n,'double')生成指定精度的均勻分布的偽隨機(jī)數(shù),參數(shù)還可以是'single'
rand(RandStream,m,n)利用指定的RandStream(我理解為隨機(jī)種子)生成偽隨機(jī)數(shù)
randn 生成標(biāo)準(zhǔn)正態(tài)分布的偽隨機(jī)數(shù)(均值為0,方差為1)主要語法和rand函數(shù)一致。

dec2hex函數(shù)

功能:把一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成一個(gè)字符串形式表示的十六進(jìn)制數(shù)。

語法格式:

str = dec2hex(d)把十進(jìn)制整數(shù)d轉(zhuǎn)換成16進(jìn)制形式表示, 并存在一個(gè)字符串中。d必須是一個(gè)非負(fù)的比2^52次方小的整數(shù)。

str = dec2hex(d, n)指定十六進(jìn)制數(shù)的位數(shù),n就是指定的位數(shù)例如:dec2hex(255)ans =FF;dec2hex(255, 6)ans =0000FF

之后的程序就是將生成的數(shù)據(jù)寫入指定的文件里面。

data_hex = dec2hex(data_16);

fid = fopen('data_hex.txt', 'wt');

fprintf(fid, '%s ', data_hex);

fclose(fid);

data_binary1=dec2bin(data_binary);

fid = fopen('data_bin.txt', 'wt');

fprintf(fid, '%s ', data_binary1);

fclose(fid);

result_hex = dec2hex(result_16);

fid = fopen('result_hex.txt', 'wt');

fprintf(fid, '%s ', result_hex);

fclose(fid);

3、單片機(jī)驗(yàn)證

單片機(jī)是利用串口接收數(shù)據(jù),處理后回傳給電腦。

在MATLAB里直接寫入1011001001011010,則有data_bin文件的1011001001011010,data_hex文件的B25A,result_hex文件的83D0。

傳入單片機(jī)的數(shù)據(jù)是data_bin文件中的,相關(guān)的數(shù)據(jù)在單片機(jī)里進(jìn)行運(yùn)算,得到的如下圖所示。

952c3070-5f59-11ed-8abf-dac502259ad0.jpg

MATLAB數(shù)據(jù)結(jié)果!

955426d4-5f59-11ed-8abf-dac502259ad0.png

兩者的數(shù)據(jù)相同,也就驗(yàn)證了CRC校驗(yàn)程序正確。

小結(jié):現(xiàn)在MATLAB程序已經(jīng)能夠熟練應(yīng)用了,就是要多做才能熟練。但是單片機(jī)這塊還是挺薄弱的,能夠讀懂程序但是不能完整的獨(dú)立編寫。單片機(jī)比MATLAB復(fù)雜多了,這是現(xiàn)在最大的感觸。但是我想至少能讀懂,能寫一些,然后每次多會(huì)一點(diǎn)知識(shí)就好。還是要加油。


審核編輯:劉清

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

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650500
  • matlab
    +關(guān)注

    關(guān)注

    189

    文章

    3001

    瀏覽量

    234132
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124505
  • CRC-16
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7657

原文標(biāo)題:計(jì)算機(jī)通信與網(wǎng)絡(luò)v2 實(shí)驗(yàn)課程(9)

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

評(píng)論

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

單片機(jī)科普總結(jié),建議收藏!

單片機(jī)(MicrocontrollerUnit,MCU)作為嵌入系統(tǒng)的核心之一,在現(xiàn)代電子產(chǎn)品中無處不在。從智能家居、汽車電子,到工業(yè)控制、醫(yī)療設(shè)備,單片機(jī)支撐著無數(shù)智能化應(yīng)用的發(fā)展。對(duì)于初學(xué)者
的頭像 發(fā)表于 04-07 11:58 ?2067次閱讀
<b class='flag-5'>單片機(jī)</b>科普總結(jié),建議收藏!

如何用單片ADC和DAC匹配改善電路?

我看了很多貴公司關(guān)于ADC和DAC改善的電路,比如在ADC采樣前加電容電阻,DAC輸出再加些電路什么的。那如果我用一些單片機(jī)或FPGA等片內(nèi)的ADC和DAC又該如何該像你們所說的單片ADC和DAC一樣匹配改善電路
發(fā)表于 02-06 08:25

什么是單片機(jī)的ADC接口

在嵌入系統(tǒng)和工業(yè)自動(dòng)化領(lǐng)域,單片機(jī)(Microcontroller)作為核心控制單元,承擔(dān)著數(shù)據(jù)采集、處理和控制的重要任務(wù)。其中,模數(shù)轉(zhuǎn)換器(Analog-to-Digital Converter
的頭像 發(fā)表于 02-03 11:27 ?2276次閱讀

AN4121-采用PIC16F單片機(jī)進(jìn)行系統(tǒng)電源控制

電子發(fā)燒友網(wǎng)站提供《AN4121-采用PIC16F單片機(jī)進(jìn)行系統(tǒng)電源控制.pdf》資料免費(fèi)下載
發(fā)表于 01-21 14:42 ?0次下載
AN4121-采用PIC<b class='flag-5'>16</b>F<b class='flag-5'>單片機(jī)</b>進(jìn)行系統(tǒng)電源控制

單片機(jī)Debug工具性能對(duì)比 單片機(jī)調(diào)試常用命令

單片機(jī)(Microcontroller Unit, MCU)調(diào)試是嵌入開發(fā)中的一個(gè)重要環(huán)節(jié),它幫助開發(fā)者發(fā)現(xiàn)和修復(fù)代碼中的錯(cuò)誤,優(yōu)化程序性能。不同的單片機(jī)和開發(fā)環(huán)境可能使用不同的調(diào)試工具和命令
的頭像 發(fā)表于 12-19 09:56 ?1419次閱讀

單片機(jī)編程語言有哪些選擇

單片機(jī)(Microcontroller Unit,MCU)編程是指為單片機(jī)編寫程序的過程,這些程序控制單片機(jī)的行為和功能。單片機(jī)廣泛應(yīng)用于嵌入
的頭像 發(fā)表于 11-01 14:13 ?2427次閱讀

單片機(jī)與嵌入系統(tǒng)的區(qū)別

在現(xiàn)代電子技術(shù)領(lǐng)域,單片機(jī)和嵌入系統(tǒng)是兩個(gè)經(jīng)常被提及的術(shù)語。它們?cè)谠S多應(yīng)用中發(fā)揮著關(guān)鍵作用,如智能家居、工業(yè)自動(dòng)化、汽車電子等。盡管這兩個(gè)概念經(jīng)常被交替使用,但它們之間存在一些基本的區(qū)別。 單片機(jī)
的頭像 發(fā)表于 11-01 14:09 ?1867次閱讀

基于51單片機(jī)的手動(dòng)數(shù)字時(shí)鐘

眾多嵌入控制應(yīng)用系統(tǒng)提供靈活、高效的解決方案。本設(shè)計(jì)所使用的芯片可兼容以下所有的51系列單片機(jī)(包括AT系列和STC系列)。資料內(nèi)容仿真實(shí)現(xiàn)(protues8.7) 本設(shè)計(jì)利用
的頭像 發(fā)表于 10-22 14:12 ?640次閱讀
基于51<b class='flag-5'>單片機(jī)</b>的手動(dòng)數(shù)字時(shí)鐘

單片機(jī)怎么寫入程序

單片機(jī)(Microcontroller Unit,MCU)是一種集成電路芯片,它將計(jì)算機(jī)的CPU、存儲(chǔ)器、輸入/輸出接口等功能集成在一個(gè)芯片上。單片機(jī)廣泛應(yīng)用于嵌入系統(tǒng)和物聯(lián)網(wǎng)設(shè)備中。編寫
的頭像 發(fā)表于 10-21 11:21 ?2439次閱讀

利用MSP430單片機(jī)控制步進(jìn)電機(jī)

電子發(fā)燒友網(wǎng)站提供《利用MSP430單片機(jī)控制步進(jìn)電機(jī).pdf》資料免費(fèi)下載
發(fā)表于 10-09 14:18 ?0次下載
<b class='flag-5'>利用</b>MSP430<b class='flag-5'>單片機(jī)</b>控制步進(jìn)電機(jī)

目前深圳嵌入單片機(jī)就業(yè)環(huán)境如何?

深圳作為中國的科技創(chuàng)新中心之一,在嵌入單片機(jī)領(lǐng)域的就業(yè)環(huán)境相對(duì)較好,以下是對(duì)該就業(yè)環(huán)境的詳細(xì)分析:
的頭像 發(fā)表于 10-09 11:51 ?1221次閱讀
目前深圳嵌入<b class='flag-5'>式</b><b class='flag-5'>單片機(jī)</b>就業(yè)環(huán)境如何?

MCU前沿市場(chǎng)趨勢(shì):8位單片機(jī)和32位單片機(jī)

盡管32位單片機(jī)(MCU)在單片機(jī)開發(fā)中的普及度持續(xù)上升,但最近的MCU市場(chǎng)趨勢(shì)顯示8位單片機(jī)的復(fù)合增長(zhǎng)率接近其32位單片機(jī)的復(fù)合增長(zhǎng)率。 毫無疑問,嵌入
發(fā)表于 09-24 17:47

利用超低功耗單片機(jī) MSP430 作為系統(tǒng)伴隨芯片應(yīng)用報(bào)告

電子發(fā)燒友網(wǎng)站提供《利用超低功耗單片機(jī) MSP430 作為系統(tǒng)伴隨芯片應(yīng)用報(bào)告.pdf》資料免費(fèi)下載
發(fā)表于 09-10 10:52 ?0次下載
<b class='flag-5'>利用</b>超低功耗<b class='flag-5'>單片機(jī)</b> MSP430 作為系統(tǒng)伴隨芯片應(yīng)用報(bào)告

一文讀懂什么單片機(jī):組成結(jié)構(gòu)與應(yīng)用

歡迎來到單片機(jī)的世界,這是一種微小(但功能強(qiáng)大)的設(shè)備,改變了嵌入系統(tǒng)的面貌。在本文中,您將了解單片機(jī)的一些基本知識(shí)、單片機(jī)的結(jié)構(gòu)以及微處理器與
的頭像 發(fā)表于 08-09 11:49 ?2407次閱讀
一文讀懂什么<b class='flag-5'>單片機(jī)</b>:組成結(jié)構(gòu)與應(yīng)用

單片機(jī)復(fù)位電路中的電容是什么電容?

單片機(jī)復(fù)位電路中的電容是一種特殊類型的電容,通常被稱為“耦電容”或“旁路電容”。這種電容的主要作用是在單片機(jī)的電源線路中提供一個(gè)低阻抗的路徑,以便在電源電壓發(fā)生瞬變時(shí),能夠迅速地吸收或釋放
的頭像 發(fā)表于 08-06 10:31 ?1617次閱讀