單芯片解決方案,開啟全新體驗(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個(gè)獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32提供了兩種選擇:QFN100和QFN68。
W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專為各種復(fù)雜工控場景設(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)對工業(yè)控制中多樣化的連接需求,無論是與各類傳感器、執(zhí)行器的通信,還是對復(fù)雜工業(yè)協(xié)議的支持,都能游刃有余,成為復(fù)雜工控領(lǐng)域的理想選擇。同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網(wǎng)關(guān)模組等場景,軟件使用方法一致。更多信息和資料請進(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ā),基于W55MH32L這顆芯片,WIZnet精心打造了配套開發(fā)板。開發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開發(fā)者全面評估芯片性能。
若您想獲取芯片和開發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問官方網(wǎng)頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。
第十六章 W55MH32 PING示例
本篇文章,我們將詳細(xì)介紹如何在W55MH32芯片上面實(shí)現(xiàn)IPRAW功能,并通過實(shí)戰(zhàn)例程,為大家講解如何使用IPRAW模式實(shí)現(xiàn)ICMP協(xié)議中的PING命令進(jìn)行網(wǎng)絡(luò)連通性測試。
該例程用到的其他網(wǎng)絡(luò)協(xié)議,例如DHCP請參考相關(guān)章節(jié)。有關(guān)W55MH32的初始化過程,請參考Network Install章節(jié),這里將不再贅述。
1 IPRAW模式簡介
IPRAW模式是W55MH32 TOE提供的一種網(wǎng)絡(luò)通信模式。在這種模式下,用戶可以直接操作IP層數(shù)據(jù)包,對其進(jìn)行底層細(xì)節(jié)的處理,從而支持IP層協(xié)議的實(shí)現(xiàn),例如ICMP、IGMP等。
2 PING簡介
PING是一個(gè)用于測試網(wǎng)絡(luò)連接性和診斷網(wǎng)絡(luò)問題的命令。它通過使用ICMP即因特網(wǎng)控制報(bào)文協(xié)議(Internet Control Message Protocol)發(fā)送“回顯請求”消息(Echo Request)并等待“回顯應(yīng)答”消息(Echo Reply),來檢查目標(biāo)主機(jī)是否可達(dá)以及網(wǎng)絡(luò)的響應(yīng)時(shí)間。PING命令是網(wǎng)絡(luò)診斷工具中最常見的工具之一,通常用于驗(yàn)證網(wǎng)絡(luò)連通性、檢測網(wǎng)絡(luò)延遲、排查網(wǎng)絡(luò)故障等。
3 PING命令特點(diǎn)
1.簡單性:PING設(shè)計(jì)非常簡單,通常是基于請求-響應(yīng)的模式。一個(gè)設(shè)備發(fā)送 PING請求包,另一個(gè)設(shè)備回應(yīng)PING響應(yīng)包。它的開銷較小,適合嵌入式設(shè)備的網(wǎng)絡(luò)通信需求。
2.低延遲:由于PING本身非常簡潔,因此網(wǎng)絡(luò)延遲很低,適用于需要實(shí)時(shí)檢測設(shè)備狀態(tài)或維持心跳的場景。
3.狀態(tài)監(jiān)測與心跳:PING常用于設(shè)備間的心跳檢測。
4.無負(fù)載數(shù)據(jù):PING傳輸?shù)臄?shù)據(jù)通常沒有負(fù)載或附加的數(shù)據(jù),只有簡單的請求和響應(yīng)字段,因此網(wǎng)絡(luò)負(fù)載非常小。
5.容錯(cuò)性與重試機(jī)制:一些實(shí)現(xiàn)可能會(huì)有超時(shí)和重試機(jī)制,以確保 PING響應(yīng)的可靠性。
4 PING應(yīng)用場景
接下來,我們了解下在W55MH32上,可以使用PING完成哪些操作及應(yīng)用呢?
網(wǎng)絡(luò)連通性測試:可以用于測試本地設(shè)備與目標(biāo)設(shè)備之間的網(wǎng)絡(luò)是否連通。
網(wǎng)絡(luò)故障排查:當(dāng)網(wǎng)絡(luò)出現(xiàn)問題,如無法訪問某個(gè)網(wǎng)站或無法與特定設(shè)備進(jìn)行通信時(shí),可以使用 PING命令來逐步定位問題所在。如果對目標(biāo)設(shè)備的 PING請求超時(shí)或丟包嚴(yán)重,說明可能存在網(wǎng)絡(luò)連接中斷、路由器配置錯(cuò)誤、防火墻阻擋等問題。
網(wǎng)絡(luò)設(shè)備狀態(tài)監(jiān)測:在網(wǎng)絡(luò)管理中,需要實(shí)時(shí)監(jiān)測網(wǎng)絡(luò)中各種設(shè)備(如服務(wù)器、路由器、交換機(jī)等)的狀態(tài)。可以定期使用 PING命令對這些設(shè)備進(jìn)行檢測,根據(jù)是否能夠收到回復(fù)來判斷設(shè)備是否正常運(yùn)行。
5 PING命令基本工作流程
1.發(fā)送請求
用戶在命令行輸入 PING命令及目標(biāo)主機(jī)的 IP地址或域名后,系統(tǒng)開始構(gòu)建 ICMP回顯請求數(shù)據(jù)包。此數(shù)據(jù)包包含 ICMP協(xié)議頭部和一定數(shù)據(jù),默認(rèn) 32字節(jié)。隨后,該數(shù)據(jù)包被交給 IP層。
IP層在數(shù)據(jù)包中添加源 IP地址和目標(biāo) IP地址等控制信息,組裝成完整的 IP數(shù)據(jù)包。接著,需獲取目標(biāo)主機(jī)的 MAC地址。若目標(biāo)主機(jī)與源主機(jī)在同一網(wǎng)段,IP層會(huì)查詢本地 ARP緩存表,若有對應(yīng)映射則直接獲取 MAC地址;若沒有,則發(fā)送 ARP請求廣播來獲取。若目標(biāo)主機(jī)與源主機(jī)不在同一網(wǎng)段,IP層會(huì)將數(shù)據(jù)包交給路由處理,由路由器依據(jù)路由表轉(zhuǎn)發(fā),路由器同樣需獲取下一跳的 MAC地址。
數(shù)據(jù)鏈路層獲取目標(biāo) MAC地址后,構(gòu)建數(shù)據(jù)幀,將 IP 數(shù)據(jù)包封裝其中,附上源和目的 MAC地址及控制信息,再將數(shù)據(jù)幀發(fā)送出去。
2.接收響應(yīng)
目標(biāo)主機(jī)接收到數(shù)據(jù)幀后,檢查目的 MAC地址,若相符則接收并提取 IP數(shù)據(jù)包,交給 IP層。IP層檢查無誤后,將其交給 ICMP協(xié)議。
ICMP協(xié)議構(gòu)建 ICMP回顯應(yīng)答數(shù)據(jù)包,把請求包中的數(shù)據(jù)復(fù)制過來,再交給 IP層。IP層封裝成 IP數(shù)據(jù)包,數(shù)據(jù)鏈路層構(gòu)建新的數(shù)據(jù)幀,以源主機(jī)為目的地址發(fā)送出去。
3.結(jié)果處理
源主機(jī)收到應(yīng)答數(shù)據(jù)包后,數(shù)據(jù)鏈路層和 IP層依次處理,將 ICMP應(yīng)答包交給 ICMP協(xié)議。ICMP協(xié)議記錄當(dāng)前時(shí)間,結(jié)合請求時(shí)的時(shí)間戳計(jì)算往返時(shí)間。若發(fā)送多個(gè)請求包,系統(tǒng)會(huì)統(tǒng)計(jì)未收到應(yīng)答的數(shù)據(jù)包數(shù)量,計(jì)算丟包率。通過往返時(shí)間和丟包率,用戶可判斷網(wǎng)絡(luò)的連通性和質(zhì)量。
6報(bào)文解析
ICMP(Internet Control Message Protocol,互聯(lián)網(wǎng)控制消息協(xié)議)是用于網(wǎng)絡(luò)設(shè)備間傳遞控制消息的協(xié)議,通常用于網(wǎng)絡(luò)診斷與錯(cuò)誤報(bào)告。ICMP報(bào)文由類型字段、代碼字段、校驗(yàn)和及數(shù)據(jù)部分構(gòu)成。常見的 ICMP報(bào)文類型包括回顯請求(ping)和回顯應(yīng)答、目的不可達(dá)、超時(shí)等。
以下是 ICMP回顯請求和應(yīng)答報(bào)文的基本格式:
字段名稱 | 長度(字節(jié)) | 回顯請求值 | 回顯應(yīng)答值 | 描述 |
類型(Type) | 1 | 8 | 0 | 標(biāo)識ICMP報(bào)文的類型 |
代碼(Code) | 1 | 0 | 0 | 與類型字段一起決定ICMP報(bào)文具體種類 |
檢驗(yàn)和(Checksum) | 2 | 計(jì)算得出 | 計(jì)算得出 | 用于校驗(yàn)整個(gè)ICMP數(shù)據(jù)包的完整性 |
標(biāo)識符(Identifier) | 2 | 發(fā)送進(jìn)程ID | 與請求相同 | 用于標(biāo)識發(fā)送端發(fā)送的報(bào)文 |
序列號 (Sequence Number) |
2 | 遞增序號 | 與請求相同 | 用于標(biāo)識發(fā)送端發(fā)送的報(bào)文的順序號 |
數(shù)據(jù)(Data) | 可變 | 用戶定義 | 與請求相同 | 包含要返回給發(fā)送者的數(shù)據(jù) |
|報(bào)文解析| Internet Control Message Protocol Type: 8 (Echo (ping) request) (ICMP類型字段為8,表示這是一個(gè)回顯請求(Ping請求)) Code: 0 (ICMP代碼字段為 0,表示回顯請求的正常類型) Checksum: 0xe1a7 [correct] (0xe1a7是校驗(yàn)和值,狀態(tài)為 Good,表示報(bào)文有效) [Checksum Status: Good] Identifier (BE): 4661 (0x1235) (表示標(biāo)識符以大端格式存儲,值為 4661(十進(jìn)制)) Identifier (LE): 13586 (0x3512) (LE表示標(biāo)識符以小端格式存儲,值為 13586) Sequence Number (BE): 17186 (0x4322) (序列號字段,用于標(biāo)識回顯請求的序列) Sequence Number (LE): 8771 (0x2243) (序列號幫助配對請求與響應(yīng)) [Response frame: 15] (此字段表示接收到的響應(yīng)幀數(shù)量,通常用于指示響應(yīng)的順序或超時(shí)) Data (128 bytes) (包括用于測試的實(shí)際數(shù)據(jù)或填充數(shù)據(jù)) |報(bào)文原文| 08 00 e1 a7 12 35 43 22
7實(shí)現(xiàn)過程
接下來,我們在W55MH32上實(shí)現(xiàn)PING命令。
注意:測試實(shí)例需要PC端和W55MH32處于同一網(wǎng)段。
do_ping()函數(shù)起到了控制PING操作流程的作用,它決定了是否繼續(xù)進(jìn)行PING操作,以及在操作完成后關(guān)閉Socket連接。
這個(gè)函數(shù)需要主循環(huán)中調(diào)用,如下圖所示:
while (1) { do_ping(SOCKET_ID, dest_ip, ping_num); } void do_ping(uint8_t sn, uint8_t *remote_ip, uint8_t req_num) { if (req >= req_num) { close(sn); return; } else { ping_count(sn, req_num, remote_ip); } }
do_ping()函數(shù)需要傳入3個(gè)參數(shù),分別是spcket號,目標(biāo)主機(jī)IP,PING請求次數(shù)。
如果req大于req_num,說明已經(jīng)達(dá)到了指定的 PING請求次數(shù),此時(shí)調(diào)用close()函數(shù)關(guān)閉指定的 Socket連接,然后函數(shù)返回,結(jié)束本次 PING操作。
如果req小于req_num,則調(diào)用ping_count()函數(shù)。PING操作主要在ping_count()函數(shù)內(nèi)進(jìn)行,進(jìn)入該函數(shù)之后會(huì)執(zhí)行以下步驟。
ping_count()函數(shù)如下:
void ping_count(uint8_t s, uint16_t pCount, uint8_t *addr) { uint16_t rlen, cnt, i; cnt = 0; for (i = 0; i < pCount + 1; i++) { if (i != 0) { // 輸出計(jì)數(shù)編號 printf("No.%d ", i); } switch (getSn_SR(s)) { case SOCK_CLOSED: close(s); // 創(chuàng)建Socket IINCHIP_WRITE(WZTOE_Sn_PROTO(s), IPPROTO_ICMP); if (Socket(s, Sn_MR_IPRAW, 3000, 0) != 0) { // Socket創(chuàng)建失敗(此處可添加錯(cuò)誤處理) } // 等待Socket注冊完成 while (getSn_SR(s) != SOCK_IPRAW); break; case SOCK_IPRAW: // 發(fā)送Ping請求 ping_request(s, addr); req++; // 請求計(jì)數(shù)遞增 // 等待Ping響應(yīng) while (1) { // 檢查是否有接收數(shù)據(jù) if ((rlen = getSn_RX_RSR(s)) > 0) { // 處理Ping響應(yīng) ping_reply(s, addr, rlen); rep++; // 響應(yīng)計(jì)數(shù)遞增 if (ping_reply_received) { break; // 收到響應(yīng)后退出等待 } } // 超時(shí)判斷(cnt*5ms >= 5000ms時(shí)超時(shí)) if (cnt > 1000) { printf("Request Time outrnrn"); cnt = 0; break; } else { cnt++; delay_ms(5); // 5ms延遲 } } break; default: break; } // 當(dāng)請求數(shù)達(dá)到設(shè)定值時(shí),輸出統(tǒng)計(jì)結(jié)果 if (req >= pCount) { printf("Ping Request = %d, Ping Reply = %d, Lost = %drn", req, rep, req - rep); } } }
進(jìn)入該函數(shù)后,程序會(huì)執(zhí)行一個(gè)狀態(tài)機(jī),首先初始化 cnt為 0并開啟 for循環(huán)。根據(jù)Socket的狀態(tài)進(jìn)行不同操作,當(dāng)Socket為 SOCK_CLOSED時(shí),Socket關(guān)閉,設(shè)置協(xié)議,創(chuàng)建 Sn_MR_IPRAW模式的 Socket,并等待 Socket狀態(tài)變?yōu)?SOCK_IPRAW;當(dāng)Socket為 SOCK_IPRAW時(shí),發(fā)送 ping請求,進(jìn)入內(nèi)層 while循環(huán),若接收長度大于 0則處理 ping回復(fù),超過一定時(shí)間無回復(fù)則輸出超時(shí)信息,同時(shí)會(huì)根據(jù) cnt進(jìn)行計(jì)數(shù)和延遲處理;默認(rèn)情況不做處理,滿足條件時(shí)輸出 ping請求、回復(fù)和丟失的統(tǒng)計(jì)信息。
步驟一:發(fā)送 PING請求
ping_request()函數(shù)在ping_count()函數(shù)中,當(dāng)Socket狀態(tài)為SOCK_IPRAW時(shí)被調(diào)用,從而實(shí)現(xiàn)按照設(shè)定的次數(shù)發(fā)送 PING請求。
ping_request()函數(shù)如下:
void ping_request(uint8_t s, uint8_t *addr) { uint16_t i; ping_reply_received = 0; // 重置響應(yīng)接收標(biāo)志 // 初始化Ping請求包數(shù)據(jù) PingRequest.Type = PING_REQUEST; // 設(shè)置類型為Ping請求 PingRequest.Code = CODE_ZERO; // 代碼字段置0 PingRequest.ID = htons(RandomID++); // 設(shè)置ID(網(wǎng)絡(luò)字節(jié)序),ID自增 PingRequest.SeqNum = htons(RandomSeqNum++); // 設(shè)置序列號(網(wǎng)絡(luò)字節(jié)序),序列號自增 // 填充數(shù)據(jù)區(qū)(簡單填充0-7循環(huán)值) for (i = 0; i < BUF_LEN; i++) { PingRequest.Data[i] = (i) % 8; } // 計(jì)算校驗(yàn)和 PingRequest.CheckSum = 0; // 先清零校驗(yàn)和字段 PingRequest.CheckSum = htons(checksum((uint8_t *)&PingRequest, sizeof(PingRequest))); // 計(jì)算并設(shè)置校驗(yàn)和(網(wǎng)絡(luò)字節(jié)序) // 發(fā)送Ping請求 if (sendto(s, (uint8_t *)&PingRequest, sizeof(PingRequest), addr, 3000) == 0) { printf("Fail to send ping-reply packetrn"); // 發(fā)送失敗提示 } else { // 發(fā)送成功,輸出目標(biāo)IP printf("Ping:%d.%d.%d.%drn", (addr[0]), (addr[1]), (addr[2]), (addr[3])); } }
該函數(shù)ping_request的主要作用是發(fā)送一個(gè)Ping請求。首先初始化一些請求參數(shù),包括請求類型、代碼、隨機(jī)生成的 ID和序列號,填充數(shù)據(jù)并計(jì)算校驗(yàn)和。接著嘗試使用sendto()函數(shù)發(fā)送請求,根據(jù)發(fā)送結(jié)果輸出相應(yīng)信息,包括失敗提示和請求目標(biāo)的地址信息。
步驟二:接收并解析 PING回復(fù):
ping_reply()函數(shù)在ping_count()函數(shù)中,當(dāng)檢測到Socket收緩沖區(qū)有數(shù)據(jù)(rlen>0)時(shí)被調(diào)用,從而實(shí)現(xiàn)對接收到的 PING回復(fù)進(jìn)行解析處理。ping_reply()函數(shù)負(fù)責(zé)接收和解析PING回復(fù)數(shù)據(jù)包,根據(jù)不同的數(shù)據(jù)包類型進(jìn)行相應(yīng)的處理,并在解析成功后打印相關(guān)信息。
ping_reply()函數(shù)如下:
void ping_reply(uint8_t s, uint8_t *addr, uint16_t rlen) { uint16_t tmp_checksum; uint16_t len; uint16_t i; uint8_t data_buf[136]; uint16_t port = 3000; PINGMSGR PingReply; // 接收數(shù)據(jù) len = recvfrom(s, data_buf, rlen, addr, &port); // 處理Ping響應(yīng)包(ICMP Echo Reply) if (data_buf[0] == PING_REPLY) { // 解析Ping響應(yīng)包數(shù)據(jù) PingReply.Type = data_buf[0]; PingReply.Code = data_buf[1]; PingReply.CheckSum = (data_buf[3] < 8) + data_buf[2]; // 組合校驗(yàn)和(高位+低位) PingReply.ID = (data_buf[5] < 8) + data_buf[4]; // 組合ID(高位+低位) PingReply.SeqNum = (data_buf[7] < 8) + data_buf[6]; // 組合序列號(高位+低位) // 復(fù)制數(shù)據(jù)部分 for (i = 0; i < len - 8; i++) { PingReply.Data[i] = data_buf[8 + i]; } // 校驗(yàn)和驗(yàn)證 tmp_checksum = ~checksum(data_buf, len); if (tmp_checksum != 0xffff) { printf("tmp_checksum = %xrn", tmp_checksum); // 校驗(yàn)和不匹配提示 } else { // 校驗(yàn)通過,輸出響應(yīng)信息 printf("Reply from %3d.%3d.%3d.%3d ID=%x Byte=%drnrn", (addr[0]), (addr[1]), (addr[2]), (addr[3]), htons(PingReply.ID), (rlen + 6)); ping_reply_received = 1; // 標(biāo)記已收到響應(yīng) } } // 處理Ping請求包(本地作為接收方時(shí)收到的ICMP Echo Request) else if (data_buf[0] == PING_REQUEST) { // 解析Ping請求包數(shù)據(jù) PingReply.Code = data_buf[1]; PingReply.Type = data_buf[2]; PingReply.CheckSum = (data_buf[3] < 8) + data_buf[2]; PingReply.ID = (data_buf[5] < 8) + data_buf[4]; PingReply.SeqNum = (data_buf[7] < 8) + data_buf[6]; // 復(fù)制數(shù)據(jù)部分 for (i = 0; i < len - 8; i++) { PingReply.Data[i] = data_buf[8 + i]; } // 校驗(yàn)和驗(yàn)證 tmp_checksum = PingReply.CheckSum; PingReply.CheckSum = 0; if (tmp_checksum != PingReply.CheckSum) { printf(" n CheckSum is incorrect %x should be %x n", (tmp_checksum), htons(PingReply.CheckSum)); } else { // 校驗(yàn)通過可在此添加處理邏輯 } // 輸出請求信息 printf(" Request from %d.%d.%d.%d ID:%x SeqNum:%x :data size %d bytesrn", (addr[0]), (addr[1]), (addr[2]), (addr[3]), (PingReply.ID), (PingReply.SeqNum), (rlen + 6)); ping_reply_received = 1; // 標(biāo)記已收到請求 } // 處理未知類型消息 else { printf(" Unknown msg. n"); // 修正原注釋拼寫錯(cuò)誤(Unkonwn -?> Unknown) } }
ping_reply()函數(shù)主要用于處理接收的信息。它通過 recvfrom接收數(shù)據(jù),根據(jù)數(shù)據(jù)包頭信息判斷是回復(fù)還是請求,提取并解析相關(guān)信息,計(jì)算校驗(yàn)和并進(jìn)行檢查,根據(jù)不同情況輸出信息,如錯(cuò)誤提示、回復(fù)來源信息或請求來源信息等,并設(shè)置接收狀態(tài)標(biāo)志。
8運(yùn)行結(jié)果
燒錄例程運(yùn)行后,首先進(jìn)行了PHY鏈路檢測,然后打印設(shè)置網(wǎng)絡(luò)信息,最ping目標(biāo)IP收到回復(fù),如下圖所示:
9總結(jié)
本文講解了如何在 W55MH32芯片上通過 IPRAW模式實(shí)現(xiàn) ICMP協(xié)議中的 PING命令,以進(jìn)行網(wǎng)絡(luò)連通性測試,通過實(shí)戰(zhàn)例程展示了從發(fā)送 PING請求、接收并解析回復(fù)到統(tǒng)計(jì)結(jié)果的完整過程。文章詳細(xì)介紹了 IPRAW模式和 PING命令的概念、特點(diǎn)、應(yīng)用場景、基本工作流程和報(bào)文解析,幫助讀者理解其在網(wǎng)絡(luò)測試和故障排查中的實(shí)際應(yīng)用價(jià)值。
下一篇文章將聚焦 ARP協(xié)議,解析其核心原理及在網(wǎng)絡(luò)通信中的應(yīng)用,同時(shí)講解如何在W55MH32上實(shí)現(xiàn) ARP協(xié)議,敬請期待!
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ū)域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。
審核編輯 黃宇
-
嵌入式
+關(guān)注
關(guān)注
5154文章
19708瀏覽量
318095 -
Ping
+關(guān)注
關(guān)注
0文章
70瀏覽量
16459
發(fā)布評論請先 登錄
即刻啟程,踏上W55MH32高性能以太網(wǎng)單片機(jī)學(xué)習(xí)之路!

WIZnet W55MH32以太網(wǎng)單片機(jī)開發(fā)教程 第十一章 通用定時(shí)器(上篇)

第二章 W55MH32 DHCP示例

第五章 W55MH32 UDP示例

第六章 W55MH32 UDP?Multicast示例

第九章 W55MH32 HTTP Server示例

第十章 W55MH32 SNTP示例

第十一章 W55MH32 SMTP示例

第十二章 W55MH32 NetBIOS示例

第十三章 W55MH32 UPnP端口轉(zhuǎn)發(fā)示例

第十四章 W55MH32 TFTP示例

第十五章 W55MH32 SNMP示例

第十七章 W55MH32 ARP示例

第十八章 W55MH32 FTP_Server示例

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

評論