在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

CRC-16公式是什么?如何利用單片機去驗證呢

通信工程師專輯 ? 來源:通信工程師專輯 ? 作者:了凡三訓 ? 2022-11-09 10:14 ? 次閱讀

一、實驗目的

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

2、根據模板整改,實現函數調用

3、在程序中不可以出現長數組

4、利用單片機驗證

二、CRC-16校驗

CRC-16公式是什么?

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

上堂課提到了哦!

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

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


每個小框都是一個寄存器

CRC即循環冗余校驗碼(Cyclic Redundancy Check):是數據通信領域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。

生成步驟如下:

1、將x的最高次冪為R的生成多項式G(x)轉換成對應的R+1位二進制數。

2、將信息碼左移R位,相當于對應的信息多項式C(x)*x的R次方。

3、用生成多項式(二進制數)對信息碼做除,得到R位的余數。

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

三、實驗程序

1、調用函數

這里完成的是寄存器生成法,同樣的根據模板,主要的是調用函數的編寫。

調用函數首先要進行調用函數名的定義

function z = crc16(message)

接下來是寄存器的編寫,一開始寄存器的初始值都為0,為了程序的簡明,根據實驗要求不可以出現長數組,只能出現一個數組。

a=zeros(1,16)

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

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

第一個寄存器里的數據是第十六個寄存器和輸入數據的第一個值的異或,尤為關鍵。后面的編寫就比較簡單,只要注意一一對應就好。同時crc是一個循環碼,這里就要使用for循環。循環的次數由輸入比特數決定。

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

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、主函數

在寫主函數之前先要把調用的函數寫上,后面的程序才能夠使用。

在這里應用的是randi函數

randi是matlab中能產生均勻分布的偽隨機整數的新函數。

主要語法:

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

相似的還有rand函數和randn。

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

主要語法:

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

dec2hex函數

功能:把一個十進制數轉換成一個字符串形式表示的十六進制數。

語法格式:

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

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

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

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、單片機驗證

單片機是利用串口接收數據,處理后回傳給電腦

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

傳入單片機的數據是data_bin文件中的,相關的數據在單片機里進行運算,得到的如下圖所示。

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

MATLAB數據結果!

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

兩者的數據相同,也就驗證了CRC校驗程序正確。

小結:現在MATLAB程序已經能夠熟練應用了,就是要多做才能熟練。但是單片機這塊還是挺薄弱的,能夠讀懂程序但是不能完整的獨立編寫。單片機比MATLAB復雜多了,這是現在最大的感觸。但是我想至少能讀懂,能寫一些,然后每次多會一點知識就好。還是要加油。


審核編輯:劉清

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

    關注

    6065

    文章

    44946

    瀏覽量

    648070
  • matlab
    +關注

    關注

    189

    文章

    2999

    瀏覽量

    233493
  • 寄存器
    +關注

    關注

    31

    文章

    5427

    瀏覽量

    123701
  • CRC-16
    +關注

    關注

    0

    文章

    5

    瀏覽量

    7637

原文標題:計算機通信與網絡v2 實驗課程(9)

文章出處:【微信號:gh_30373fc74387,微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    單片機科普總結,建議收藏!

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

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

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

    什么是單片機的ADC接口

    在嵌入系統和工業自動化領域,單片機(Microcontroller)作為核心控制單元,承擔著數據采集、處理和控制的重要任務。其中,模數轉換器(Analog-to-Digital Converter
    的頭像 發表于 02-03 11:27 ?2049次閱讀

    AN4121-采用PIC16F單片機進行系統電源控制

    電子發燒友網站提供《AN4121-采用PIC16F單片機進行系統電源控制.pdf》資料免費下載
    發表于 01-21 14:42 ?0次下載
    AN4121-采用PIC<b class='flag-5'>16</b>F<b class='flag-5'>單片機</b>進行系統電源控制

    單片機Debug工具性能對比 單片機調試常用命令

    單片機(Microcontroller Unit, MCU)調試是嵌入開發中的一個重要環節,它幫助開發者發現和修復代碼中的錯誤,優化程序性能。不同的單片機和開發環境可能使用不同的調試工具和命令
    的頭像 發表于 12-19 09:56 ?1325次閱讀

    單片機編程語言有哪些選擇

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

    單片機與嵌入系統的區別

    在現代電子技術領域,單片機和嵌入系統是兩個經常被提及的術語。它們在許多應用中發揮著關鍵作用,如智能家居、工業自動化、汽車電子等。盡管這兩個概念經常被交替使用,但它們之間存在一些基本的區別。 單片機
    的頭像 發表于 11-01 14:09 ?1731次閱讀

    基于51單片機的手動數字時鐘

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

    單片機怎么寫入程序

    單片機(Microcontroller Unit,MCU)是一種集成電路芯片,它將計算機的CPU、存儲器、輸入/輸出接口等功能集成在一個芯片上。單片機廣泛應用于嵌入系統和物聯網設備中。編寫
    的頭像 發表于 10-21 11:21 ?2255次閱讀

    利用MSP430單片機控制步進電機

    電子發燒友網站提供《利用MSP430單片機控制步進電機.pdf》資料免費下載
    發表于 10-09 14:18 ?0次下載
    <b class='flag-5'>利用</b>MSP430<b class='flag-5'>單片機</b>控制步進電機

    目前深圳嵌入單片機就業環境如何?

    深圳作為中國的科技創新中心之一,在嵌入單片機領域的就業環境相對較好,以下是對該就業環境的詳細分析:
    的頭像 發表于 10-09 11:51 ?1123次閱讀
    目前深圳嵌入<b class='flag-5'>式</b><b class='flag-5'>單片機</b>就業環境如何?

    MCU前沿市場趨勢:8位單片機和32位單片機

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

    利用超低功耗單片機 MSP430 作為系統伴隨芯片應用報告

    電子發燒友網站提供《利用超低功耗單片機 MSP430 作為系統伴隨芯片應用報告.pdf》資料免費下載
    發表于 09-10 10:52 ?0次下載
    <b class='flag-5'>利用</b>超低功耗<b class='flag-5'>單片機</b> MSP430 作為系統伴隨芯片應用報告

    單片機復位電路中的電容是什么電容?

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

    基于51單片機16x16點陣顯示電路圖及程序元件清單

    本資源內容概要:? ? ? ?這是基于51單片機16x16點陣顯示電路圖及程序設計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)、元件清單
    發表于 06-21 14:34 ?4次下載
    主站蜘蛛池模板: 看真人一一级毛片 | 国产热re99久久6国产精品 | 狠狠激情五月综合婷婷俺 | 亚洲欧美日韩高清mmm777 | 成年大片免费播放视频人 | 天堂网2017 | 欧美性xxxx极品高清 | 国外免费精品视频在线观看 | 三a大片| 亚洲综合久久综合激情久久 | 久青草国产观看在线视频 | 天天黄色| 中文字幕成人乱码在线电影 | 午夜视频在线观看国产 | 色天天干 | 天堂tv亚洲tv日本tv欧美人tv | 全部在线播放免费毛片 | 中文字幕一区二区三区在线播放 | 国产裸体美女视频全黄 | jzzjlzz亚洲乱熟在线播放 | 黄色的视频免费看 | 激情综合网五月婷婷 | 亚洲一区二区在线免费观看 | 色综合97天天综合网 | 成人精品一区二区三区电影 | 日本乱理论片免费看 | 天天爱夜夜爽 | 性免费视频 | 天堂网. www在线资源 | 午夜爽爽| 午夜福利123| 中国一级特黄真人毛片免费看 | 国产欧美久久久精品影院 | 亚洲免费成人网 | 伊人色婷婷综在合线亚洲 | 日韩综合图区 | 天天操天天射天天爽 | 一本在线免费视频 | 日本一卡二卡≡卡四卡精品 | 美女拍拍拍免费视频观看 | 黄色国产在线视频 |