FAE常見問題及解決方案-TOP10

應用, 物聯網
Q1: 在芯片處於TCP_Server模式下,在交換機/路由器網絡中無法ping通也無法通訊。 R: WIZnet芯片是硬件協議棧芯片,有別於軟件協議棧,如果芯片不主動往網絡中發包,在TCP_Server模式下是不會有任何數據包發送的,這樣會造成路由ARP表中無法形成IP和MAC設備的對應關係。 A:解決方案: 在芯片上電時往任意IP發送一個UDP數據包,從而更新路由的ARP表,形成匹配關係,後續通訊就正常了。 關鍵詞:交換機/路由器網絡無法ping通 Q2: 芯片在TCP_Client模式下,斷電重啟之後無法立即連接到服務器。 R:這是由於客戶端沒有主動發送斷開請求,造成服務器並不知道Socket已發生異常斷開; 重新上電之後,芯片以相同的IP和端口連接服務器,而服務器還認為此Socket鏈接存在,所以拒絕芯片的立即連接。 A:解決方案: 在芯片使用KEEP_ALIVE機制,一段時間內發送呼吸包,如果芯片沒有給服務器回復,服務器則判斷鏈接已斷開,並釋放Socket資源,這時就可以成功連接。如果對客戶端的本地端口沒有要求的話,也可以在初始化Socket的部分讓端口自動+1處理。兩種方式根據具體應用分析採用。 注: 有的場景不能採用端口自動+1的方式,比如電力104規約,只允許採用2404端口連接。 關鍵詞:重啟才能連接/ 鏈接原先正常,後來連接不上/服務器重啟才能恢復/更換IP或端口才能重連 Q3: 網線忽然斷開,服務器的Socket已經斷開,但是芯片不知道Socket已經斷開,並沒有重建鏈接,此時怎麼處理 A:解決方案: 可以在主循環中加入判斷PHYCFGR狀態的處理流程,如果PHY狀態發生異常,釋放所有的socket資源,並重新初始化socket。相關寄存器如下: 關鍵詞:拔網線,鏈接不恢復 Q4:如果芯片作為TCP_Server,最多可以鏈接幾 個Client,應該如何操作? A:解決方案: 芯片作為TCP_Server,最多可以與8個客戶端建立連接。不能初始一個Socket對應多個連接。可以將芯片的8個socket全部初始化,這樣就可以與8個不同的TCP_Client建立通訊鏈接。 Q5:W5200進入Power Down模式後,長時間以後喚醒不能恢復正常,如何解決? A: 解決方案: W5200的Power Down模式是通過在一定時間內關閉W5200的內置PHY電路的工作來實現的,但是有一定幾率PHY在休眠之後無法喚醒,需要在軟件上做處理來喚醒芯片。經過測試驗證發現,W5200芯片在3s極限值內快速喚醒一次再進入Power Down,當芯片需要喚醒正常工作時就不會出現以上問題。 Q6:WIZnet芯片進行公網通訊或者芯片間通訊的話怎麼抓包? A: 解決方案: 芯片和PC通訊的話可以直接通過Wireshark抓包,如果芯片和公網直接通訊或者通訊是發生在芯片之間,則沒有辦法直接抓包,這需要藉助於“可以抓包的交換機”,這種交換機多數是二手產品,而且是10M的網絡,比如TP-LINK TL-HP5MU。把芯片和抓包計算機的網線分別插上交換機就可以運行抓包工具抓包 Q7: W5300 TCP連接以後,Socket0數據收發正常,其它Socket有數據丟失是什麼問題? A:解決方案: W5300是總線方式操作,在確保地址總線和數據總線連接正確的情況下,還有一個很重要的問題,就是保持總線時序統一,經過驗證MCU總線地址保持時間至少是W5300總線操作時間的2倍以上,否則可能會導致W5300來不及處理數據而導致數據丟失。如下圖介紹。 (more…)
Read More