女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

第十八章 淺談循環冗余校驗(CRC)計算單元

W55MH32 ? 來源:W55MH32 ? 作者:W55MH32 ? 2025-05-29 11:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單芯片解決方案,開啟全新體驗——W55MH32 高性能以太網單片機

W55MH32是WIZnet重磅推出的高性能以太網單片機,它為用戶帶來前所未有的集成化體驗。這顆芯片將強大的組件集于一身,具體來說,一顆W55MH32內置高性能Arm? Cortex-M3核心,其主頻最高可達216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲與數據處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協議棧、內置MAC以及PHY,擁有獨立的32KB以太網收發緩存,可供8個獨立硬件socket使用。如此配置,真正實現了All-in-One解決方案,為開發者提供極大便利。

在封裝規格上,W55MH32 提供了兩種選擇:QFN68和QFN100。

W55MH32Q采用QFN68封裝版本,尺寸為8x8mm,它擁有36個GPIO、3個ADC、12通道DMA、17個定時器、2個I2C、3個串口、2個SPI接口(其中1個帶I2S接口復用)、1個CAN以及1個USB2.0。在保持與同系列其他版本一致的核心性能基礎上,僅減少了部分GPIO以及SDIO接口,其他參數保持一致,性價比優勢顯著,尤其適合網關模組等對空間布局要求較高的場景。緊湊的尺寸和精簡化外設配置,使其能夠在有限空間內實現高效的網絡連接與數據交互,成為物聯網網關、邊緣計算節點等緊湊型設備的理想選擇。 同系列還有QFN100封裝的W55MH32L版本,該版本擁有更豐富的外設資源,適用于需要多接口擴展的復雜工控場景,軟件使用方法一致。更多信息和資料請進入http://www.w5500.com/網站或者私信獲取。

此外,本W55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應用,涵蓋TCP SSL、HTTP SSL以及MQTT SSL等,為網絡通信安全再添保障。

為助力開發者快速上手與深入開發,基于W55MH32Q這顆芯片,WIZnet精心打造了配套開發板。開發板集成WIZ-Link芯片,借助一根USB C口數據線,就能輕松實現調試、下載以及串口打印日志等功能。開發板將所有外設全部引出,拓展功能也大幅提升,便于開發者全面評估芯片性能。

若您想獲取芯片和開發板的更多詳細信息,包括產品特性、技術參數以及價格等,歡迎訪問官方網頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。

wKgZO2gbOfaAVPzkACJSygzv-rI600.png

第十八章 CRC

1 CRC簡介

循環冗余校驗(CRC)計算單元是根據固定的生成多項式得到任一 172 位全字的 CRC 計算結果。在其他的應用中,CRC 技術主要應用于核實數據傳輸或者數據存儲的正確性和完整性。標準EN/IEC60335-1 即提供了一種核實閃存存儲器完整性的方法。CRC 計算單元可以在程序運行時計算出軟件的標識,之后與在連接時生成的參考標識比較,然后存放在指定的存儲器空間。

2 CRC主要特性

?使用 CRC-32(以太網)多項式:0x4C11DB7

······X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X4+X2+X+1

?一個 32 位數據寄存器用于輸入/輸出

?CRC 計算時間:4 個 AHB 時鐘周期(HCLK)

?通用 8 位寄存器(可用于存放臨時數據)

下圖為 CRC 計算單元框圖:

wKgZPGg3zIOAK543AAEVxofr4Qg894.png

CRC 計算單元框圖

3 CRC功能描述

CRC 計算單元含有 1 個 32 位數據寄存器:

?對該寄存器進行寫操作時,作為輸入寄存器,可以輸入要進行 CRC 計算的新數據。

?對該寄存器進行讀操作時,返回上一次 CRC 計算的結果。

每一次寫入數據寄存器,其計算結果是前一次 CRC 計算結果和新計算結果的組合(對整個 32 位字進行 CRC 計算,而不是逐字節地計算)。

在 CRC 計算期間會暫停 CPU 的寫操作,因此可以對寄存器 CRC_DR 進行背靠背寫入或者連續地寫-讀操作。可以通過設置寄存器 CRC_CR 的 RESET 位來重置寄存器 CRC_DR 為0xFFFF FFFF。該操作不影響寄存器 CRC_IDR 內的數據。

4 CRC寄存器CRC 計算單元包括 2 個數據寄存器和 1 個控制寄存器

4.1 數據寄存器(CRC_DR)

地址偏移:0x00

復位值:0xFFFF FFFF

wKgZPGg3zIKAdzRzAACmKhJ9G_g670.png

4.2 獨立數據寄存器(CRC_IDR)

地址偏移:0x04

復位值:0x0000 0000

wKgZO2g3zIKAf25hAACo9-0NB3w911.png

4.3 控制寄存器(CRC_CR)

地址偏移:0x08

復位值:0x0000 0000

wKgZO2g3zIKATUJKAACo9-0NB3w732.png

4.4 CRC 寄存器映像

下表列出了 CRC 的寄存器映像和復位值:

CRC 計算單元寄存器映像和復位值

5 例程設計

5.1 CRC_DifferentCrcMode例程

1.宏定義與結構體:定義了不同 CRC 模式的預期結果,創建了CRC_ResultInfo結構體用于存儲 CRC 模式名稱和預期結果,同時定義了待計算 CRC 的數據緩沖區Buff。

2.UART 模塊:UART_Configuration函數:使能 USART1 和 GPIOA 時鐘,配置 GPIO 引腳,初始化 USART 參數(波特率、數據位、停止位等),最后使能 USART1。

?重定向printf函數:通過SER_PutChar和fputc函數將printf輸出重定向到 USART1,方便輸出調試信息。

3.CRC 測試模塊:CRC_DifferentModeTest函數:遍歷不同的 CRC 模式,對Buff緩沖區的數據進行 CRC 計算。每次計算前重置 CRC 數據寄存器,將計算結果與預期結果比較,若一致則輸出 “Right”,不一致則輸出 “Error” 并顯示預期結果。

// CRC多模式測試函數
void CRC_DifferentModeTest(void)
{
    uint32_t crcresult = 0; // 存儲實際計算結果
    uint8_t  i;

    // 遍歷所有CRC測試用例
    for (i = 0; i < sizeof(CRCResult) / sizeof(CRC_ResultInfo); i++)
    {
        CRC_ResetDR(); // 重置CRC數據寄存器(清除之前的計算結果)

        // 計算CRC值(參數:CRC模式、數據緩沖區、數據長度(字計數))
        crcresult = CRC_CalcBlockCRC(CRC_16_IBM + i, Buff, sizeof(Buff) / 4);

        // 比較實際結果與預期結果
        if (CRCResult[i].CRCResultData == crcresult)
        {
            printf("%s Right.n", CRCResult[i].Str); // 輸出測試通過信息
        }
        else
        {
            // 輸出測試失敗信息及預期結果
            printf("%s Error.n", CRCResult[i].Str);
            printf("%s Error Result is 0x%xn", CRCResult[i].Str, CRCResult[i].CRCResultData);
        }
    }
}

4.主函數模塊:使能 CRC 時鐘,初始化延時函數和 UART。

int main(void)
{
    RCC_ClocksTypeDef clocks; // 系統時鐘結構體

    // 1. 使能CRC時鐘(AHB總線)
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);

    // 2. 基礎初始化:延時函數、串口
    delay_init();
    UART_Configuration(115200);

    // 3. 獲取并打印系統時鐘信息
    RCC_GetClocksFreq(&clocks);
    printf("nSYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhzn",
           (float)clocks.SYSCLK_Frequency / 1000000,
           (float)clocks.HCLK_Frequency / 1000000,
           (float)clocks.PCLK1_Frequency / 1000000,
           (float)clocks.PCLK2_Frequency / 1000000,
           (float)clocks.ADCCLK_Frequency / 1000000);

    // 4. 打印測試提示
    printf("CRC Different Mode Test.n");

    // 5. 執行CRC測試
    CRC_DifferentModeTest();

    // 6. 主循環(保持程序運行)
    while (1);
}

?獲取并輸出系統時鐘頻率信息。

?輸出測試提示信息。

?調用CRC_DifferentModeTest函數進行 CRC 測試。

?進入無限循環,保持程序運行。

6 下載驗證

6.1 CRC_DifferentCrcMode例程

程序啟動階段

?串口輸出系統時鐘信息:程序啟動后,會通過串口輸出系統時鐘的相關頻率信息,包括 SYSCLK、HCLK、PCLK1、PCLK2 和 ADCCLK 的頻率,幫助確認系統時鐘配置是否正確。

?顯示測試提示信息:緊接著輸出測試提示信息,表明開始進行不同模式的 CRC 測試。

CRC 測試階段

?遍歷不同 CRC 模式進行測試:程序會依次對多種 CRC 模式(如 CRC_16_IBM、CRC_16_MAXIM 等)進行測試。

?輸出測試結果:對于每種 CRC 模式,會計算給定數據(Buff數組)的 CRC 值,并將其與預設的預期結果進行比較。

······計算結果正確:若計算得到的 CRC 值與預期結果一致,串口會輸出相應模式的測試結果為 “Right”。

······計算結果錯誤:若計算得到的 CRC 值與預期結果不一致,串口會輸出相應模式的測試結果為 “Error”,并顯示該模式下的預期結果。

程序持續運行

進入無限循環:完成所有 CRC 模式的測試后,程序會進入無限循環,保持運行狀態。

wKgZO2g3zIOALurWAALJo7Y_cW8469.png

WIZnet 是一家無晶圓廠半導體公司,成立于 1998 年。產品包括互聯網處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術,基于獨特的專利全硬連線 TCP/IP。iMCU? 面向各種應用中的嵌入式互聯網設備。

WIZnet 在全球擁有 70 多家分銷商,在香港、韓國、美國設有辦事處,提供技術支持和產品營銷。

香港辦事處管理的區域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • crc
    crc
    +關注

    關注

    0

    文章

    204

    瀏覽量

    30125
  • 循環冗余校驗

    關注

    0

    文章

    8

    瀏覽量

    6673
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    從原理到代碼理解CRC循環冗余校驗

    本文詳細介紹了CRC循環冗余計算的數學原理,算法中使用的參數說明,并以Modbus協議中的CRC-16算法為例,進行手算驗證,同時提供Lab
    的頭像 發表于 01-29 09:00 ?3124次閱讀
    從原理到代碼理解<b class='flag-5'>CRC</b><b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>

    PSoC 4 循環冗余校驗 (CRC)

    循環冗余校驗 (CRC) 組件的默認用途是根據任意長度的串行比特流計算 CRC。在數據時鐘的上升
    發表于 07-04 11:30

    CRC循環冗余校驗的算法

    想問下51單片機和所有嵌入式中一個很基本也很常見的問題,CRC循環冗余校驗的算法中生成多項式為什么要那樣取(有個生成多項式的表格),如果信息段中一位或多位傳輸錯誤,
    發表于 01-21 21:02

    循環冗余校驗CRC)算法入門引導

    循環冗余校驗CRC)算法入門引導
    發表于 08-17 12:40

    如何利用循環冗余校驗CRC計算單元進行傳輸數據的校驗

    循環冗余校驗CRC計算單元是什么?如何利用循環
    發表于 12-15 06:04

    循環冗余校驗碼---CRC

    循環冗余校驗碼---CRC碼   二進制信息位串沿一條信號線逐位在部件之間或計算機之間傳送稱為串行傳送。
    發表于 10-13 16:52 ?7308次閱讀
    <b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>碼---<b class='flag-5'>CRC</b>碼

    STM32L4循環冗余校驗模塊(CRC)介紹

    STM32L4循環冗余校驗模塊(CRC)介紹 有興趣的可以參考下
    發表于 12-25 10:38 ?27次下載

    循環冗余校驗奇偶校驗累加和校驗等知識分享

    CRC校驗循環冗余校驗)是數據通訊中最常采用的校驗方式。在嵌入式軟件開發中,經常要用到
    的頭像 發表于 11-08 09:31 ?9080次閱讀
    <b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>奇偶<b class='flag-5'>校驗</b>累加和<b class='flag-5'>校驗</b>等知識分享

    crc循環冗余校驗碼算法

     循環冗余校驗(Cyclic Redundancy Check, CRC)是一種根據網絡數據包或電腦文件等數據產生簡短固定位數校驗碼的一種散
    發表于 12-04 10:11 ?2.4w次閱讀
    <b class='flag-5'>crc</b><b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>碼算法

    PIC24F系列參考手冊之可編程循環冗余校驗CRC

    本文主要介紹了PIC24F系列參考手冊之可編程循環冗余校驗CRC)。
    發表于 06-25 03:20 ?0次下載
    PIC24F系列參考手冊之可編程<b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>(<b class='flag-5'>CRC</b>)

    CRC校驗 、STM32中CRC計算單元CRC應用

    CRC校驗、STM32中CRC計算單元CRC應用
    的頭像 發表于 03-04 13:54 ?6752次閱讀

    Verilog數字系統基礎設計中的循環冗余校驗

    CRC循環冗余校驗CRC介紹 臨時“插播”,后面有實例。 CRC(Cyclic Redun
    的頭像 發表于 08-17 17:08 ?7095次閱讀

    CRC循環冗余校驗簡介

    CRC 是Cyclic Redundancy Check的縮寫,循環冗余校驗,用于校驗數據傳輸的完整性。一般情況下在數據發送前
    的頭像 發表于 04-24 13:04 ?8398次閱讀
    <b class='flag-5'>CRC</b><b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>簡介

    32位可編程循環冗余校驗(CRC)

    電子發燒友網站提供《32位可編程循環冗余校驗(CRC).pdf》資料免費下載
    發表于 09-25 11:22 ?0次下載
    32位可編程<b class='flag-5'>循環</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗</b>(<b class='flag-5'>CRC</b>)

    CRC循環冗余校驗)應用舉例

    CRC循環冗余校驗)應用舉例
    的頭像 發表于 05-16 16:12 ?1942次閱讀