單芯片解決方案,開啟全新體驗(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,滿足存儲(chǔ)與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個(gè)獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN68和QFN100。
W55MH32Q采用QFN68封裝版本,尺寸為8x8mm,它擁有36個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、3個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN以及1個(gè)USB2.0。在保持與同系列其他版本一致的核心性能基礎(chǔ)上,僅減少了部分GPIO以及SDIO接口,其他參數(shù)保持一致,性價(jià)比優(yōu)勢(shì)顯著,尤其適合網(wǎng)關(guān)模組等對(duì)空間布局要求較高的場(chǎng)景。緊湊的尺寸和精簡(jiǎ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ù)雜工控場(chǎng)景,軟件使用方法一致。更多信息和資料請(qǐng)進(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ā)者全面評(píng)估芯片性能。
若您想獲取芯片和開發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問官方網(wǎng)頁(yè):http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。

第十八章 CRC
1 CRC簡(jiǎn)介
循環(huán)冗余校驗(yàn)(CRC)計(jì)算單元是根據(jù)固定的生成多項(xiàng)式得到任一 172 位全字的 CRC 計(jì)算結(jié)果。在其他的應(yīng)用中,CRC 技術(shù)主要應(yīng)用于核實(shí)數(shù)據(jù)傳輸或者數(shù)據(jù)存儲(chǔ)的正確性和完整性。標(biāo)準(zhǔn)EN/IEC60335-1 即提供了一種核實(shí)閃存存儲(chǔ)器完整性的方法。CRC 計(jì)算單元可以在程序運(yùn)行時(shí)計(jì)算出軟件的標(biāo)識(shí),之后與在連接時(shí)生成的參考標(biāo)識(shí)比較,然后存放在指定的存儲(chǔ)器空間。
2 CRC主要特性
?使用 CRC-32(以太網(wǎng))多項(xiàng)式:0x4C11DB7
······X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X4+X2+X+1
?一個(gè) 32 位數(shù)據(jù)寄存器用于輸入/輸出
?CRC 計(jì)算時(shí)間:4 個(gè) AHB 時(shí)鐘周期(HCLK)
?通用 8 位寄存器(可用于存放臨時(shí)數(shù)據(jù))
下圖為 CRC 計(jì)算單元框圖:

CRC 計(jì)算單元框圖
3 CRC功能描述
CRC 計(jì)算單元含有 1 個(gè) 32 位數(shù)據(jù)寄存器:
?對(duì)該寄存器進(jìn)行寫操作時(shí),作為輸入寄存器,可以輸入要進(jìn)行 CRC 計(jì)算的新數(shù)據(jù)。
?對(duì)該寄存器進(jìn)行讀操作時(shí),返回上一次 CRC 計(jì)算的結(jié)果。
每一次寫入數(shù)據(jù)寄存器,其計(jì)算結(jié)果是前一次 CRC 計(jì)算結(jié)果和新計(jì)算結(jié)果的組合(對(duì)整個(gè) 32 位字進(jìn)行 CRC 計(jì)算,而不是逐字節(jié)地計(jì)算)。
在 CRC 計(jì)算期間會(huì)暫停 CPU 的寫操作,因此可以對(duì)寄存器 CRC_DR 進(jìn)行背靠背寫入或者連續(xù)地寫-讀操作??梢酝ㄟ^設(shè)置寄存器 CRC_CR 的 RESET 位來重置寄存器 CRC_DR 為0xFFFF FFFF。該操作不影響寄存器 CRC_IDR 內(nèi)的數(shù)據(jù)。
4 CRC寄存器CRC 計(jì)算單元包括 2 個(gè)數(shù)據(jù)寄存器和 1 個(gè)控制寄存器
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)體用于存儲(chǔ) CRC 模式名稱和預(yù)期結(jié)果,同時(shí)定義了待計(jì)算 CRC 的數(shù)據(jù)緩沖區(qū)Buff。
2.UART 模塊:UART_Configuration函數(shù):使能 USART1 和 GPIOA 時(shí)鐘,配置 GPIO 引腳,初始化 USART 參數(shù)(波特率、數(shù)據(jù)位、停止位等),最后使能 USART1。
?重定向printf函數(shù):通過SER_PutChar和fputc函數(shù)將printf輸出重定向到 USART1,方便輸出調(diào)試信息。
3.CRC 測(cè)試模塊:CRC_DifferentModeTest函數(shù):遍歷不同的 CRC 模式,對(duì)Buff緩沖區(qū)的數(shù)據(jù)進(jìn)行 CRC 計(jì)算。每次計(jì)算前重置 CRC 數(shù)據(jù)寄存器,將計(jì)算結(jié)果與預(yù)期結(jié)果比較,若一致則輸出 “Right”,不一致則輸出 “Error” 并顯示預(yù)期結(jié)果。
// CRC多模式測(cè)試函數(shù)
void CRC_DifferentModeTest(void)
{
uint32_t crcresult = 0; // 存儲(chǔ)實(shí)際計(jì)算結(jié)果
uint8_t i;
// 遍歷所有CRC測(cè)試用例
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ù)長(zhǎng)度(字計(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); // 輸出測(cè)試通過信息
}
else
{
// 輸出測(cè)試失敗信息及預(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í)鐘,初始化延時(shí)函數(shù)和 UART。
int main(void)
{
RCC_ClocksTypeDef clocks; // 系統(tǒng)時(shí)鐘結(jié)構(gòu)體
// 1. 使能CRC時(shí)鐘(AHB總線)
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
// 2. 基礎(chǔ)初始化:延時(shí)函數(shù)、串口
delay_init();
UART_Configuration(115200);
// 3. 獲取并打印系統(tǒng)時(shí)鐘信息
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. 打印測(cè)試提示
printf("CRC Different Mode Test.n");
// 5. 執(zhí)行CRC測(cè)試
CRC_DifferentModeTest();
// 6. 主循環(huán)(保持程序運(yùn)行)
while (1);
}
?獲取并輸出系統(tǒng)時(shí)鐘頻率信息。
?輸出測(cè)試提示信息。
?調(diào)用CRC_DifferentModeTest函數(shù)進(jìn)行 CRC 測(cè)試。
?進(jìn)入無限循環(huán),保持程序運(yùn)行。
6 下載驗(yàn)證
6.1 CRC_DifferentCrcMode例程
程序啟動(dòng)階段
?串口輸出系統(tǒng)時(shí)鐘信息:程序啟動(dòng)后,會(huì)通過串口輸出系統(tǒng)時(shí)鐘的相關(guān)頻率信息,包括 SYSCLK、HCLK、PCLK1、PCLK2 和 ADCCLK 的頻率,幫助確認(rèn)系統(tǒng)時(shí)鐘配置是否正確。
?顯示測(cè)試提示信息:緊接著輸出測(cè)試提示信息,表明開始進(jìn)行不同模式的 CRC 測(cè)試。
CRC 測(cè)試階段
?遍歷不同 CRC 模式進(jìn)行測(cè)試:程序會(huì)依次對(duì)多種 CRC 模式(如 CRC_16_IBM、CRC_16_MAXIM 等)進(jìn)行測(cè)試。
?輸出測(cè)試結(jié)果:對(duì)于每種 CRC 模式,會(huì)計(jì)算給定數(shù)據(jù)(Buff數(shù)組)的 CRC 值,并將其與預(yù)設(shè)的預(yù)期結(jié)果進(jìn)行比較。
······計(jì)算結(jié)果正確:若計(jì)算得到的 CRC 值與預(yù)期結(jié)果一致,串口會(huì)輸出相應(yīng)模式的測(cè)試結(jié)果為 “Right”。
······計(jì)算結(jié)果錯(cuò)誤:若計(jì)算得到的 CRC 值與預(yù)期結(jié)果不一致,串口會(huì)輸出相應(yīng)模式的測(cè)試結(jié)果為 “Error”,并顯示該模式下的預(yù)期結(jié)果。
程序持續(xù)運(yùn)行
進(jìn)入無限循環(huán):完成所有 CRC 模式的測(cè)試后,程序會(huì)進(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 多家分銷商,在香港、韓國(guó)、美國(guó)設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營(yíng)銷。
香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國(guó)和日本除外)。
審核編輯 黃宇
-
crc
+關(guān)注
關(guān)注
0文章
205瀏覽量
30608 -
循環(huán)冗余校驗(yàn)
+關(guān)注
關(guān)注
0文章
8瀏覽量
6744
發(fā)布評(píng)論請(qǐng)先 登錄
從原理到代碼理解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)等知識(shí)分享
crc循環(huán)冗余校驗(yàn)碼算法
PIC24F系列參考手冊(cè)之可編程循環(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)簡(jiǎn)介
32位可編程循環(huán)冗余校驗(yàn)(CRC)

第十八章 淺談循環(huán)冗余校驗(yàn)(CRC)計(jì)算單元
評(píng)論