日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀] 由單片機嵌入式系統(tǒng)與微機組成的工業(yè)檢測和數據采集系統(tǒng)中,計算機與單片機之間經常需要進行數據通信。在數字通信過程中,干擾有可能使接收到的二進制數和發(fā)送的不一致,造成“0”和“1”互變的差錯。一

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

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

1 CRC校驗碼的構成 


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

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校驗碼的

2 多字節(jié)信息序列CRC碼的快速算法 

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

其中的ni為信息碼中的各個字節(jié)。

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

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

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

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

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

4 CRC碼的查表方法

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

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

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

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

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

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

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

5 結束語

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

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


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉