單芯片解決方案,開啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)
W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來說,一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN68和QFN100。
W55MH32Q采用QFN68封裝版本,尺寸為8x8mm,它擁有36個GPIO、3個ADC、12通道DMA、17個定時器、2個I2C、3個串口、2個SPI接口(其中1個帶I2S接口復(fù)用)、1個CAN以及1個USB2.0。在保持與同系列其他版本一致的核心性能基礎(chǔ)上,僅減少了部分GPIO以及SDIO接口,其他參數(shù)保持一致,性價比優(yōu)勢顯著,尤其適合網(wǎng)關(guān)模組等對空間布局要求較高的場景。緊湊的尺寸和精簡化外設(shè)配置,使其能夠在有限空間內(nèi)實(shí)現(xiàn)高效的網(wǎng)絡(luò)連接與數(shù)據(jù)交互,成為物聯(lián)網(wǎng)網(wǎng)關(guān)、邊緣計(jì)算節(jié)點(diǎn)等緊湊型設(shè)備的理想選擇。 同系列還有QFN100封裝的W55MH32L版本,該版本擁有更豐富的外設(shè)資源,適用于需要多接口擴(kuò)展的復(fù)雜工控場景,軟件使用方法一致。更多信息和資料請進(jìn)入http://www.w5500.com/網(wǎng)站或者私信獲取。
此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。
為助力開發(fā)者快速上手與深入開發(fā),基于W55MH32Q這顆芯片,WIZnet精心打造了配套開發(fā)板。開發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開發(fā)者全面評估芯片性能。
若您想獲取芯片和開發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價格等,歡迎訪問官方網(wǎng)頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。
第十八章 CRC
1 CRC簡介
循環(huán)冗余校驗(yàn)(CRC)計(jì)算單元是根據(jù)固定的生成多項(xiàng)式得到任一 172 位全字的 CRC 計(jì)算結(jié)果。在其他的應(yīng)用中,CRC 技術(shù)主要應(yīng)用于核實(shí)數(shù)據(jù)傳輸或者數(shù)據(jù)存儲的正確性和完整性。標(biāo)準(zhǔn)EN/IEC60335-1 即提供了一種核實(shí)閃存存儲器完整性的方法。CRC 計(jì)算單元可以在程序運(yùn)行時計(jì)算出軟件的標(biāo)識,之后與在連接時生成的參考標(biāo)識比較,然后存放在指定的存儲器空間。
2 CRC主要特性
?使用 CRC-32(以太網(wǎng))多項(xiàng)式:0x4C11DB7
······X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X4+X2+X+1
?一個 32 位數(shù)據(jù)寄存器用于輸入/輸出
?CRC 計(jì)算時間:4 個 AHB 時鐘周期(HCLK)
?通用 8 位寄存器(可用于存放臨時數(shù)據(jù))
下圖為 CRC 計(jì)算單元框圖:
CRC 計(jì)算單元框圖
3 CRC功能描述
CRC 計(jì)算單元含有 1 個 32 位數(shù)據(jù)寄存器:
?對該寄存器進(jìn)行寫操作時,作為輸入寄存器,可以輸入要進(jìn)行 CRC 計(jì)算的新數(shù)據(jù)。
?對該寄存器進(jìn)行讀操作時,返回上一次 CRC 計(jì)算的結(jié)果。
每一次寫入數(shù)據(jù)寄存器,其計(jì)算結(jié)果是前一次 CRC 計(jì)算結(jié)果和新計(jì)算結(jié)果的組合(對整個 32 位字進(jìn)行 CRC 計(jì)算,而不是逐字節(jié)地計(jì)算)。
在 CRC 計(jì)算期間會暫停 CPU 的寫操作,因此可以對寄存器 CRC_DR 進(jìn)行背靠背寫入或者連續(xù)地寫-讀操作??梢酝ㄟ^設(shè)置寄存器 CRC_CR 的 RESET 位來重置寄存器 CRC_DR 為0xFFFF FFFF。該操作不影響寄存器 CRC_IDR 內(nèi)的數(shù)據(jù)。
4 CRC寄存器CRC 計(jì)算單元包括 2 個數(shù)據(jù)寄存器和 1 個控制寄存器
4.1 數(shù)據(jù)寄存器(CRC_DR)
地址偏移:0x00
復(fù)位值:0xFFFF FFFF
4.2 獨(dú)立數(shù)據(jù)寄存器(CRC_IDR)
地址偏移:0x04
復(fù)位值:0x0000 0000
4.3 控制寄存器(CRC_CR)
地址偏移:0x08
復(fù)位值:0x0000 0000
4.4 CRC 寄存器映像
下表列出了 CRC 的寄存器映像和復(fù)位值:
CRC 計(jì)算單元寄存器映像和復(fù)位值
5 例程設(shè)計(jì)
5.1 CRC_DifferentCrcMode例程
1.宏定義與結(jié)構(gòu)體:定義了不同 CRC 模式的預(yù)期結(jié)果,創(chuàng)建了CRC_ResultInfo結(jié)構(gòu)體用于存儲 CRC 模式名稱和預(yù)期結(jié)果,同時定義了待計(jì)算 CRC 的數(shù)據(jù)緩沖區(qū)Buff。
2.UART 模塊:UART_Configuration函數(shù):使能 USART1 和 GPIOA 時鐘,配置 GPIO 引腳,初始化 USART 參數(shù)(波特率、數(shù)據(jù)位、停止位等),最后使能 USART1。
?重定向printf函數(shù):通過SER_PutChar和fputc函數(shù)將printf輸出重定向到 USART1,方便輸出調(diào)試信息。
3.CRC 測試模塊:CRC_DifferentModeTest函數(shù):遍歷不同的 CRC 模式,對Buff緩沖區(qū)的數(shù)據(jù)進(jìn)行 CRC 計(jì)算。每次計(jì)算前重置 CRC 數(shù)據(jù)寄存器,將計(jì)算結(jié)果與預(yù)期結(jié)果比較,若一致則輸出 “Right”,不一致則輸出 “Error” 并顯示預(yù)期結(jié)果。
// CRC多模式測試函數(shù) void CRC_DifferentModeTest(void) { uint32_t crcresult = 0; // 存儲實(shí)際計(jì)算結(jié)果 uint8_t i; // 遍歷所有CRC測試用例 for (i = 0; i < sizeof(CRCResult) / sizeof(CRC_ResultInfo); i++) { CRC_ResetDR(); // 重置CRC數(shù)據(jù)寄存器(清除之前的計(jì)算結(jié)果) // 計(jì)算CRC值(參數(shù):CRC模式、數(shù)據(jù)緩沖區(qū)、數(shù)據(jù)長度(字計(jì)數(shù))) crcresult = CRC_CalcBlockCRC(CRC_16_IBM + i, Buff, sizeof(Buff) / 4); // 比較實(shí)際結(jié)果與預(yù)期結(jié)果 if (CRCResult[i].CRCResultData == crcresult) { printf("%s Right.n", CRCResult[i].Str); // 輸出測試通過信息 } else { // 輸出測試失敗信息及預(yù)期結(jié)果 printf("%s Error.n", CRCResult[i].Str); printf("%s Error Result is 0x%xn", CRCResult[i].Str, CRCResult[i].CRCResultData); } } }
4.主函數(shù)模塊:使能 CRC 時鐘,初始化延時函數(shù)和 UART。
int main(void) { RCC_ClocksTypeDef clocks; // 系統(tǒng)時鐘結(jié)構(gòu)體 // 1. 使能CRC時鐘(AHB總線) RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); // 2. 基礎(chǔ)初始化:延時函數(shù)、串口 delay_init(); UART_Configuration(115200); // 3. 獲取并打印系統(tǒng)時鐘信息 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. 執(zhí)行CRC測試 CRC_DifferentModeTest(); // 6. 主循環(huán)(保持程序運(yùn)行) while (1); }
?獲取并輸出系統(tǒng)時鐘頻率信息。
?輸出測試提示信息。
?調(diào)用CRC_DifferentModeTest函數(shù)進(jìn)行 CRC 測試。
?進(jìn)入無限循環(huán),保持程序運(yùn)行。
6 下載驗(yàn)證
6.1 CRC_DifferentCrcMode例程
程序啟動階段
?串口輸出系統(tǒng)時鐘信息:程序啟動后,會通過串口輸出系統(tǒng)時鐘的相關(guān)頻率信息,包括 SYSCLK、HCLK、PCLK1、PCLK2 和 ADCCLK 的頻率,幫助確認(rèn)系統(tǒng)時鐘配置是否正確。
?顯示測試提示信息:緊接著輸出測試提示信息,表明開始進(jìn)行不同模式的 CRC 測試。
CRC 測試階段
?遍歷不同 CRC 模式進(jìn)行測試:程序會依次對多種 CRC 模式(如 CRC_16_IBM、CRC_16_MAXIM 等)進(jìn)行測試。
?輸出測試結(jié)果:對于每種 CRC 模式,會計(jì)算給定數(shù)據(jù)(Buff數(shù)組)的 CRC 值,并將其與預(yù)設(shè)的預(yù)期結(jié)果進(jìn)行比較。
······計(jì)算結(jié)果正確:若計(jì)算得到的 CRC 值與預(yù)期結(jié)果一致,串口會輸出相應(yīng)模式的測試結(jié)果為 “Right”。
······計(jì)算結(jié)果錯誤:若計(jì)算得到的 CRC 值與預(yù)期結(jié)果不一致,串口會輸出相應(yīng)模式的測試結(jié)果為 “Error”,并顯示該模式下的預(yù)期結(jié)果。
程序持續(xù)運(yùn)行
進(jìn)入無限循環(huán):完成所有 CRC 模式的測試后,程序會進(jìn)入無限循環(huán),保持運(yùn)行狀態(tài)。
WIZnet 是一家無晶圓廠半導(dǎo)體公司,成立于 1998 年。產(chǎn)品包括互聯(lián)網(wǎng)處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術(shù),基于獨(dú)特的專利全硬連線 TCP/IP。iMCU? 面向各種應(yīng)用中的嵌入式互聯(lián)網(wǎng)設(shè)備。
WIZnet 在全球擁有 70 多家分銷商,在香港、韓國、美國設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營銷。
香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。
審核編輯 黃宇
-
crc
+關(guān)注
關(guān)注
0文章
204瀏覽量
30112 -
循環(huán)冗余校驗(yàn)
+關(guān)注
關(guān)注
0文章
8瀏覽量
6671
發(fā)布評論請先 登錄
從原理到代碼理解CRC循環(huán)冗余校驗(yàn)

PSoC 4 循環(huán)冗余校驗(yàn) (CRC)
CRC循環(huán)冗余校驗(yàn)的算法
如何利用循環(huán)冗余校驗(yàn)(CRC)計(jì)算單元進(jìn)行傳輸數(shù)據(jù)的校驗(yàn)呢
循環(huán)冗余校驗(yàn)碼---CRC碼

STM32L4循環(huán)冗余校驗(yàn)模塊(CRC)介紹
循環(huán)冗余校驗(yàn)奇偶校驗(yàn)累加和校驗(yàn)等知識分享

crc循環(huán)冗余校驗(yàn)碼算法

PIC24F系列參考手冊之可編程循環(huán)冗余校驗(yàn)(CRC)

CRC校驗(yàn) 、STM32中CRC計(jì)算單元、 CRC應(yīng)用
Verilog數(shù)字系統(tǒng)基礎(chǔ)設(shè)計(jì)中的循環(huán)冗余校驗(yàn)
CRC循環(huán)冗余校驗(yàn)簡介

32位可編程循環(huán)冗余校驗(yàn)(CRC)

評論