單芯片解決方案,開啟全新體驗——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的無限可能。
第十八章 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 計算單元框圖:
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
4.2 獨立數據寄存器(CRC_IDR)
地址偏移:0x04
復位值:0x0000 0000
4.3 控制寄存器(CRC_CR)
地址偏移:0x08
復位值:0x0000 0000
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 模式的測試后,程序會進入無限循環,保持運行狀態。
WIZnet 是一家無晶圓廠半導體公司,成立于 1998 年。產品包括互聯網處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術,基于獨特的專利全硬連線 TCP/IP。iMCU? 面向各種應用中的嵌入式互聯網設備。
WIZnet 在全球擁有 70 多家分銷商,在香港、韓國、美國設有辦事處,提供技術支持和產品營銷。
香港辦事處管理的區域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。
審核編輯 黃宇
-
crc
+關注
關注
0文章
204瀏覽量
30125 -
循環冗余校驗
+關注
關注
0文章
8瀏覽量
6673
發布評論請先 登錄
CRC循環冗余校驗的算法
crc循環冗余校驗碼算法

評論