0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32的CRC外設(shè)如何設(shè)置

貿(mào)澤電子設(shè)計(jì)圈 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-09-28 06:05 ? 次閱讀

前言

STM32全系列產(chǎn)品都具有CRC外設(shè),對CRC的計(jì)算提供硬件支持,為應(yīng)用程序節(jié)省了代碼空間。CRC校驗(yàn)值可以用于數(shù)據(jù)傳輸中的數(shù)據(jù)正確性的驗(yàn)證,也可用于數(shù)據(jù)存儲時的完整性檢查。在IEC60335中,也接受通過CRC校驗(yàn)對FLASH的完整性進(jìn)行檢查。在對FLASH完整性檢查的應(yīng)用中,需要事先計(jì)算出整個FLASH的CRC校驗(yàn)值(不包括最后保存CRC值的字節(jié)),放在FLASH的末尾。在程序啟動或者運(yùn)行的過程中重新用同樣的方法計(jì)算整個FLASH的CRC校驗(yàn)值,然后與保存在FLASH末尾的CRC值進(jìn)行比較。

EWARM從v5.5版本之后開始支持STM32芯片的CRC計(jì)算。前面所說的計(jì)算整個FLASH的CRC校驗(yàn)值并保存在FLASH末尾的過程,可以在IAR中完成。通過配置EWARM的CRC計(jì)算參數(shù),自動對整個FLASH空間進(jìn)行CRC計(jì)算,并將計(jì)算結(jié)果放到FLASH的末尾。本文中將介紹的就是如何配置IAR的CRC參數(shù),使之與STM32的CRC硬件模塊保持一致。本文中的例子都基于STM32F072進(jìn)行。

STM32的CRC外設(shè)

CRC校驗(yàn)值的計(jì)算采用多項(xiàng)式除法,可以通過除數(shù)和被除數(shù)進(jìn)行異或運(yùn)算實(shí)現(xiàn)。這種方法非常適合通過硬件電路來實(shí)現(xiàn)。

使用STM32CRC外設(shè)時,你要考慮的內(nèi)容包括:采用哪個CRC生成多項(xiàng)式,輸入數(shù)據(jù)(要進(jìn)行校驗(yàn)的數(shù)據(jù))和初始值。

1.生成多項(xiàng)式

默認(rèn)使用CRC32多項(xiàng)式:0x4C11DB7

部分芯片支持可編程的多項(xiàng)式,比如STM32F3,STM32F0,STM32L0

2.初始值

STM32的CRC初始值默認(rèn)為0xFFFFFFFF,STM32F3,STM32F0,STM32L0系列可以修改初始值

3.輸入/輸出數(shù)據(jù)的反轉(zhuǎn)

STM32F3,STM32F0,STM32L0系列還提供了對輸入/輸出數(shù)據(jù)進(jìn)行反轉(zhuǎn)的功能。

默認(rèn)不對輸入數(shù)據(jù)和輸出數(shù)據(jù)進(jìn)行位反轉(zhuǎn)

? 對輸入數(shù)據(jù)的位反轉(zhuǎn)操作可以設(shè)置為按字節(jié)/半字 /字為單元進(jìn)行操作。例如輸入數(shù)據(jù)為0x1A2B3C4D,

- 每個字節(jié)內(nèi)逐位反轉(zhuǎn),結(jié)果是0x58D43CB2 - 每半字內(nèi)逐位反轉(zhuǎn),結(jié)果是0xD458B23C - 每個字長內(nèi)逐位反轉(zhuǎn),結(jié)果是0xB23CD458

? 對輸出數(shù)據(jù)的位反轉(zhuǎn)。

- 例如輸出數(shù)據(jù)為0x11223344,反轉(zhuǎn)后為0x22CC4488

IAR的CRC配置

1.修改Link文件

指定checksum在FLASH中的存儲位置,在Link文件中增加下面語句。

該語句指定將CRC的值放在FLASH的末尾位置。是整個FLASH空間的末尾,不是應(yīng)用程序的代碼末尾。這樣,CRC值的位置就是固定的。不會隨代碼大小而變化。

2.配置Checksum頁面的參數(shù)

IAR Checksum頁說明(v6.4及以上)

IAR的checksum頁面分為兩個部分。

第一部分,也就是紅線圈出的部分。定義了FLASH中需要計(jì)算CRC的范圍和空閑字節(jié)填充值。

剩下的部分,就是對checksum計(jì)算參數(shù)的設(shè)定部分。

Checksum size :選擇checksum的大?。ㄗ止?jié)數(shù))

Alignment:指定checksum的對齊方式。不填的話默認(rèn)2字節(jié)對齊。

Algorithm:選擇checksum的算法

Complement:是否需要進(jìn)行補(bǔ)碼計(jì)算。選擇“Asis”就是不進(jìn)行補(bǔ)碼計(jì)算。

Bit order:位輸出的順序。MSB first,每個字節(jié)的高位在前。LSB first,每個字節(jié)的低位在前。

Reverse byte order within word: 對于輸入數(shù)據(jù),在一個字內(nèi)反轉(zhuǎn)各個字節(jié)的順序。

Initial value: checksum計(jì)算的初始化值

Checksum unit size :選擇進(jìn)行迭代的單元大小,按8-bit,16-bit還是32-bit進(jìn)行迭代。

3.STM32 CRC外設(shè)使用默認(rèn)配置時IAR的配置

STM32CRC外設(shè)的配置:

POLY= 0x4C11DB7(CRC32)

Initial_Crc = 0Xffffffff

輸入/輸出數(shù)據(jù)不反轉(zhuǎn)

輸入數(shù)據(jù):0x08000000~0x0801FFFB。(最后4個字節(jié)用來放計(jì)算出的CRC值)

具體使用中我們可以根據(jù)實(shí)際應(yīng)用需求參照上面介紹做相應(yīng)配置即可。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10849

    瀏覽量

    353826
  • crc
    crc
    +關(guān)注

    關(guān)注

    0

    文章

    199

    瀏覽量

    29399
  • 數(shù)據(jù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    562

    瀏覽量

    28483

原文標(biāo)題:如何在IAR中配置CRC參數(shù)?講的太詳細(xì)了!

文章出處:【微信號:Mouser-Community,微信公眾號:貿(mào)澤電子設(shè)計(jì)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何為STM32編程節(jié)省代碼空間?在IAR中配置CRC參數(shù)有竅門

    基于STM32芯片IAR環(huán)境下的CRC配置。STM32全系列產(chǎn)品都具有CRC外設(shè),對CRC的計(jì)算
    的頭像 發(fā)表于 09-06 17:38 ?1.4w次閱讀

    上位機(jī)要外設(shè)工作需要設(shè)置什么內(nèi)容?

    本帖最后由 eehome 于 2013-1-5 09:58 編輯 已知:上位機(jī)選用stm32f103vet6;外設(shè)是串口接口,且有外設(shè)有固件,波特率是9600 16bit CRC
    發(fā)表于 12-27 12:30

    STM32外設(shè)地址的怎么設(shè)置?

    網(wǎng)上找的資料。大家對于設(shè)置外設(shè)地址有疑問的可以這邊看看。STM32外設(shè)地址的設(shè)置.doc (365 KB )
    發(fā)表于 08-21 08:00

    CRC原理應(yīng)用及STM32硬件CRC外設(shè)

    圖說CRC原理應(yīng)用及STM32硬件CRC外設(shè)
    發(fā)表于 01-22 07:07

    如何使用STM32CubeMX配置STM32L431RCT6的硬件CRC外設(shè)校驗(yàn)數(shù)據(jù)呢

    本篇詳細(xì)的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件CRC外設(shè)校驗(yàn)數(shù)據(jù),并用SHT30溫濕度傳感器為例檢查是否可以正確校驗(yàn)。
    發(fā)表于 02-14 07:39

    STM32F446ZE-Nucleo-CRC

    單片機(jī)開發(fā)板STM32F446ZE-Nucleo的開發(fā)例程CRC
    發(fā)表于 06-03 15:48 ?9次下載

    STM32469I_EVAL-CRC

    單片機(jī)開發(fā)板STM32469I_EVAL的開發(fā)例程CRC
    發(fā)表于 06-03 15:48 ?3次下載

    CRC—冗余校驗(yàn)

    程序簡介 -工程名稱:ChipID芯片ID -實(shí)驗(yàn)平臺: 秉火STM32 F429 開發(fā)板 -MDK版本:5.16 -ST固件庫版本:1.5.1 【 !】功能簡介: 利用STM32 CRC外設(shè)
    發(fā)表于 12-13 15:39 ?5次下載

    STM32之軟件CRC和硬件CRC速度測試

    軟件提前生成CRC表,用于查詢。分別使用軟件CRC算法和硬件CRC外設(shè)對一個緩存進(jìn)行計(jì)算,目的是從該緩存中找到同步頭。同步頭共11字節(jié),前兩個字節(jié)為后九個字節(jié)的
    發(fā)表于 05-09 11:45 ?6362次閱讀
    <b class='flag-5'>STM32</b>之軟件<b class='flag-5'>CRC</b>和硬件<b class='flag-5'>CRC</b>速度測試

    CRC校驗(yàn) 、STM32CRC計(jì)算單元、 CRC應(yīng)用

    CRC校驗(yàn)、STM32CRC計(jì)算單元、CRC應(yīng)用
    的頭像 發(fā)表于 03-04 13:54 ?5946次閱讀

    關(guān)于STM32F4xx的硬件CRC32校驗(yàn)

    關(guān)于STM32F4xx的硬件CRC32校驗(yàn)一、概述前段時間由于項(xiàng)目所需,要對MCU上某些數(shù)據(jù)進(jìn)行CRC32校驗(yàn),MCU選用的是STM32F4系列,以前看到過
    發(fā)表于 12-03 15:51 ?19次下載
    關(guān)于<b class='flag-5'>STM32</b>F4xx的硬件<b class='flag-5'>CRC</b>32校驗(yàn)

    STM32Cube_16】使用硬件CRC校驗(yàn)數(shù)據(jù)(以SHT30為例)

    本篇詳細(xì)的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件CRC外設(shè)校驗(yàn)數(shù)據(jù),并用SHT30溫濕度傳感器為例檢查是否可以正確校驗(yàn)。
    發(fā)表于 12-09 12:36 ?5次下載
    【<b class='flag-5'>STM32</b>Cube_16】使用硬件<b class='flag-5'>CRC</b>校驗(yàn)數(shù)據(jù)(以SHT30為例)

    AN4187 在STM32系列中CRC外設(shè)的使用方法

    AN4187 在STM32系列中CRC外設(shè)的使用方法
    發(fā)表于 11-21 17:07 ?1次下載
    AN4187 在<b class='flag-5'>STM32</b>系列中<b class='flag-5'>CRC</b><b class='flag-5'>外設(shè)</b>的使用方法

    STM32系列中使用CRC外設(shè)

    電子發(fā)燒友網(wǎng)站提供《在STM32系列中使用CRC外設(shè).pdf》資料免費(fèi)下載
    發(fā)表于 08-01 09:23 ?0次下載
    在<b class='flag-5'>STM32</b>系列中使用<b class='flag-5'>CRC</b><b class='flag-5'>外設(shè)</b>

    STM32 CRC使用詳解

    電子發(fā)燒友網(wǎng)站提供《STM32 CRC使用詳解.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 14:58 ?3次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>CRC</b>使用詳解