CRC(循環冗余校驗)是一種根據數據產生簡短固定位數校驗碼的常用方法,主要用來檢查數據傳輸或者保存后是否有錯誤。CRC計算單元的工作過程如下:
1. 首先,CRC計算單元會初始化一個寄存器(通常是一個32位或64位的寄存器),初始值是生成多項式(在這個問題中是0x4C11DB7)。
2. 然后,CRC計算單元會逐位處理輸入的數據緩沖區。對于每一個數據位,它都會將寄存器的當前值與這一位進行異或操作。
3. 如果結果的最高位(第31位或第63位)是1,那么CRC計算單元就會將寄存器與生成多項式進行模2除法,并將余數保留在寄存器中。
4. 這個過程會持續到所有的數據位都被處理完。最后,寄存器中的值就是CRC碼。
注意,這個過程中的關鍵步驟就是異或操作和模2除法,它們都是計算機科學中的基本操作。
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
寄存器
+關注
關注
31文章
5363瀏覽量
121158 -
crc
+關注
關注
0文章
199瀏覽量
29573
發布評論請先 登錄
相關推薦
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
交換機與路由器緩沖區:尋找完美大小
*本文系SDNLAB編譯自瞻博網絡技術專家兼高級工程總監Sharada Yeluri領英 在路由器和交換機中,緩沖區至關重要,可以防止網絡擁塞期間的數據丟失。緩沖區到底要多大?這個問題
新版CubeMX CRC校驗模塊沒有Config嗎?
使用crc16 怎么辦呢,多項式和起始值又是在哪里設置.我在HAL庫文件里也沒找到這部分的內容。有沒有熟悉的朋友幫忙指點下,該怎么用啊。謝謝啦!
發表于 04-03 08:04
交換芯片緩沖區大小是什么
交換芯片緩沖區大小并不一定是固定的。緩沖區的設計和實現會根據芯片的具體型號、規格以及應用場景的不同而有所差異。一些交換芯片可能具有固定大小的緩沖區
使用UART FIFO緩沖區時,緩沖區中的數據有時會損壞的原因?
1 TX FIFO 緩沖區中的一個字節從 UART 0 TX FIFO 更改為一個字節(見下圖)。
據我所見,問題發生在FIFO硬件的某個地方,因為軟件發送的數據是正確的。
UART 設置
發表于 03-06 06:59
PSoC? 5LP時增加TX緩沖區大小會損壞堆怎么解決?
:0x20007800-0x1fff8db8 = 0xea48 = > 59976 字節。
如果我將 UART_2 (stderr) 的 TX 緩沖區大小增加到 1024 字節,則第一個請求 256 字節
發表于 02-26 06:58
沒有辦法通過FX3固件檢查緩沖區是卡住了還是已滿?
使用多通道 DMA 來獲得輸出 1080p60 所需的 FX3 數據帶寬。
在隨附的照片中,你可以看到多次寫入,然后突然間 WATERMARK 和 READY 同時斷言。
有沒有辦法通過FX3固件檢查緩沖區是卡住了還是已滿? 發
發表于 02-23 08:01
評論