|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
CRC問(wèn)題 |
| 作者:xz781122 欄目:通信技術(shù) |
我在學(xué)習(xí)IRDA通信,有一個(gè)通信幀為C0,C0,00,03,00,71,30,C0.其中00,03,00為地址,控制,數(shù)據(jù)字節(jié),71,30應(yīng)該為CRC-CCITT的校驗(yàn),可是我怎么也算不出來(lái)CRC碼為71,30,有哪位老師可以幫在下一把。 |
| 2樓: | >>參與討論 |
| 作者: chunyang 于 2007/4/19 18:09:00 發(fā)布:
你得搞清楚幾個(gè)問(wèn)題 1、算法是否正確; 2、生成多項(xiàng)式是否正確; 3、數(shù)據(jù)列的計(jì)算長(zhǎng)度。 |
|
| 3樓: | >>參與討論 |
| 作者: oyggj 于 2007/4/23 22:00:00 發(fā)布:
<轉(zhuǎn)載>CRC程序(PIC) 前一段時(shí)間做協(xié)議轉(zhuǎn)換器的時(shí)間用到CRC-16校驗(yàn),查了不少資料發(fā)現(xiàn)都不理想。查表法要建表太麻煩,而計(jì)算法覺(jué)得那些例子太羅嗦。最后只好自己寫(xiě)了,最后發(fā)現(xiàn)原來(lái)挺簡(jiǎn)單嘛:) 兩個(gè)子程序搞定。這里用的多項(xiàng)式為: CRC-16 = X16 + X12 + X5 + X0 = 2^0+2^5+2^12+2^16=0x11021 因最高位一定為“1”,故略去計(jì)算只采用0x1021即可 CRC_Byte:計(jì)算單字節(jié)的CRC值 CRC_Data:計(jì)算一幀數(shù)據(jù)的CRC值 CRC_High CRC_Low:存放單字節(jié)CRC值 CRC16_High CRC16_Low:存放幀數(shù)據(jù)CRC值 ;<>------------------------------------------------------------- ; Function: CRC one byte ; Input: CRCByte ; OUTPUT: CRC_High CRC_Low ;<>------------------------------------------------------------- CRC_Byte: clrf CRC_Low clrf CRC_High movlw 09H movwf v_Loop1 movf CRCByte, w movwf CRC_High CRC: decfsz v_Loop1 ;8次循環(huán),每一位相應(yīng)計(jì)算 goto CRC10 goto CRCend CRC10 bcf STATUS, C rlf CRC_Low rlf CRC_High btfss STATUS, C goto CRC ;為0不需計(jì)算 movlw 10H ;若多項(xiàng)式改變,這里作相應(yīng)變化 xorwf CRC_High, f movlw 21H ;若多項(xiàng)式改變,這里作相應(yīng)變化 xorwf CRC_Low, f goto CRC CRCend: nop nop return ;<>------------------------------------------------------------- ; CRC one byte end ;<>------------------------------------------------------------- ;<>------------------------------------------------------------- ; Function: CRC date ; Input: BufStart(A,B,C)(一幀數(shù)據(jù)的起始地址) v_Count (要做CRC的字節(jié)數(shù)) ; OUTPUT: CRC16_High CRC16_Low(結(jié)果) ;<>------------------------------------------------------------- CRC_Data: clrf CRC16_High clrf CRC16_Low CRC_Data10 movf INDF, w xorwf CRC16_High,w movwf CRCByte call CRC_Byte incf FSR decf v_Count ;需計(jì)算的字節(jié)數(shù) movf CRC_High, w xorwf CRC16_Low, w movwf CRC16_High movf CRC_Low, w movwf CRC16_Low movf v_Count, w ;計(jì)算結(jié)束? btfss STATUS, Z goto CRC_Data10 &n |
|
| 4樓: | >>參與討論 |
| 作者: mohanwei 于 2007/4/23 22:06:00 發(fā)布:
關(guān)鍵是兩邊要一致…… |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |