從這一段時間后臺反饋的問題可以看得出來,好些朋友對CRC沒有什么概念,今天就在這里講述一下關(guān)于CRC校驗、STM32中CRC計算單元相關(guān)內(nèi)容。
1關(guān)于CRC校驗
CRC:Cyclic Redundancy Check,即循環(huán)冗余校驗碼。
CRC是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。
循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進行多項式計算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。
---來自百度百科
學(xué)電子、計算機相關(guān)專業(yè)的同學(xué)都應(yīng)該學(xué)習(xí)過CRC的基礎(chǔ)原理。其原理說難不難,可以說就是一個公式。同時,說簡單也不簡單,這個公式里面包含的內(nèi)容不簡單。
拿STM32參考手冊中CRC計算單元來說,使用CRC-32(以太網(wǎng))多項式: 0x4C11DB7
─ X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X4 + X2 + X +1
關(guān)于CRC基礎(chǔ)原理的內(nèi)容比較多,百度、谷歌一下可以看到很多關(guān)于CRC原理的內(nèi)容,我這里就不再過多講述。
參考維基百科循環(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
2STM32中CRC計算單元
相信初學(xué)STM32的朋友都知道STM32中有個CRC計算單元,如果有不知道的去面壁思過(參考手冊中目錄一看就能看見CRC章節(jié))。
但很多朋友都僅限知道有CRC計算單元這個東西,基本都沒怎么進一步了解過。
STM32全系列產(chǎn)品都具有 CRC 外設(shè)(注意,是全系列都有), 對 CRC 的計算提供硬件支持,為應(yīng)用程序節(jié)省了代碼空間。
STM32的CRC(循環(huán)冗余校驗)計算單元使用一個固定的多項式發(fā)生器從一個 32 位的數(shù)據(jù)字中產(chǎn)生 CRC 碼。
在眾多的應(yīng)用中,基于 CRC 的技術(shù)還常用來驗證數(shù)據(jù)傳輸或存儲的完整性。
根據(jù) EN/IEC60335-1 標準的規(guī)定,這些技術(shù)提供了驗證 Flash 完整性的方法。 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)操作可以設(shè)置為按字節(jié)/半字 /字為單元進行操作。例如輸入數(shù)據(jù)為 0x1A2B3C4D,
每個字節(jié)內(nèi)逐位反轉(zhuǎn),結(jié)果是 0x58D43CB2
每半字內(nèi)逐位反轉(zhuǎn),結(jié)果是 0xD458B23C
每個字長內(nèi)逐位反轉(zhuǎn),結(jié)果是 0xB23CD458
2.對輸出數(shù)據(jù)的位反轉(zhuǎn)
例如輸出數(shù)據(jù)為 0x11223344,反轉(zhuǎn)后為 0x22CC4488
操作STM32的CRC比較簡單,只有三個比較簡單的寄存器,不管是使用寄存器,還是庫函數(shù),對于大部分人來說,沒有多大難度。
看下標準庫的部分函數(shù)源碼:
3CRC應(yīng)用
我記得讀書那個時候,想要把CRC搞明白好難啊,原因在于不知道學(xué)這個CRC到底有什么用途。
CRC用途其實非常廣泛,我們最常見的就是在一些通信上,比如:Modbus:
再比如之前講述的MAVLink通信協(xié)議:
CRC其主要目的就是驗證數(shù)據(jù)的正確性。在CRC應(yīng)用中,還有一個重要的作用:通過 CRC 校驗對 FLASH 的完整性進行檢查。
在對 FLASH 完整性檢查的應(yīng)用中,需要事先計算出整個 FLASH 的 CRC 校驗值(不包括最后保存 CRC 值的字節(jié)),放在 FLASH 的末尾。在程序啟動或者運行的過程中重新用同樣的方法計算整個 FLASH 的 CRC 校驗值,然后與保存在 FLASH 末尾的 CRC 值進行比較。
這個對Flash添加CRC校驗主要目的:在遠程升級程序可有效檢查程序的完整性。
在IAR EWARM中有這么一個功能:Checksum。不知道大家使用過沒,也是可以對Flash添加CRC的功能??聪聢D:
簡單說,這里的配置可以對Flash進行CRC計算。關(guān)于這里內(nèi)容比較多,足以單獨寫一篇文章了??赡芎竺鏁为殞懸黄嚓P(guān)文章。
上一篇:EEPROM,在項目中我一般會做幾項特殊操作
下一篇:STM32中斷,及FreeRTOS中斷優(yōu)先級配置
推薦閱讀
史海拾趣
Esc Electronics Corp(簡稱Esc)在成立的初期,以其獨特的技術(shù)突破在電子行業(yè)中嶄露頭角。公司研發(fā)出一款高效能、低成本的電子元件,成功吸引了市場的注意。隨著產(chǎn)品的不斷迭代和技術(shù)的持續(xù)創(chuàng)新,Esc的產(chǎn)品線逐漸豐富,市場份額也逐步擴大。公司憑借技術(shù)優(yōu)勢和敏銳的市場洞察力,成功開拓了多個新的市場領(lǐng)域。
在穩(wěn)固了國內(nèi)市場后,Elpress AB開始積極拓展國際市場。公司設(shè)立了多個海外子公司和物流中心,如丹麥的錫爾克堡、德國的Viersen以及中國的北京等地。這些海外機構(gòu)的建立為Elpress AB的產(chǎn)品提供了更廣闊的銷售渠道和更便捷的服務(wù)支持。同時,Elpress AB還與國際知名電子企業(yè)開展合作,共同研發(fā)新產(chǎn)品、開拓新市場,進一步提升了公司的國際影響力。
為了擴大市場份額,CLC開始實施全球化戰(zhàn)略。他們在世界各地尋找優(yōu)質(zhì)的原材料供應(yīng)商,并與當?shù)氐暮献骰锇榻㈤L期合作關(guān)系。同時,他們還積極參加國際展覽和貿(mào)易活動,展示自己的產(chǎn)品和技術(shù)實力。這些努力使CLC的品牌影響力逐漸擴大,產(chǎn)品也走進了更多的國家和地區(qū)。
為了進一步拓展國際市場,F(xiàn)EI Microwave Inc公司積極尋求與國際知名企業(yè)的合作。通過與歐洲宇航防務(wù)集團下屬的子公司Astrium的合作,F(xiàn)EI Microwave Inc公司的微波技術(shù)成功應(yīng)用于航天領(lǐng)域,為火箭發(fā)射任務(wù)提供了關(guān)鍵的技術(shù)支持。這次成功的合作不僅提升了FEI Microwave Inc公司的品牌知名度,也為其在國際市場上贏得了更多的機會。
在電子行業(yè)的初創(chuàng)期,Aromat Corp以其獨特的技術(shù)突破而嶄露頭角。公司創(chuàng)始人帶領(lǐng)團隊研發(fā)出了一款高效能、低功耗的芯片,迅速吸引了市場的關(guān)注。通過不斷優(yōu)化產(chǎn)品性能和降低成本,Aromat Corp逐漸在競爭激烈的電子市場中站穩(wěn)腳跟,為后續(xù)的發(fā)展奠定了堅實的基礎(chǔ)。
Flash與S3C44B0X連接時地址線為什么要偏移一位,對應(yīng)的代碼也不甚清楚,勞煩各位大俠給看看。小弟先在此謝過了。 Flash與S3C44B0X連接時地址線為什么要偏移一位,對應(yīng)的代碼也不甚清楚,勞煩各位大俠給看看。小弟先在此謝過了。 Flash與S3C44B0X的接口電路圖如圖2所示。處理器ADDR20~1對應(yīng)著Flash ROM的A19~0,偏移了1位,這是由于S3C44B0X是按照字節(jié)編址的, ...… 查看全部問答∨ |
|
我的程序現(xiàn)在遇到這樣的問題,串口中斷時而響應(yīng),時而不響應(yīng),在中斷子程序中加了一句temp++; ,得到的temp值大的可怕,說明按一次鍵,串口收到數(shù)據(jù)后,進入了N次中斷,而按下鍵盤后,總共只發(fā)出3個字節(jié)的數(shù)據(jù),根據(jù)每收到一個字節(jié)進入一次串口中斷,好像問題 ...… 查看全部問答∨ |
《傲飛電子AVRM16學(xué)習(xí)板》試調(diào)心得 收到板子已經(jīng)有一段時間了,但...一直都在忙著工作,沒什么時間,直到現(xiàn)在。呵呵!忙了一天才焊接完成,有圖為證: 這是當時收到的器件 這是剛焊好的 再來個反面的 本人菜鳥一個,呵呵,焊接的不是很好,初次連接沒成功,郁悶??!思前想 ...… 查看全部問答∨ |
這里我發(fā)現(xiàn)對串口的問題特別多,大家看看我的一點經(jīng)驗 //rs422 over USART1 #include "msp430x14x.h" #include "foshan.h" //P3.6 UTXD1 //P3.7 URXD1 char fe_wt[12] = {\'1\',\'D\',\'F\',\'F\',\'E\',\'5\',\'0\',\'1\',\'2\',\'3\',\'0\',13}; uchar fe_rd[8] = {\'1\',\'D\',\'E\ ...… 查看全部問答∨ |
|
【內(nèi)核驅(qū)動移植】--DM9000網(wǎng)卡驅(qū)動的移植--【有圖有真相】 kernel內(nèi)核移植-dm9000網(wǎng)卡驅(qū)動的移植 有圖有真相、、、、、、 沒有移植dm9000之前 燒寫內(nèi)核啟動成功 網(wǎng)卡驅(qū)動移植成功了^_^ 移植參考文檔附件中免費下載 … 查看全部問答∨ |
#include <msp430x14x.h>#include \"All_define.h\"void PWM(){ TACTL = TASSEL1 + TACLR+MC0; //時鐘源選擇MCLK, 計數(shù)內(nèi)容清零,Timer_A 增計數(shù)模式 CCR0 = 512-1; ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 基于單片機的LED自適應(yīng)調(diào)光系統(tǒng)
- 智能小車主控系統(tǒng)電路設(shè)計
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- 解析自動駕駛汽車路徑規(guī)劃算法
- 汽車氛圍燈發(fā)展趨勢預(yù)測
- CAN控制器總線錯誤分析之CAN節(jié)點BusOff恢復(fù)過程分析與測試
- 大聯(lián)大品佳集團推出基于Microchip產(chǎn)品的3.3KW雙向圖騰柱PFC逆變電源方案
- 線控技術(shù)重構(gòu)汽車電子架構(gòu),電感式位置傳感器成就標桿應(yīng)用
- 具有空中變形能力的智能機器人系統(tǒng)ATMO
- 2025上半年移動機器人行業(yè)融資一覽:共38起,總額超50億元
- 刷新世界紀錄,國產(chǎn)機器狗速度突破每秒10米
- 機構(gòu):2025年1-5月全球動力電池裝機369.8GWh
- 定制還是自研? 汽車芯片戰(zhàn)略背后的邏輯分析
- 華為鴻蒙OS或在下半年迎來關(guān)鍵節(jié)點,已申請大批商標
- 華星光電或在廣州投建印刷及可卷繞顯示研發(fā)與生產(chǎn)基地
- CC EAL6+驗證紫光研發(fā)實力,中國芯或大有可為
- 2020年Q1每部智能手機平均配備3.5個攝像頭
- 美國務(wù)卿:將考慮美公民禁用抖音等中國社交軟件
- 華為做智能電視一個可見的優(yōu)勢就是自研的海思芯片
- 隨著人工智能技術(shù)的進步和完善,智能家居市場持續(xù)火熱
- 智能門鎖何以成為新寵
- 亞馬遜已經(jīng)開始測試送貨機器人,未來快遞小哥或?qū)⑹I(yè)?
- 2018年大尺寸面板出貨量市占率23%,京東方位居全球第一