公司擁有優秀的銷售團隊和專業的研發部門,不但在品牌、價格、供貨、服務等方面領先業界,而且可為客戶提供及時、可行的技術支持和整體設計服務,滿足不同客戶多層次需求。
W5500問題集錦(五)
Q1:W5500支持網絡喚醒嗎?
R:不支持,網絡喚醒是W5500正常工作,去喚醒mcu,想低功耗的話就設置為10M模式。
Q2: W5500數據交互速度過快的時候,使用抓包工具發現TCP ZERO WINDOWS包時,如何解決?
R:接收方應用沒有及時recv消息,導致接收緩沖滿,即滑動窗口為0,接收方發送TCP Zero Window告知發送方不能繼續發送消息。
Q3: W5500處于TCP_Server模式下,在交換機/路由器網絡中無法ping通也無法通訊。
R: W5500是硬件協議棧芯片,有別于軟件協議棧,如果W5500不主動往網絡中發包,在TCP_Server模式下是不會有任何數據包發送的,這樣會造成路由ARP表中無法形成IP和MAC設備的對應關系。
A:解決方案:
在W5500上電時往任意IP發送一個UDP數據包,從而更新路由的ARP表,形成匹配關系,后續通訊就正常了。
Q4: W5500在TCP_Client模式下,斷電重啟之后無法立即連接到服務器。
R:這是由于客戶端沒有主動發送斷開請求,造成服務器并不知道Socket已發生異常斷開。重新上電之后,W5500以相同的IP和端口連接服務器,而服務器還認為此Socket鏈接存在,所以拒絕W5500的立即連接。
A:解決方案:
在W5500使用KEEP_ALIVE機制,一段時間內發送心跳包,如果W5500沒有給服務器回復,服務器則判斷鏈接已斷開,并釋放Socket資源,這時就可以成功連接。如果對客戶端的本地端口沒有要求的話,也可以在初始化Socket的部分讓端口自動+1處理。兩種方式根據具體應用分析采用。
注: 有的場景不能采用端口自動+1的方式,比如電力104規約,只允許采用2404端口連接。
Q5: W5500如何檢測網線被拔出?如何進行斷線檢測?
A:解決方案:
可以在主循環中加入判斷PHY_CFGR狀態的處理流程,如果PHY狀態發生異常,釋放所有的socket資源,并重新初始化socket。
Q6: W5500作為TCP服務器,最多可以鏈接幾個TCP客戶端?
A:解決方案:
W5500作為TCP_Server,最多可以與8個客戶端建立連接。不能初始一個Socket對應多個連接。可以將W5500的8個socket全部初始化,這樣就可以與8個不同的TCP_Client建立通訊鏈接。
Q7: W5500接外網如何調試,如何抓包?
A: 解決方案:
W5500和PC通訊的話可以直接通過Wireshark抓包,如果W5500和公網直接通訊或者通訊是發生在W5500之間,則沒有辦法直接抓包,這需要借助于“可以抓包的交換機”,這種交換機多數是二手產品,而且是10M的網絡,比如TP-LINK TL-HP5MU。把W5500和抓包計算機的網線分別插上交換機就可以運行抓包工具抓包。
Q8:怎么確保W5500的MAC地址的唯一性?
A:解決方案:
MAC地址需要保證全球唯一。但實際上MAC地址只用于鏈路層,在同一局域網內才有沖突的可能。所以可以首先必須保證MAC地址首字節為偶數,其次選取自己產品的MCU ID 序列后5個字節當做MAC地址后5個字節,這樣可以保證產品量產后彼此的MAC地址肯定不同。當然也可以向IEEE組織申請MAC地址。