單芯片解決方案,開(kāi)啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)
W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來(lái)前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來(lái)說(shuō),一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲(chǔ)與數(shù)A據(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解決方案,為開(kāi)發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32提供了兩種選擇:QFN100和QFN68。
W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專為各種復(fù)雜工控場(chǎng)景設(shè)計(jì)。它擁有66個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、5個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN、1個(gè)USB2.0以及1個(gè)SDIO接口。如此豐富的外設(shè)資源,能夠輕松應(yīng)對(duì)工業(yè)控制中多樣化的連接需求,無(wú)論是與各類傳感器、執(zhí)行器的通信,還是對(duì)復(fù)雜工業(yè)協(xié)議的支持,都能游刃有余,成為復(fù)雜工控領(lǐng)域的理想選擇。同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網(wǎng)關(guān)模組等場(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ò)通信安全再添保障。
為助力開(kāi)發(fā)者快速上手與深入開(kāi)發(fā),基于W55MH32L這顆芯片,WIZnet精心打造了配套開(kāi)發(fā)板。開(kāi)發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開(kāi)發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開(kāi)發(fā)者全面評(píng)估芯片性能。
若您想獲取芯片和開(kāi)發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問(wèn)官方網(wǎng)頁(yè):http://www.w5500.com/,我們期待與您共同探索W55MH32的無(wú)限可能。
單芯片解決方案,開(kāi)啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)
W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來(lái)前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來(lái)說(shuō),一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲(chǔ)與數(shù)A據(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解決方案,為開(kāi)發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32提供了兩種選擇:QFN100和QFN68。
W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專為各種復(fù)雜工控場(chǎng)景設(shè)計(jì)。它擁有66個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、5個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN、1個(gè)USB2.0以及1個(gè)SDIO接口。如此豐富的外設(shè)資源,能夠輕松應(yīng)對(duì)工業(yè)控制中多樣化的連接需求,無(wú)論是與各類傳感器、執(zhí)行器的通信,還是對(duì)復(fù)雜工業(yè)協(xié)議的支持,都能游刃有余,成為復(fù)雜工控領(lǐng)域的理想選擇。同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網(wǎng)關(guān)模組等場(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ò)通信安全再添保障。
為助力開(kāi)發(fā)者快速上手與深入開(kāi)發(fā),基于W55MH32L這顆芯片,WIZnet精心打造了配套開(kāi)發(fā)板。開(kāi)發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開(kāi)發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開(kāi)發(fā)者全面評(píng)估芯片性能。
若您想獲取芯片和開(kāi)發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問(wèn)官方網(wǎng)頁(yè):http://www.w5500.com/,我們期待與您共同探索W55MH32的無(wú)限可能。
第五章 W55MH32 UDP示例
本篇文章,我們將詳細(xì)介紹如何在W55MH32芯片上面實(shí)現(xiàn)UDP通信。并通過(guò)實(shí)戰(zhàn)例程,為大家講解如何使用UDP進(jìn)行數(shù)據(jù)回環(huán)測(cè)試。
該例程用到的其他網(wǎng)絡(luò)協(xié)議,例如DHCP,請(qǐng)參考相關(guān)章節(jié)。有關(guān)W55MH32的初始化過(guò)程,也請(qǐng)參考Network Install章節(jié),這里將不再贅述。
1 UDP協(xié)議簡(jiǎn)介
用戶數(shù)據(jù)報(bào)協(xié)議(UDP,User Datagram Protocol)是OSI模型中傳輸層的核心協(xié)議之一。它是一種無(wú)連接的、面向數(shù)據(jù)報(bào)的傳輸協(xié)議,用于在IP網(wǎng)絡(luò)中進(jìn)行高效的數(shù)據(jù)傳輸。與TCP協(xié)議相比,UDP更簡(jiǎn)單、輕量,提供最基本的傳輸功能。
2 UDP協(xié)議特點(diǎn)
無(wú)連接性:UDP不需要在傳輸數(shù)據(jù)前建立連接,發(fā)送方可以直接發(fā)送數(shù)據(jù)到目標(biāo)地址,接收方也無(wú)需確認(rèn)接收到數(shù)據(jù)。
數(shù)據(jù)報(bào)的獨(dú)立性:數(shù)據(jù)以獨(dú)立的數(shù)據(jù)報(bào)形式發(fā)送,每個(gè)數(shù)據(jù)報(bào)包含完整的消息信息。
高效性:UDP沒(méi)有流量控制、擁塞控制和重傳機(jī)制,因此開(kāi)銷小,傳輸效率高,適合對(duì)實(shí)時(shí)性要求較高的應(yīng)用。
不可靠性:UDP不保證數(shù)據(jù)可靠傳輸,可能出現(xiàn)數(shù)據(jù)丟失、重復(fù)或亂序。
支持廣播和多播:UDP可以進(jìn)行廣播和多播數(shù)據(jù)發(fā)送,非常適合一對(duì)多的通信場(chǎng)景。
簡(jiǎn)單的頭部格式:UDP頭部只有8字節(jié),包括源端口、目標(biāo)端口、長(zhǎng)度和校驗(yàn)和。
3 UDP應(yīng)用場(chǎng)景
接下來(lái),我們了解下在W55MH32上,可以使用UDP協(xié)議完成哪些操作及應(yīng)用呢?
實(shí)時(shí)數(shù)據(jù)傳輸:在工業(yè)自動(dòng)化控制、網(wǎng)絡(luò)攝像頭等場(chǎng)景下使用W55MH32實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)傳輸。
設(shè)備發(fā)現(xiàn)和自動(dòng)配置:通過(guò)發(fā)送廣播包給W55MH32來(lái)實(shí)現(xiàn)設(shè)備發(fā)現(xiàn)和自動(dòng)配置功能。
廣播和多播通信:通過(guò)廣播和多播通信方式來(lái)實(shí)現(xiàn)一對(duì)多通信。例如狀態(tài)同步和多設(shè)備控制。
數(shù)據(jù)采集:需要高頻率傳輸小數(shù)據(jù)包的應(yīng)用場(chǎng)景。例如溫濕度傳感器的狀態(tài)更新。
4 UDP報(bào)文傳輸流程
發(fā)送ARP報(bào)文,確認(rèn)對(duì)方地址在線
獲取數(shù)據(jù)信息,并通過(guò)UDP傳輸。
添加UDP頭部信息
數(shù)據(jù)報(bào)通過(guò)IP協(xié)議傳遞到目標(biāo)地址。
接收方從目標(biāo)端口接收數(shù)據(jù)報(bào)
5 UDP協(xié)議報(bào)文
源端口:發(fā)送方的端口號(hào);
目的端口:接收方的端口號(hào);
報(bào)文長(zhǎng)度:即整個(gè) UDP 報(bào)文的長(zhǎng)度,包括頭部和數(shù)據(jù),單位為字節(jié)。
檢驗(yàn)和:校驗(yàn)和;
UDP報(bào)文實(shí)例:
C0A8 0001 C0A8 0002 1F90 1F91 0021 F7DF 4865 6C6C 6F2C 2055 4450 21 IP部分(前16字節(jié)): C0A8 0001:源IP地址(192.168.0.1) C0A8 0002:目標(biāo)IP地址(192.168.0.2) UDP部分(后部分): 1F90:源端口號(hào)(8080) 1F91:目標(biāo)端口號(hào)(8081) 0021:報(bào)文長(zhǎng)度(33字節(jié)) F7DF:校驗(yàn)和(校驗(yàn)數(shù)據(jù)完整性) 4865 6C6C 6F2C 2055 4450 21:數(shù)據(jù)部分("Hello, UDP!"的ASCII表示)
在W55MH32中,UDP協(xié)議已在內(nèi)部硬件協(xié)議棧實(shí)現(xiàn),所以我們只需要讀取和寫入對(duì)應(yīng)寄存器的值即可實(shí)現(xiàn)發(fā)送和接收數(shù)據(jù),無(wú)需手動(dòng)組包。
6實(shí)現(xiàn)過(guò)程
接下來(lái),我們?cè)赪55MH32上實(shí)現(xiàn)UDP回環(huán)測(cè)試,loopback_udps()函數(shù)是實(shí)現(xiàn)UDP回環(huán)測(cè)試功能的函數(shù)。
注意:測(cè)試實(shí)例需要PC端和W55MH32處于同一網(wǎng)段。
這個(gè)函數(shù)需要主循環(huán)中調(diào)用,如下圖所示。
while (1) { loopback_udps(SOCKET_ID, ethernet_buf, local_port); }
loopback_udps()需要傳入3個(gè)參數(shù),分別是socket號(hào),socket緩存以及源端口號(hào)
loopback_udps()函數(shù)內(nèi)容如下:
int32_t loopback_udps(uint8_t sn, uint8_t *buf, uint16_t port) { int32_t ret; uint16_t size, sentsize; uint8_t destip[4]; uint16_t destport; switch (getSn_SR(sn)) { case SOCK_UDP: if ((size = getSn_RX_RSR(sn)) > 0) { if (size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; ret = recvfrom(sn, buf, size, destip, (uint16_t *)&destport); buf[ret] = 0x00; printf("recv form[%d.%d.%d.%d][%d]: %srn", destip[0], destip[1], destip[2], destip[3], destport, buf); if (ret <= 0) { #ifdef _LOOPBACK_DEBUG_ printf("%d: recvfrom error. %ldrn", sn, ret); #endif return ret; } size = (uint16_t)ret; sentsize = 0; while (sentsize != size) { ret = sendto(sn, buf + sentsize, size - sentsize, destip, destport); if (ret < 0) { #ifdef _LOOPBACK_DEBUG_ printf("%d: sendto error. %ldrn", sn, ret); #endif return ret; } sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. } } break; case SOCK_CLOSED: #ifdef _LOOPBACK_DEBUG_ // printf("%d:UDP loopback startrn",sn); #endif if ((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn) return ret; #ifdef _LOOPBACK_DEBUG_ printf("%d:Opened, UDP loopback, port [%d]rn", sn, port); #endif break; default: break; } return 1; }
進(jìn)入回環(huán)測(cè)試程序后,會(huì)執(zhí)行一個(gè)socket狀態(tài)機(jī),在socket狀態(tài)機(jī)中,會(huì)執(zhí)行以下步驟:
步驟1:打開(kāi)socket
當(dāng)socket處于SOCK_CLOSED狀態(tài)時(shí)(即關(guān)閉狀態(tài)),將該socket設(shè)置為UDP模式并打開(kāi)。
步驟2:監(jiān)聽(tīng)接收數(shù)據(jù)并回環(huán)數(shù)據(jù)
當(dāng)socket處于SOCK_UDP狀態(tài)時(shí)(即已打開(kāi)socket并配置為UDP模式),監(jiān)聽(tīng)Sn_RX_RSR寄存器。
當(dāng)Sn_RX_RSR寄存器的值大于0時(shí),則說(shuō)明已經(jīng)接收到UDP數(shù)據(jù),先通過(guò)recvfrom()函數(shù)取出接收到的UDP數(shù)據(jù)。
然后通過(guò)sendto()函數(shù)將接收到的數(shù)據(jù)回環(huán)發(fā)送出去。
7運(yùn)行結(jié)果
燒錄例程運(yùn)行后,首先進(jìn)行了PHY鏈路檢測(cè),然后是DHCP獲取網(wǎng)絡(luò)地址結(jié)果,最后是進(jìn)行UDP回環(huán)測(cè)試,如下圖所示:
接下來(lái)我們打開(kāi)一個(gè)網(wǎng)絡(luò)調(diào)試工具,例如SocketTester,設(shè)置為UDP模式,選擇自己的IP地址和端口后打開(kāi)socket,然后設(shè)置目標(biāo)地址和目標(biāo)端口為W55MH32的IP地址和端口號(hào),最后向W55MH32發(fā)送數(shù)據(jù)進(jìn)行回環(huán)測(cè)試的流程。
可以看到,W55MH32這邊接收到了來(lái)自PC端發(fā)送的數(shù)據(jù)并打印了出來(lái),SocketTester界面也看到了W55MH32的回環(huán)數(shù)據(jù),如下圖所示:
當(dāng)使用UDP廣播模式向W55MH32發(fā)送數(shù)據(jù)時(shí),只需要將SocketTester上的目標(biāo)地址改為W55MH32所在網(wǎng)段的廣播地址(192.168.1.255)即可。以下為UDP廣播發(fā)送給W55MH32的示例圖:
8總結(jié)
本文介紹了在 W55MH32芯片上實(shí)現(xiàn) UDP通信及數(shù)據(jù)回環(huán)測(cè)試的方法。闡述了 UDP協(xié)議的概念、特點(diǎn)、應(yīng)用場(chǎng)景、報(bào)文傳輸流程和報(bào)文結(jié)構(gòu),展示了實(shí)現(xiàn)過(guò)程,借助網(wǎng)絡(luò)調(diào)試工具完成測(cè)試。
下一篇將講解在該芯片上實(shí)現(xiàn) UDP組播通信及回環(huán)測(cè)試,介紹相關(guān)原理和實(shí)現(xiàn)步驟。敬請(qǐng)期待!
WIZnet是一家無(wú)晶圓廠半導(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ó)和日本除外)。
審核編輯 黃宇
-
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
5684瀏覽量
176251 -
封裝
+關(guān)注
關(guān)注
128文章
8717瀏覽量
145631 -
UDP
+關(guān)注
關(guān)注
0文章
331瀏覽量
34697
發(fā)布評(píng)論請(qǐng)先 登錄
第二章 W55MH32 DHCP示例

第三章 W55MH32 TCP Client示例

第六章 W55MH32 UDP?Multicast示例

第九章 W55MH32 HTTP Server示例

第十章 W55MH32 SNTP示例

第十四章 W55MH32 TFTP示例

第十五章 W55MH32 SNMP示例

第十六章 W55MH32 PING示例

第十八章 W55MH32 FTP_Server示例

第二十六章 W55MH32?上位機(jī)搜索和配置示例

第三十章 W55MH32 HTTP_Server&NetBIOS示例

評(píng)論