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