CRC的基礎(chǔ)概念
CRC(Cyclic Redundancy Check, 循環(huán)冗余校驗(yàn))是一種根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包或計(jì)算機(jī)文件等數(shù)據(jù)產(chǎn)生簡(jiǎn)短固定位數(shù)校驗(yàn)碼的一種信道編碼技術(shù),主要用來(lái)檢測(cè)或校驗(yàn)數(shù)據(jù)傳輸或者保存后可能出現(xiàn)的錯(cuò)誤。它是利用除法及余數(shù)的原理來(lái)作錯(cuò)誤偵測(cè)的。
在嵌入式領(lǐng)域,針對(duì)一些不嚴(yán)苛的情況下,可以用來(lái)校驗(yàn)待升級(jí)固件或接收到數(shù)據(jù)的完整性,根據(jù)寬度的不同,常用的有CRC4/CRC8/CRC16/CRC32等。當(dāng)打包固件或者發(fā)送數(shù)據(jù)時(shí),可按照如下結(jié)構(gòu)進(jìn)行,接收方收到數(shù)據(jù)以后針對(duì)DATA區(qū)重新計(jì)算CRC,然后與數(shù)據(jù)包自帶的CRC對(duì)比,從而判斷數(shù)據(jù)是否正確。

GD32F310G硬件CRC介紹
GD32F310G自帶硬件CRC模塊,相對(duì)軟件CRC的計(jì)算,利用SOC自帶的CRC模塊可以減少代碼的體積,同時(shí)提高計(jì)算的效率。GD32F310G的CRC模塊的主要特性如下:

該模塊在使用方式上與友商的類(lèi)似,本文基于官方DEMO的基礎(chǔ)上通過(guò)增添代碼實(shí)現(xiàn)CRC32的計(jì)算,展現(xiàn)一下GD32F310G自帶CRC硬件模塊的使用。
開(kāi)發(fā)環(huán)境
硬件平臺(tái)
GD32F310G-START開(kāi)發(fā)板
軟件平臺(tái)
Windows10
Keil-MDK 5.34
GD32F3x0_Firmware_Library_V2.2.0
參考資料
GD32F310xx-數(shù)據(jù)手冊(cè)-Rev1.1
GD32F3x0-用戶(hù)手冊(cè)-Rev2.5
GD32F3x0-固件庫(kù)使用指南-Rev1.2
軟件實(shí)現(xiàn)
int main(void)
{
uint32_t crc32;
uint32_t single_data = 0x12345678;
uint32_t multiple_data[8] = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
};
systick_config();
rcu_periph_clock_enable(RCU_CRC);
crc_deinit();
crc_data_register_reset();
crc32 = crc_single_data_calculate(single_data, INPUT_FORMAT_WORD);
crc_data_register_reset();
crc32 = crc_block_data_calculate(multiple_data, 8, INPUT_FORMAT_WORD);
crc_data_register_reset();
while(1) {
/* insert 500 ms delay */
delay_1ms(500);
}
}
結(jié)果展示
如下圖為GD32F310執(zhí)行的截圖,實(shí)例代碼SingleWord的CRC32=0xDF8A8A2B。

CRC的工具有很多種,此處利用CRC_calc在線(xiàn)工具作為校驗(yàn)GD32的結(jié)果是否正確。根據(jù)GD32F310G提供CRC相關(guān)信息,按照下圖配置計(jì)算:

通過(guò)對(duì)比可知兩者一致。
后記
CRC模塊是GD32F310G中的一個(gè)特色模塊,通過(guò)該模塊相關(guān)功能的實(shí)現(xiàn),熟悉了GD32的開(kāi)發(fā)流程和開(kāi)發(fā)環(huán)境。因?yàn)橐咔榈脑颍嗁?gòu)的PCM5102模組剛到貨,目前遇到幾個(gè)問(wèn)題還在調(diào)試中,等問(wèn)題解決了再跟大家分享。
審核編輯:劉清
-
CRC算法
+關(guān)注
關(guān)注
0文章
15瀏覽量
9008 -
信道編碼
+關(guān)注
關(guān)注
2文章
34瀏覽量
10049 -
GD32
+關(guān)注
關(guān)注
7文章
430瀏覽量
27138
發(fā)布評(píng)論請(qǐng)先 登錄
如何在IAR Embedded Workbench中配置生成對(duì)應(yīng)代碼區(qū)域的CRC校驗(yàn)碼
實(shí)用資料——CRC校驗(yàn)碼生成算法
CRC16的計(jì)算校驗(yàn)碼的方式有哪幾種?
循環(huán)冗余校驗(yàn)碼---CRC碼
奇偶校驗(yàn)碼,奇偶校驗(yàn)碼原理是什么?
CRC校驗(yàn)碼算法的研究與實(shí)現(xiàn)
CRC-16校驗(yàn)碼生成
crc循環(huán)冗余校驗(yàn)碼算法
薦讀:基于FPGA 的CRC校驗(yàn)碼生成器
CRC計(jì)算工具CRC校驗(yàn)碼計(jì)算器應(yīng)用程序免費(fèi)下載
CRC校驗(yàn)碼的C語(yǔ)言程序免費(fèi)下載
CRC校驗(yàn)碼并行計(jì)算的FPGA實(shí)現(xiàn)
工控常用LRC XOR累加和CRC校驗(yàn)工具校驗(yàn)碼自動(dòng)生成軟件多計(jì)算方式
利用CRC模塊加速校驗(yàn)碼的計(jì)算
評(píng)論