CRC(循環冗余校驗)是一種根據數據產生簡短固定位數校驗碼的常用方法,主要用來檢查數據傳輸或者保存后是否有錯誤。CRC計算單元的工作過程如下:
1. 首先,CRC計算單元會初始化一個寄存器(通常是一個32位或64位的寄存器),初始值是生成多項式(在這個問題中是0x4C11DB7)。
2. 然后,CRC計算單元會逐位處理輸入的數據緩沖區。對于每一個數據位,它都會將寄存器的當前值與這一位進行異或操作。
3. 如果結果的最高位(第31位或第63位)是1,那么CRC計算單元就會將寄存器與生成多項式進行模2除法,并將余數保留在寄存器中。
4. 這個過程會持續到所有的數據位都被處理完。最后,寄存器中的值就是CRC碼。
注意,這個過程中的關鍵步驟就是異或操作和模2除法,它們都是計算機科學中的基本操作。
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
寄存器
+關注
關注
31文章
5392瀏覽量
121933 -
crc
+關注
關注
0文章
200瀏覽量
29714
發布評論請先 登錄
相關推薦
求助,關于ADS125H02數據通訊格式及CRC校驗問題求解
of the initial data.
第1條中,將所有數據“左移擴展為40bit,最右邊用1補齊”,與傳統的crc計算方法不一致,傳統的計算方法是在
發表于 12-03 06:54
單片機中的幾種環形緩沖區的分析和實現
單片機中的幾種環形緩沖區的分析和實現一、簡介環形緩沖區(RingBuffer)是一種高效的使用內存的方法,它將一段固定長度的內存看成一個環形結構,用于存儲數據,能夠避免使用動態申請內存

ESP8266有雙緩沖區嗎?
我想實時傳輸一些信號的測量數據。信號的采樣周期為 1 ms。我想每 500 毫秒發送 2048 字節(一個數據包)。ESP8266有雙緩沖區(2x 2048字節)嗎?其想法是計數填充一
發表于 07-16 07:29
stm32野火開發板上做USB通信,PC端USB的緩沖區和串口緩沖區的大小是多少?
stm32野火開發板上做USB通信,用的CDC虛擬串口。
stm32端將ADC采集的數據通過USB傳給電腦,傳輸速率理論上是12Mbps,上位機是從PC端的串口緩沖區拿數據,用C#編寫
發表于 05-17 14:02
用STM32L05x的CRC模塊做modbus CRC16計算,結果不正確是為什么?
根據參考文檔,CRC模塊可以配置CRC多項式,應該可以做(Modbus)CRC16計算,自己試了一下,發現結果不正確,總是一個
發表于 04-29 06:50
STM32F303CB把8K CCMRAM作為FFT運算的輸入緩沖區,UART發送固定內容會偶發出現錯誤的原因?
采用STM32F303CB芯片
把里面的8K CCMRAM作為了FFT運算的輸入緩沖區,但是出現了奇怪的現象,UART發送固定內容,但是出現了偶發的內容錯誤,數據長度正常。比如發送的0x01,
發表于 04-24 07:46
交換機與路由器緩沖區:尋找完美大小
*本文系SDNLAB編譯自瞻博網絡技術專家兼高級工程總監Sharada Yeluri領英 在路由器和交換機中,緩沖區至關重要,可以防止網絡擁塞期間的數據丟失。緩沖區到底要多大?這個問題

新版CubeMX CRC校驗模塊沒有Config嗎?
使用crc16 怎么辦呢,多項式和起始值又是在哪里設置.我在HAL庫文件里也沒找到這部分的內容。有沒有熟悉的朋友幫忙指點下,該怎么用啊。謝謝啦!
發表于 04-03 08:04
交換芯片緩沖區大小是什么
交換芯片緩沖區大小并不一定是固定的。緩沖區的設計和實現會根據芯片的具體型號、規格以及應用場景的不同而有所差異。一些交換芯片可能具有固定大小的緩沖區
評論