娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月05日(星期三)

正在發生

2018年03月05日 | CRC校驗碼在單片機中的程序實現的求取

發布者:雅致人生 來源: eefocus關鍵字:CRC校驗碼  單片機 手機看文章 掃描二維碼
隨時隨地手機看文章

由單片機嵌入式系統與微機組成的工業檢測和數據采集系統中,計算機與單片機之間經常需要進行數據通信。在數字通信過程中,干擾有可能使接收到的二進制數和發送的不一致,造成“0”和“1”互變的差錯。一個實用的通信系統必需能發現這種差錯,并加以糾正或給出重新發送信息。CRC(CyclICRedundancy Code循環冗余碼),也稱多項式編碼。是一種檢錯效率高、原理簡單、易于實現的通信編碼,是目前在數字通信領域應用最為廣泛的一種檢驗方式。如16位的 CRC—CCITT標準可以檢測出所有的單位錯、雙位錯、奇位數錯及小于等于16位的突發錯,大于17位的突發錯檢錯率為99.9984%[1]。可見, CRC碼的檢錯率要大大高于一般的奇偶校驗。因此CRC校驗可以應用于重要數據的通信場合,如下位機運行狀態的檢測、運行模式或參數的在線重設置等。

對于8位的單片機系統,要實現CRC通信就必須編寫生成CRC碼的指令程序,且由于單片機的程序存儲器很少、運算速度也比較低,因此要求程序代 碼盡量少,算法必須簡單。下面將以CRC—CCITT標準為例來介紹CRC通信碼的單片機實現過程。

1 CRC校驗碼的構成 

4.jpg
  
求得余式R(x),使等式左端的代數式恰為CRC校驗式G(x)的整數倍。則將其與待發送的數據多項式xr·M(x)相加得到的r+k次多項式的各個系數(mk-1,mk-2,…,m1,m0,rr-1,rr-2,…,r1,r0)作為編碼一起發送,其中高k位是信息位,低r位是附加校驗位。在數據接收端,再對接收到的信息碼進行校驗,如能被同 一個G(x)整除,則表明通信正確;若余數不為0,表示數據傳輸有誤,從而達到檢錯的目的。

5.jpg

CRC校驗雖然不能100%檢測出錯誤,但它的漏檢率相當低。漏檢概率和所選取的校驗標準相關,國際上已有多種CRC校驗式標準。其中8位的CRC碼標準有CDT約定,其校驗式為G(x)=x8+x2+x+1;16位的標準有CCITT(國際電報電話咨詢委員會推薦)標準G(x)=x16+x12+x5+1,和IBM公司提出的CRC-16標準G(x)=x16+x12+x2+1;校驗錯誤效率最高的是具有32位CRC校驗碼的

6.jpg

2 多字節信息序列CRC碼的快速算法 

假設需要傳送的一組信息碼N為k個字節二進制序列:
  Nk=[n1 n2……nk]

其中的ni為信息碼中的各個字節。

以16位校驗碼的CRC—CCITT標準來說明生成校驗冗余碼的快速算法。N(x)在計算冗余碼的時候應該在后面補充兩個零字節,作為待計算的信息碼。為方便起見,還統一用N(x)表示。

對應的前k-1個字節構成的序列可以表示為:

7.jpg

關系,若已知算式Nk-1的余項Rk-1,就可以求得Nk的余項Rk,已知Rk-2,就可求得Rk-1,依次類推。因為校驗式G(x)的最高項為16次,x8 Rk-1(x)+nk(x)的最高冪次不超過23,所以最后可歸結為求[n1 n2 n3]3字節序列余項的問題,每次遞推都進行3字節的求余運算。按照上述的方法,很容易編制單片機上CRC校驗碼的實現程序。

3 CRC校驗碼在51單片機上的實現 

以CRC-CCITT標準為例,按前面多字節數據CRC冗余碼的構造過程,51系列單片機計算多字節數據的CRC碼程序如下。其中,從31H開始存放信息字節數據,算得校驗碼的高8位存于R3,低8位存于R4。

8.jpg

9.jpg

4 CRC碼的查表方法

上面的程序中,每次計算一組3字節的CRC余項需要進行8次循環操作,每次循環包括2字節的數據移動,和3次異或操作。對于時間要求嚴格的 數據采樣場合,速度可能跟不上。這時可以把對1字節通信數據的所有取值(共256個)求得CRC碼做成一個余項表,用查表的方法來代替余項的循環求取過程。

設一普通3字節碼為Tabc=[a b c],把它分解為一特殊的后2字節為零的3字節序列Ta00=[a 00],和一個2字節序列Tbc=[b c],可以由多項式表

10.jpg

其中Qa00為整數的商式,Ra00和Tbc都是最高次不超過15的余項,它們的和就是Tabc(x)的余項。每次取信息碼的3字節序列Tabc,先查表得出其中Ta00(x)的余項Ra00(x),這是一個2字節的多項式,把它和余下的2字節序列Tbc進行異或操作,得到新的3字節序列的高2字節,然后取信息碼的下一字節附于其后構成新的3字節序列再分解為Ta00和,循環查表計算。運用這種方法可以很快求出多字節信息碼Mk的CRC冗余校驗碼。

建立16位CRC的檢驗碼表共需要2×256個字節。對于80C51系列的單片機來說,程序存儲器ROM一般都有4KB以上的空間,容量上可以滿足要求。

下面給出CRC校驗碼表的求取程序:

11.jpg

12.jpg

每種校驗規則校驗碼的最高位都為1,為編程方便,將其最高位去掉,把校驗碼的位數湊成是一個字節的整數倍。CRC—CCITT的校驗式為G(x)=x16+x12+x5+1,去掉高位后,校驗碼為0001000000100001(1021H)。取一個用來比較的16位數CRC—BYTE=8000H,逐次比較信息碼的最高位是否為1,是則將1記錄在暫存單元CRC—Temp的最低位,如果是0,則低位左移入0,每次暫存單元和信息單元循環左移,相當于把信息字節的數據逐位從左移入暫存單元中。當暫存單元的最高位變為1,說明已移入了16位數據,然后把暫存單元再左移一次,和16位校驗碼做異或操作,也就相當于進行模2除。因為暫存單元被移出的最高位1和校驗碼被舍去的最高位1異或,其結果必然為零,也就等于進行了17位異或操作。把所得的余式存放在暫存單元中,接著循環,直到將信息碼和補充在尾部的零字節都操作結束,把最后的余式復給CRC—Variable輸出,完成對一個余項式的處理。

這種方法的好處是很容易實現對8位或者32位的校驗式求取余項表進行擴展,只需將CRC—MODEL改為8位或32位的校驗式模型,比較字節CRC— BYTE改為80H和800000H,追加末尾0字節LAST—BYTE改為1和4個,然后再把對應于16位數據變量CRC—Variable的 unsigned short型,改為un-signed char或unsigned long就可以了。

13.jpg

5 結束語

利用CRC實現程序可以計算出各種標準下的CRC校驗冗余碼表。在單片機容量允許的情況下,可以利用查表進行CRC校驗。在對時間要求不高、對存儲容量要求嚴格的場合,可以直接利用循環計算來求得余項。編程使用8051系列單片機匯編語言,可以實現最少和高效的指令代碼。該程序算法也可應用于 M68HC和PIC17等系列單片機上。

參考文獻
[1]Joe Campbell著.徐國定,廖衛東譯.串行通訊C程序員指南[M].北京:清華大學出版社.1990.
[2]韓炬.CRC算法實現[J].煤炭科學技術,2000,(2):11-15.


關鍵字:CRC校驗碼  單片機 引用地址:CRC校驗碼在單片機中的程序實現的求取

上一篇:單片機對modem需要進行哪些初始化操作?
下一篇:用VB實現16點陣漢字字形碼的源程序

推薦閱讀

什么叫中國速度?從富士康上市時間就可以看出來。3月4日下午消息,證監會發審委將于3月8日審核富士康工業互聯網股份有限公司的首發申請。對于富士康上會,全國政協委員、證監會副主席姜洋4日在政協經濟界委員駐地對記者表示:“是好事情!”值得注意的是,作為全球最大電子產品代工企業的富士康,本次A股IPO(首次公開發行)上市非常地“搶時間”。2015年3...
“從全球范圍來看,半導體行業并不是一個蓬勃發展的行業。但是在中國,我們有蓬勃發展的機會和契機。因此,是德科技對中國的IC和半導體行業的投入是持續加強的。”是德科技(中國)有限公司大中華區市場總經理鄭紀峰先生,攜幾位資深市場經理,在5周年媒體見面會上,向EEWORLD記者講述了是德科技的專注、轉型以及在中國市場的投入和對未來的信心。是德科技...
消費者現在都用非常小巧的設備來聽音樂,但是鋰電池和低壓電源通常不能實現大音量的音頻效果。升壓放大器因其可以增加響度,同時能實現極小尺寸的封裝和超低的功耗日漸流行。 音樂和娛樂在我們的生活中無處不在。傳統的外置音響設備已經在過去的100多年給消費者帶來了極佳的體驗,從早期的電影娛樂到露天搖滾音樂會,再到家庭影院,這些都是消費者從大型娛...
蘋果正在研究如何讓HomePod,或者HomePod mini的織物外罩也包括向用戶提供信息的方式。蘋果將HomePod,以及HomePod mini的獨特外罩稱為聲學透明織物。不過除了讓聲音傳遞之外,蘋果還在繼續研究讓這種織物做更多的事情。  此前,蘋果已經申請了有關使該面料成為觸摸感應的專利,這樣用戶只需按壓HomePod就可以控制它。現在它還在研究如何完全...

史海拾趣

問答坊 | AI 解惑

求助:水族智能控制器電路圖

本帖最后由 paulhyde 于 2014-9-15 09:41 編輯 求助: 請問誰有水族智能控制器的電路圖,幫忙一下,請發上來,謝謝!!!  …

查看全部問答∨

數字鐘

1.實驗任務 (1).開機時,顯示12:00:00的時間開始計時; (2).P0.0/AD0控制“秒”的調整,每按一次加1秒; (3).P0.1/AD1控制“分”的調整,每按一次加1分; (4).P0.2/AD2控制“時”的調整,每按一次加1個小時; 2.電路原理圖 ...…

查看全部問答∨

我們是不是應該設立一個“拾人牙慧”獎?

該怎么說呢?我們大家既然都愿意在壇子工作學習和生活,可是為什么那么多的人把垃圾發到壇子里呢?大家睜眼看看吧!看看那些垃圾的發布者,一個個名字耳熟能詳,真不好意思罵人。陌生人發垃圾我們可以詛咒他,封他的ID。可是這些熟人為什么就不能稍 ...…

查看全部問答∨

電子驅蚊器

  咬人的蚊子一般都是懷卵的雌蚊,雄蚊并不咬人。而雌蚊在懷卵期間又不喜歡與雄蚊接近,它們一感覺到雄蚊所發出的頻率在21一23kHz的超聲波信號,就會避而離去。本電子驅蚊器,使其發出模擬雄蚊的超聲波,從而驅逐雌蚊,避免蚊子叮咬。 工 ...…

查看全部問答∨

KEIL UVSION 3完整版

各位朋友,我在用單片機KEIL UVSION 編程軟件,可是該軟件有2K代碼限制,各位能否幫我想辦法弄到完整版的…

查看全部問答∨

IAR不能"DownloadandDebug",問題嚴重了

                                 原來按"Download and Debug"后每次都自動重新"BUILD"工程,這個就忍了 ...…

查看全部問答∨

主函數中各函數的排序問題!

int main(void) { unsigned int i,j;   /*!< At this stage the microcontroller clock setting is already configured to        168 MHz, this is done through SystemInit() function which is called from ...…

查看全部問答∨

易電源游戲學習貼

易電源模塊可以使我們用最少的外部元件設計和優化可靠的電源。使用SIMPLE SWITCHER®產品系列輕松進行設計,該產品系列具有需要最少外部元件的DC/DC 電源轉換器,具有完整的支持工具。無論應用需要怎樣的EMI 和散熱性能、高輸出電流、高輸出電 ...…

查看全部問答∨

msp430 學習經驗總結6個方面

1.MSP430開發環境建立 1.安裝IAR dor msp430 軟件,軟件帶USB仿真器的驅動。2.插入USB仿真器,驅動選擇安裝目錄的/drivers/TIUSBFET3.建立一個工程,選擇"option"選項,設置  a、選擇器件,在"General"項的"Target"標簽選擇 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 克什克腾旗| 平罗县| 大厂| 保山市| 绥江县| 临城县| 德庆县| 延寿县| 应城市| 惠水县| 密云县| 屏南县| 德庆县| 花垣县| 且末县| 馆陶县| 潜江市| 三台县| 东乡族自治县| 当涂县| 临湘市| 赫章县| 商南县| 长白| 隆尧县| 张掖市| 深水埗区| 视频| 彰化县| 元江| 封丘县| 抚州市| 湖州市| 昌图县| 五台县| 维西| 德阳市| 华容县| 台南县| 通辽市| 甘南县|