一、測試條件
硬件: STM32L432KC
主頻: 80MHz
編譯器: IAR 8.20.1
編譯選項(xiàng): High Speed no size constraints
CRC 生成多項(xiàng)式: 0x782f
二、測試方法
軟件提前生成CRC表,用于查詢。分別使用軟件CRC算法和硬件CRC外設(shè)對一個(gè)緩存進(jìn)行計(jì)算,目的是從該緩存中找到同步頭。同步頭共11字節(jié),前兩個(gè)字節(jié)為后九個(gè)字節(jié)的CRC校驗(yàn)值。通過迭代算法依次對11字節(jié)進(jìn)行計(jì)算和比較,當(dāng)找到同步頭后返回同步頭偏移量。通過時(shí)間比較兩者之間的速度。
三、測試結(jié)果
迭代24464次后,從緩存中找到同步頭。
不開啟編譯時(shí)間優(yōu)化時(shí),軟件算法用時(shí)238ms,硬件CRC用時(shí)220ms。
開啟編譯時(shí)間優(yōu)化后,軟件算法用時(shí)159ms,硬件CRC用時(shí)186ms。
四、附測試代碼
#include "user_crc.h"
#include "stm32l4xx_hal.h"
#define SOFT_CRC 1
#define HARD_CRC 2
CRC_HandleTypeDef CrcHandle;
uint16_t crc_tab[256];
void crc_init()
{
/*##-1- Configure the CRC peripheral #######################################*/
CrcHandle.Instance = CRC;
/* The default polynomial is not used. It is required to defined it in CrcHandle.Init.GeneratingPolynomial*/
CrcHandle.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_DISABLE;
/* Set the value of the polynomial */
CrcHandle.Init.GeneratingPolynomial = CRC_POLYNOMIAL_16B;
/* The user-defined generating polynomial generates a
16-bit long CRC */
CrcHandle.Init.CRCLength = CRC_POLYLENGTH_16B;
/* The default init value is used */
CrcHandle.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_DISABLE;
/* The input data are not inverted */
CrcHandle.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE;
/* The output data are not inverted */
CrcHandle.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE;
/* The input data are 8-bit long */
CrcHandle.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES;
if (HAL_CRC_Init(&CrcHandle) != HAL_OK)
{
/* Initialization Error */
Error_Handler();
}
}
void crc_buildTab(uint16_t gen_polynom)
{
for(int value = 0; value < 256; value++)
{
uint16_t crc = value << 8;
for(int i = 0; i < 8; i++)
{
if(crc & 0x8000)
crc = (crc << 1) ^ gen_polynom;
else
crc = crc << 1;
}
crc_tab[value] = crc;
}
}
uint16_t soft_crc_calc(const uint8_t *data, uint16_t len)
{
uint16_t crc = 0x0000;
for(uint16_t offset = 0; offset < len; offset++)
{
crc = (crc << 8) ^ crc_tab[(crc >> 8) ^ data[offset]];
}
return crc;
}
uint16_t hard_crc_calc(const uint8_t *data, uint16_t len)
{
uint16_t crc = 0x0000;
crc = HAL_CRC_Calculate(&CrcHandle, (uint32_t *)data, len);
return crc;
}
uint16_t find_sync_word(uint8_t *data, uint32_t data_len, uint8_t crc_type)
{
uint8_t *ptr;
uint16_t crc_stored,crc_calced;
ptr = data;
for(uint32_t i=0; i { crc_stored = ptr[0]<<8 | ptr[1]; if(crc_type == SOFT_CRC) { crc_calced = soft_crc_calc((uint8_t *)&ptr[2], 9); } else if(crc_type == HARD_CRC) { crc_calced = hard_crc_calc((uint8_t *)&ptr[2], 9); } if( (crc_stored != 0x0000) && (crc_stored == crc_calced) ) { printf("crc check ok! crc1 = 0x%04x,crc2 = 0x%04x\n", crc_stored,crc_calced); return i; } ptr++; } return 0xffff; } void crc_test() { uint32_t tick1,tick2; uint32_t find_cnt = 0; uint16_t gen_polynom = 0x782f; crc_init(); crc_buildTab(gen_polynom); tick1 = HAL_GetTick(); find_cnt = find_sync_word((uint8_t *)superFrameBuf, sizeof(superFrameBuf), SOFT_CRC); tick2 = HAL_GetTick(); printf("use soft_crc find sync word after %d iteration, use time %d\n", find_cnt, tick2 - tick1); printf("\n"); tick1 = HAL_GetTick(); find_cnt = find_sync_word((uint8_t *)superFrameBuf, sizeof(superFrameBuf), HARD_CRC); tick2 = HAL_GetTick(); printf("use hard_crc find sync word after %d iteration, use time %d\n", find_cnt, tick2 - tick1); }
上一篇:對于STM32軟件復(fù)位
下一篇:STM32 無法通過 %f 打印浮點(diǎn)數(shù)
推薦閱讀
史海拾趣
為了確保產(chǎn)品質(zhì)量,F(xiàn)ILTRONETICS始終將質(zhì)量管理放在首位。公司建立了完善的質(zhì)量管理體系,從原材料采購、生產(chǎn)制造到產(chǎn)品檢測、售后服務(wù)等各個(gè)環(huán)節(jié)都嚴(yán)格把關(guān)。同時(shí),公司還引入了先進(jìn)的檢測設(shè)備和技術(shù)手段,對產(chǎn)品進(jìn)行全方位的質(zhì)量檢測和控制。這些措施不僅確保了產(chǎn)品的穩(wěn)定性和可靠性,也提升了公司的品牌形象和市場聲譽(yù)。
在21世紀(jì)初,隨著電子行業(yè)的蓬勃發(fā)展,對于微型化、高性能電子元器件的需求日益增加。在這樣的時(shí)代背景下,CalRamic Technologies Llc公司應(yīng)運(yùn)而生。公司由幾位在電子行業(yè)有著豐富經(jīng)驗(yàn)的工程師創(chuàng)立,他們看到了陶瓷電容器等元器件的巨大市場潛力。初創(chuàng)時(shí)期,公司面臨著資金緊張和技術(shù)瓶頸等挑戰(zhàn),但團(tuán)隊(duì)?wèi){借對市場的深刻理解和技術(shù)的不斷創(chuàng)新,逐漸在電子元器件市場上占據(jù)了一席之地。
深圳貝特萊電子科技股份有限公司成立于2011年7月,從一開始,公司就明確了以技術(shù)研發(fā)為核心的發(fā)展戰(zhàn)略。依托專業(yè)團(tuán)隊(duì)多年的行業(yè)資源積累,貝特萊致力于開發(fā)具有自主知識產(chǎn)權(quán)的核心技術(shù)。在指紋識別、觸控、生命感知及MCU等芯片領(lǐng)域,貝特萊不斷取得突破,為后續(xù)的市場拓展奠定了堅(jiān)實(shí)的基礎(chǔ)。
在辰頤電子公司的發(fā)展歷程中,品質(zhì)和創(chuàng)新一直是其核心競爭力。公司始終堅(jiān)持對產(chǎn)品品質(zhì)的嚴(yán)格把控,從原材料采購到生產(chǎn)流程,再到售后服務(wù),都力求做到精益求精。同時(shí),公司還注重技術(shù)創(chuàng)新和研發(fā)投入,不斷推出具有競爭力的新產(chǎn)品,滿足市場不斷變化的需求。這種品質(zhì)與創(chuàng)新的雙輪驅(qū)動(dòng)模式,使辰頤電子在激烈的市場競爭中脫穎而出。
隨著市場需求的不斷變化,Cooper Industries不斷通過收購來擴(kuò)大其業(yè)務(wù)范圍和提升技術(shù)實(shí)力。例如,在2008年,公司宣布收購了三家公司:Sure Power Industries、OMNEX Control Systems和Roam Secure。這三家公司在各自的領(lǐng)域都有著豐富的經(jīng)驗(yàn)和卓越的技術(shù),收購后極大地增強(qiáng)了Cooper在電力系統(tǒng)管理、無線電遠(yuǎn)程控制以及文字報(bào)警、區(qū)域警示系統(tǒng)等領(lǐng)域的能力。這些收購不僅使公司的產(chǎn)品線更加豐富,也為其在全球市場的競爭提供了有力武器。
EAGLE官方網(wǎng)站發(fā)布中文版本了,安裝后的手冊和用戶指南也是中文的,終于不用看讓人頭大的英文了。 這次出的是中文Beta版,下載地址http://www.cadsoft.de/betatest.htm。… 查看全部問答∨ |
請教N(yùn)and Flash問題(Wince 5.0 + Pxa310) 我在wince 5 + Pxa310下面用的是二合一的存儲芯片nand+sdram,Nand容量是256M的,進(jìn)入系統(tǒng)之后,當(dāng)我往Nand里面拷貝文件,快要把Nand塞滿的時(shí)候,系統(tǒng)就會(huì)死機(jī),這個(gè)時(shí)候如果斷電重新開機(jī)或者復(fù)位開機(jī),連Eboot也跑不起來了,查原因發(fā)現(xiàn)是Nand的rel ...… 查看全部問答∨ |
MODEL MR821 D ( + IS = 5.989e-09 + RS = 0.00477 + CJO = 1.139e-10 + VJ = 0.7174 + TT = 3.25e-08 + M = 0.2698 + BV = 100 + N = 2 + EG = 1.11 + XTI = 3 + KF = 0 + AF = 1 + FC = 0.5 + IBV = 0.0001 + TNOM ...… 查看全部問答∨ |
求救:在UP-NETARM2410-S實(shí)驗(yàn)箱中燒寫WINCE內(nèi)核為什么燒不進(jìn)去? 各位大俠,我是個(gè)菜鳥,剛開始學(xué)習(xí)嵌入式,我用的是北京博創(chuàng)興業(yè)科技有限公司的實(shí)驗(yàn)箱UP-NETARM2410-S,不過帶的資料書是關(guān)于LINUX的,有個(gè)PDF文件是關(guān)于WINCE的,不過寫的不詳細(xì)。我現(xiàn)在根據(jù)資料把2410loader.bin,tocblock1,eboot.nb0利用超級終端 ...… 查看全部問答∨ |
EXTI總是不能發(fā)生中斷,可能還是配置錯(cuò)誤。。。 采用PC12作為外部中斷線輸入引腳,連接到EXTI_Line0,如下配置:1〉在RCC中使能了PC port2〉在NVIC中使能了EXTI_Line0中斷 //使能EXTI 0通道 NVIC_InitStructure.NVIC_IRQChannel &nb ...… 查看全部問答∨ |
STM8的哪款24M的CPU有ADC1功能?與STM8S105 44pin管腳兼容 目的是在應(yīng)用中需要用到掃描各路AD功能,謝謝!… 查看全部問答∨ |
Mindspeed推出基于多核ARM Cortex-A CPU的高性能通信處理器 本帖最后由 jameswangsynnex 于 2015-3-3 20:02 編輯 敏訊科技有限公司(Mindspeed Technologies, Inc.,NASDAQ股票市場代碼:MSPD)已宣布:推出基于多核ARM? Cortex?-A CPU的Comcerto?2000系列通信處理器。通過將軟件定義聯(lián)網(wǎng)(SDN)帶到網(wǎng)絡(luò)的 ...… 查看全部問答∨ |
東西是昨天收到的,因同時(shí)昨天也收到了剛買的相機(jī),所以,沒有馬上打開這個(gè)包裹。 1、細(xì)心包裝,使寄給的零件免受委曲 可以看出,ltbytyn花了很大功夫 2、所寄 ...… 查看全部問答∨ |
老婆懷孕了,到了32周了,醫(yī)生建議每天數(shù)胎動(dòng),我突然想到可以用這個(gè)來做個(gè)胎動(dòng)監(jiān)測,這樣就可以24小時(shí)監(jiān)測了。因?yàn)槠綍r(shí)孕婦都要做其它事情,不會(huì)一直在監(jiān)視胎動(dòng),有了這個(gè)是不是就很方便了。而且手機(jī)隨時(shí)可以看,不過傳感器是個(gè)問題,還有就是無線 ...… 查看全部問答∨ |
美國國辦女工程師分享 多燈串LED電流均衡技術(shù) 如何利用LM3466智能LED驅(qū)動(dòng)器去均衡多燈串的LED電流,即使LED出現(xiàn)故障也可維持均勻的照明效果。LM3466可讓您使用一個(gè)電源去建立高效、可靠和高品質(zhì) 的LED照明。LM3466 的特色包括:*.設(shè)計(jì)簡單易用,可 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 全主動(dòng)懸架國產(chǎn)化落地,未來也能“人人買得起”?
- 第三方激光雷達(dá)ASIC方案,能改變行業(yè)格局嗎?
- 為何端到端成為各車企智駕布局的首要選擇?
- 智能網(wǎng)聯(lián)汽車組合駕駛輔助系統(tǒng)安全要求立項(xiàng)制定,東風(fēng)、華為等參與起草
- 從高精地圖到VLA,一場技術(shù)路線的競速
- 韓國團(tuán)隊(duì)開發(fā)自動(dòng)駕駛軟件 透明障礙物識別準(zhǔn)確率達(dá)96%
- OpenGMSL?聯(lián)盟宣告成立 推動(dòng)未來車載連接技術(shù)變革
- 高通完成對V2X芯片企業(yè)Autotalks收購,強(qiáng)化車聯(lián)網(wǎng)通信
- “磷酸鐵鋰需求激增,寧德時(shí)代等電池巨頭鎖定未來五年大單”
- 面壁智能端側(cè)大模型首日上線,英特爾工程師聯(lián)合優(yōu)化實(shí)現(xiàn)2.2倍推理效率躍升
- 免費(fèi)體驗(yàn)業(yè)界最快編譯速度&最好性能 Quartus II v15.0網(wǎng)頁版下載有禮!
- 看視頻贏京東卡 | PI無刷直流電機(jī)學(xué)習(xí)中心正式上線
- 免費(fèi)申請 | SFH 4713B紅外LED樣片,體驗(yàn)革新性IR:6技術(shù)
- 希望一月 愛上EEWORLD——論壇推廣月
- ADI 新一期《模擬對話》上線,免費(fèi)下載ing!
- 有獎(jiǎng)直播|TI Matter 解決方案助力智能家居創(chuàng)新
- 沁恒CH579M-R1開發(fā)板免費(fèi)測評,豐富外設(shè)等你體驗(yàn)
- 【EEWORLD第三十六屆】2012年03月社區(qū)明星人物揭曉!
- 閱讀TI工業(yè)應(yīng)用方案精彩專題,開啟任意寶箱,挑戰(zhàn)答題抽好禮!
- 從歐盟NCAP到芯片拆解,了解4D雷達(dá)的進(jìn)展
- LG電子攜手麥格納成立合資公司,主營電動(dòng)汽車零部件業(yè)務(wù)
- 特斯拉純電動(dòng)汽車為何也用鉛酸電池而不用鋰電?
- 蘋果造車引爆產(chǎn)業(yè)鏈,磷酸鐵鋰電池強(qiáng)勢逆轉(zhuǎn)
- 主要攻擊端口為服務(wù)器、數(shù)字鑰匙,主機(jī)廠加大汽車信息安全布局
- 蘋果造車 與特斯拉必有一戰(zhàn)
- 從歐盟NCAP到芯片拆解,看4D雷達(dá)進(jìn)展
- 電氣化與自動(dòng)化—汽車產(chǎn)業(yè)的兩大驅(qū)動(dòng)力(下)
- ams聯(lián)手Precision Biomonitoring開發(fā)唾液抗原快速檢測設(shè)備
- 小體積高性能,研華緊湊型嵌入式工控機(jī)問市