作者:strongerHuang
1關于CRC校驗
CRC:Cyclic Redundancy Check,即循環(huán)冗余校驗碼。
─ X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X4 + X2 + X +1
參考維基百科循環(huán)冗余校驗:
https://zh.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97
2
STM32中CRC計算單元CRC 主要特性
使用 CRC-32 (以太網(wǎng))多項式:0x4C11DB7
— X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2+ X +1
單輸入/輸出 32 位數(shù)據(jù)寄存器
CRC 計算在 4 個 AHB 時鐘周期 (HCLK) 內(nèi)完成
8 位通用寄存器 (可用于臨時存儲)
---來自STM32參考手冊
輸入/輸出數(shù)據(jù)的反轉(zhuǎn)
STM32默認不對輸入數(shù)據(jù)和輸出數(shù)據(jù)進行位反轉(zhuǎn)。
1.對輸入數(shù)據(jù)的位反轉(zhuǎn)操作可以設置為按字節(jié)/半字 /字為單元進行操作。例如輸入數(shù)據(jù)為 0x1A2B3C4D,
每個字節(jié)內(nèi)逐位反轉(zhuǎn),結果是 0x58D43CB2
每半字內(nèi)逐位反轉(zhuǎn),結果是 0xD458B23C
每個字長內(nèi)逐位反轉(zhuǎn),結果是 0xB23CD458
2.對輸出數(shù)據(jù)的位反轉(zhuǎn)
例如輸出數(shù)據(jù)為 0x11223344,反轉(zhuǎn)后為 0x22CC4488
看下標準庫的部分函數(shù)源碼:
3
CRC應用再比如之前講述的MAVLink通信協(xié)議:
其實之前給大家過一篇文章:如何在 IAR和 KEIL中計算 CRC值。
簡單來說,這里的配置可以對Flash進行CRC計算,關于這里內(nèi)容比較多,足以單獨寫一篇文章了,感興趣的讀者可以深入了解一下。
STM32Cube生態(tài)系統(tǒng)更新的那些實用功能
GitHub在Git 2.28中推進master/slave名稱更換
長按前往圖中包含的公眾號關注
免責聲明:本文內(nèi)容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!