上海皕科電子有限公司

Shanghai Bitconn Electronic Co.,Ltd.

公司介紹
上海皕科電子有限公司是一家專業的芯片代理商和方案提供商。總部設在上海,是一家專業為中國電子企業提供單片機,無線RF,以太網IC及外圍器件、開發工具和相關應用解決方案的高新技術企業。公司的主要代理品牌有Digi、Wiznet、Xinnova,以及華虹MCU等。
  公司擁有優秀的銷售團隊和專業的研發部門,不但在品牌、價格、供貨、服務等方面領先業界,而且可為客戶提供及時、可行的技術支持和整體設計服務,滿足不同客戶多層次需求。

W5500常見問題及解決方案(全)

發表時間:2019-5-4  瀏覽次數:5725  
字體大小: 【小】 【中】 【大】

Q1: 在芯片處于TCP_Server模式下,在交換機/路由器網絡中無法ping通也無法通訊。

R: WIZnet芯片是硬件協議棧芯片,有別于軟件協議棧,如果芯片不主動往網絡中發包,在TCP_Server模式下是不會有任何數據包發送的,這樣會造成路由ARP表中無法形成IP和MAC設備的對應關系。

A:解決方案:

在芯片上電時往任意IP發送一個UDP數據包,從而更新路由的ARP表,形成匹配關系,后續通訊就正常了。

 

Q2: 芯片在TCP_Client模式下,斷電重啟之后無法立即連接到服務器。

R:這是由于客戶端沒有主動發送斷開請求,造成服務器并不知道Socket已發生異常斷開; 重新上電之后,芯片以相同的IP和端口連接服務器,而服務器還認為此Socket鏈接存在,所以拒絕芯片的立即連接。

A:解決方案:

在芯片使用KEEP_ALIVE機制,一段時間內發送呼吸包,如果芯片沒有給服務器回復,服務器則判斷鏈接已斷開,并釋放Socket資源,這時就可以成功連接。如果對客戶端的本地端口沒有要求的話,也可以在初始化Socket的部分讓端口自動+1處理。兩種方式根據具體應用分析采用。

注: 有的場景不能采用端口自動+1的方式,比如電力104規約,只允許采用2404端口連接。

 

Q3: 網線異常斷開,服務器的Socket已經斷開,但是芯片不知道Socket已經斷開,并沒有重建鏈接,此時怎么處理?

A:解決方案:

可以在主循環中加入判斷PHYCFGR狀態的處理流程,如果PHY狀態發生異常,釋放所有的socket資源,并重新初始化socket。相關寄存器如下:

 

 Q4:如果芯片作為TCP_Server,最多可以鏈接幾個Client,應該如何操作?

A:解決方案:

芯片作為TCP_Server,最多可以與8個客戶端建立連接。不能初始一個Socket對應多個連接。可以將芯片的8個socket全部初始化,這樣就可以與8個不同的TCP_Client建立通訊鏈接。

 

Q5: 在芯片處于TCP_Client模式下,無法連接到服務器。

R: 在TCP_Client模式下,WIZnet芯片無法連接到服務器。

A: 遇到這個問題,有一個排查的步驟:

  • 檢查IP層是否可以PING通;
  • 檢查服務器的目標端口是否處于偵聽狀態,否則會收到RST數據包;
  • WIZnet芯片在連接服務器時,首先會發送ARP請求,請確認ARP得到正確回復;
  • 檢查客戶端-服務器間的3步握手是否完成;

 

Q6:W5200進入Power Down模式后,長時間以后喚醒不能恢復正常,如何解決?

A: 解決方案:

W5200的Power Down模式是通過在一定時間內關閉W5200的內置PHY電路的工作來實現的,但是有一定幾率PHY在休眠之后無法喚醒,需要在軟件上做處理來喚醒芯片。經過測試驗證發現,W5200芯片在3s極限值內快速喚醒一次再進入Power Down,當芯片需要喚醒正常工作時就不會出現以上問題。

 

Q7:WIZnet芯片進行公網通訊或者芯片間通訊的話怎么抓包?

A: 解決方案:

芯片和PC通訊的話可以直接通過Wireshark抓包,如果芯片和公網直接通訊或者通訊是發生在芯片之間,則沒有辦法直接抓包,這需要借助于“可以抓包的交換機”,這種交換機多數是二手產品,而且是10M的網絡,比如TP-LINK TL-HP5MU。把芯片和抓包計算機的網線分別插上交換機就可以運行抓包工具抓包。

 

Q8: W5300 TCP連接以后,Socket0數據收發正常,其它Socket有數據丟失是什么問題?

A:解決方案:

W5300是總線方式操作,在確保地址總線和數據總線連接正確的情況下,還有一個很重要的問題,就是保持總線時序統一,經過驗證MCU總線地址保持時間至少是W5300總線操作時間的2倍以上,否則可能會導致W5300來不及處理數據而導致數據丟失。如下圖介紹。

 

Q9: W5500的硬件設計和以往的以太網設計有不同的地方,可否使用客戶原有的以太網經驗電路?

A:解決方案:

不能使用以往的經驗電路,請嚴格按照WIZnet給出的參考設計進行硬件設計。

有的客戶反饋在使用原有的經驗電路也可以正常通訊,但是有可能發生在實驗室正常,而客戶現場連接不上的情況,所以統一建議客戶使用官方的參考設計。

 Q10:W5500的以太網電路,正常線序連接的話可能必須做過孔交叉線序,能否在線路上做交叉處理?

A: 解決方案:

W5500的以太網接口的四根線,按照正常的線序連接,必須通過過孔交叉線序; 按照以太網布局規范,需要等長差分走線。而且需要盡量少的過孔,可以適當做P-N交叉,既TXP-TXN交叉,RXP-RXN交叉,以符合以太網布線規范的要求。

 

Q11: Wake On Line(WOL)功能如何使用?

A:解決方案:

WIZnet芯片打開WOL功能只需要置位MR寄存器的WOL位,不需要外部設定。喚醒方法為向WIZnet芯片的UDP端口發送Magic數據包(0xffffffffffff+16個目的MAC地址),設備喚醒后IR寄存器的WOL位會置1,通過檢測該位獲取WIZnet芯片的狀態。(注意WOL功能不能和掉電模式(Power down mode)同時打開)

 

Q12: 如何使用UDP組播功能?

A:解決方案:

使用WIZnet芯片的UDP組播功能有幾點需要注意:

1,需要在打開Socket之前,先指定目標MAC地址為組播MAC地址,定義規則如下:

 

2,打開一個支持多播UDP的Socket,目標IP為組播地址;

3,然后就可以進行UDP組播傳輸。

注意:如果沒有定時發送“維持UDP組播”的數據包 的話就會被清出組播組,可以定時執行打開步驟2的打開Socket的指令,因為打開和維持UDP組播的數據包是完全一樣的。

 

Q13: 運行HTTP_Server程序在不同的瀏覽器下顯示效果不同,有的動態效果顯示不出來?

R: 這個是HTML代碼和瀏覽器的兼容性問題,因為HTML5的很多標簽和CSS樣式表在低版本或者不同的瀏覽器內核下的排版和兼容性都不同。

A: 在HTML開發的時候使用JavaScript可以判斷瀏覽器的內核和版本,可以針對不同的瀏覽器開發不同的執行代碼和CSS樣式表,或者建議客戶使用推薦用戶使用chrome系列或者chromium內核的瀏覽器,因為其對HTML5/CSS3支持是比較完善的。

 

Q14: MAC地址定義有什么特殊要求?

A:解決方案:

MAC地址要求不嚴格的話可以自定義,因為只要在一個子網內沒有重復的MAC地址就不會造成MAC地址沖突的問題,因為如果進行公網通訊,網關會通過NAT功能將網關的MAC和IP對數據包中的MAC和IP進行替換然后再和公網通訊,所以不會造成公網中的MAC沖突的問題。但是如果要求比較嚴格,則需要從IEEE基金會申請全球唯一的MAC地址,申請地址如下:
https://standards.ieee.org/products-services/regauth/oui36/index.html

進入該頁面后點擊Log in or create an account(新用戶需注冊),登陸后即可購買。

 Q15: WIZnet芯片PING不通其它設備。

A:根據ICMP協議,request包的大小為128byte,reply包比request包大8byte,為136byte。

客戶可以分別定義兩個Buffer[128]和Buffer[136]分別對應request包和reply包,也可以共用一個Buffer[136],但是不能發送接收使用同一個128byte的Buffer,否則會造成接收數據不全,無法解析。

 

Q16: 使用中斷方式,回環測試時無法清除中斷

R: W5500收到數據后會產生RECV中斷,當回環測試時,正常清掉RECV中斷后,由于采用的回環測試方式,W5500又將同一包數據發送了出去,所以又會產生SEND_OK中斷。

A: 此時需要再次清SEND_OK中斷,或者改用單向測試方式即可。

 

Q17: 為何使用STM32F103無法完全發揮W5500的性能

A: STM32F103的主頻最大72MHz,但是SPI接口的最高頻率限制為18MHz

而W5500的SPI時鐘最高可達80MHz,所以以

STM32   驅動W5500的話,無法滿足W5500對最高時鐘的需求。

而如果使用STM40x處理器,SPI時鐘使用42Mhz,使用DMA方式,可以達到回環測試17Mbps的速率(收+發),單獨發送可以達到13Mbps的速率

 

Q18: 如何使用PHY-PHY電路?

A: 經常有需要使用PHY-PHY電路的場景,比如使用WIZnet做內部數據通訊,比如需要使用板載的Switch電路等等,PHY-PHY電路的要點就是使用耦合電容隔離兩端的PHY,并加入兩個PHY各自的偏置電路。類似于如下的設計:

 

Q19: 以太網如何級聯?

A: 在特殊的應用場景下,客戶需要用網線將所有的節點按照這種方式“A-B-C-D-E”線狀級聯在一起。這種應用需要使用Switch芯片,比如IP175G等芯片,按如下圖示鏈接:

 

Q20: 無法通過“以太網物理層一致性測試”中的眼圖測試

A: 眼圖是表現網絡信號是否穩定的測試,眼圖混亂有可能導致同一批次的設備有的無法正常通信,造成原因是:

1,沒有按照以太網的布局標準來設計硬件電路,

2,采用的可能是不合格的網絡變壓器器件。

下圖為使用W5500和HRW5500RE的眼圖測試結果。

 

Q21: 使用WIZnet芯片無法通過低溫測試

R: 通不過低溫測試通常表現為低溫-40℃不啟動,原因是電路上除了WIZnet 的芯片外,還有晶振以及網絡變壓器等周邊器件,造成結果通常是由采用的周邊器件不是工業級溫度的器件。癥狀如下:

晶振不是工業級溫度:寄存器無法讀寫,無法操作WIZnet芯片;

網絡濾波器不是工業級溫度:低溫下LINK燈不亮,PHY握手不成功。

 

Q22: S2E模塊,第一塊正常,以后的模塊不正常

R: 不同的系統對ARP表的更新時間設定不太一樣,在Windows2000/XP環境中,ARP表項的老化時間是2分鐘,95/98以及NT環境下為10分鐘,在大部分Cisco交換機中,該值是5分鐘,華為的設備一般為20分鐘……而S2E模組的IP出廠默認值都是192.168.1.88,而MAC都是不同且唯一的,造成PC系統的ARP中第一個之后的模塊的IP和MAC處于不對應的狀態,所以工作不正常,這種情況也較常發生于設備生產環節。

A: 需要手工強制清除系統的ARP表,指令為arp –d,或者使用我們新版本的上位機設置軟件,新版本中已經加入的清除ARP表的步驟。

 

Q23: MCU是5V的IO電平,可以和WIZnet通訊嗎?

A: WIZnet多數的芯片的IO是兼容5V電平的,可以和5V電平的MCU直接通訊,但是為了保險,我們一般都會在SPI線路上各串接一個限流電阻,比如10~100歐姆的電阻,防止過流損壞。下圖是W5500的IO耐壓參數。

具體芯片請參看手冊的“High level input Voltage”參數確認。

 

Q24: 在Linux下如何使用W5500芯片?

A:在Linux kernel新版本中在原先支持W5100,W5200的基礎上已經加入了對W5500的支持,如果客戶基于老版本的Linux開發,請參照Linux新版本修改,或者基于我們提供給的老版本驅動。

文件路徑為: /drivers/net/ethernet/wiznet/w5100-spi.c

具體說明見如下鏈接:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/net/ethernet/wiznet/w5100-spi.c?id=35ef7d689d7d54ab345b179e50c749fe3a2529eb

 

Q25: WIZnet芯片和支持IP分片的設備通訊的時候怎么辦?

A: 所謂的IP分片是指:當IP數據報超過幀的MTU(最大傳輸單元)時,它將會被分片傳輸。分片能發生在發送端或者中轉路由器,且在傳輸過程中可能被多次分片。在最后的目標機器上這些分片才會被內核的的IP模塊重新組裝。

WIZnet芯片都不支持IP分片,不能發送支持IP分片的數據包,只能按照MTU(最大發送字節數)發送數據,但是如果對方設備給WIZnet芯片發送IP分片的數據包的話, WIZnet芯片可以正常接收,但是不會自動合并成一個數據包。

 

Q26: 為何使WIZnet芯片不回復PING包請求

A: 有些特殊場景下,客戶需要所有的設備屏蔽掉PING包回復,WIZnet芯片可以通過設置MR (Mode Register)的PING Response Block來屏蔽PING包Reply,設置為“1”WIZnet芯片就不會回復任何PING請求。

 

Q27:如何使用W5100S的SOCKET-less實現ARP

A: W5100S支持SOCKET-less指令,只需要設置相關的寄存器就可以方便的實現ARP,無需像W5500一樣用socket實現。實現步驟:

1,設置SLRTR(重試時間)SLRCR (重試次數) SLPIPR ( SOCKET-less的IP) 等參數;

2, 通過設置SLCR (SOCKET-less Command Register)來觸發查詢操作,其中ARP查詢的MAC信息會被存儲在SLPHAR (SOCKET-less Peer Hardware Address Register)中。

 

Q28:如何使用W5100S的SOCKET-less指令實現PING

A: W5100S支持SOCKET-less指令,只需要設置相關的寄存器就可以方便的實現PING,無需像W5500一樣用socket實現。實現步驟:

1,設置SLRTR(重試時間)SLRCR (重試次數) SLPIPR ( SOCKET-less的IP) PINGSEQR(PING隊列號碼)和PINGIDR(PING包ID號)等參數;2, 通過設置SLCR (SOCKET-less Command Register)來觸發查詢操作,PING查詢的話如果SLIR( SOCKET-less 中斷寄存器)被觸發,則表明PING包成功到達。

 

Q29:每個UDP包都會發送ARP請求,如何關閉強制ARP

A: WIZnet芯片在UDP模式,在發送第一個UDP數據包之前發送一次ARP請求數據包,然后它會將數據連續發送到同一個Peer。可以通過設置MR2 (Mode Register 2)的FARP寄存器來設置強制ARP功能,如果此位設置為“1”,它為每個UDP數據包發送ARP請求。設置為“0”,將只在第一次發送的時候發送一次ARP請求數據包。

 

Q30: 如果發生異常,如何復位PHY部分

A: W5500和W5100S都可以通過設置寄存器來復位PHY部分,而不是整體復位芯片。其中W5500是設置PHYCFGR(PHY配置寄存器)的RST位為“0”來復位PHY部分,注意復位后需要重新置為“1”,

而W5100S是通過PHYCR1(PHY Control Register 1)的RST位來復位PHY部分。

 

Q31:W5100S和W5500的最低功耗是多少?

A: W5100S和W5500因為采用新工藝以及新的PHY方案,所以整體功耗相對W5100更為改善,對比數據(LINK)如下:

W5100S W5500 W5100
典型值 最大值 典型值 最大值 典型值 最大值
100M 93mA 110mA 128mA 138mA 183mA
10M 150mA 170mA 75mA 146mA 183mA
節能模式 17mA X 13mA X X X

 

Q32:OPMODE管腳和相關寄存器,誰的優先級高

A:WIZnet多數芯片有OPMODE硬件管腳來管理PHY鏈路狀態,但是也可以通過內部的寄存器來設置,他們生效有先后順序,芯片上電的時候以OPMODE管腳設置為準,但是上電之后可以通過寄存器更改PHY鏈路狀態,而忽略硬件管腳的配置。

注意芯片管腳的設置是不一樣的:

W5100:                                                                                                                          W5500:

 

Q33:WIZnet芯片對晶振有什么要求

A:所有的WIZnet的Ethernet系列產品都是使用的25MHz的晶振,對晶振的要求不太高,一般情況下只要是滿足“±30 ppm” 的晶振都可以使用,溫度等級根據實際應用選擇,至于以及頻率衰減,一般要求“±3ppm / year Max”,具體要求見相關產品的手冊。

注意:W5500的晶振負載電容為18pF,W5100S的負載電容為8pF

 

Q34:WIZnet產品如何使用有源晶振

A:具體芯片的有源晶振使用方法和要求不一樣.

比如W5500的要求是:有源晶振通過XI/CLKIN管腳輸入時鐘信號,信號電平要求是3.3V,XO管腳懸空。

而W5100S的要求是:有源晶振通過XSCI管腳輸入時鐘信號,信號電平要求是1.2V,XSCO管腳懸空。

 

Q35:兩個W5500用網線直連,無法通訊,LINK燈不亮

A:W5500不支持自動極性轉換(AUTO-MDI),所以兩個W5500不能使用直連網線連接,否則會造成無法完成PHY握手, 所以兩個W5500互聯需要使用交叉網線,或者中間通過交換機連接。

 

Q36:如何使用W5500的keep-alive功能?

A:  使用WIZnet的keep-alive功能需要先設定本Socket的keep-alive包的發送時間間隔,單位是5秒,設置方式如下:

IINCHIP_WRITE(Sn_KPALVTR(s),0x02); //設置時間間隔為2個單位,即10s

Keep-alive功能會在W5500同對方完成一次數據通訊后開啟,其后W5500會自動給對端按照設定的時間間隔發送keep-alive包。

 

Q37:如何測試實際通訊速度(AX1)

A:  可以使用WIZnet官方的速度測試工具AX1進行通訊速度測試,測試方法如下:

第一步,打開AX1并點擊“CPUTICK”校準時鐘;

第二步,選擇“TCP→Listen/Connect”,并輸入對應的參數;

第三部,點擊“File”選擇測試媒介文件(一般txt文檔即可);

第四部,點擊“Ts/Us/Tr/Ur/∞”開始測速,界面會顯示實時速率。

Ts:TCP模式發送數據再接收,整個過程只進行一次
Us:UDP模式發送數據再接收,整個過程只進行一次

Tr:TCP模式接收數據再發送出去,整個過程只進行一次
Ur:UDP模式接收數據再發送出去,整個過程只進行一次
∞:以UDP的方式循環發送/接收數據n次

 

Q38:對W5500進行PING測試,為什么會丟包

A:  在對W5500進行PING測試的時候偶爾會有丟包,以及PING時間長的問題,造成這種情況的原因有幾個:

  • 在對W5500進行PING測試的同時還進行,數據通訊,PING基于ICMP協議在處理優先級最低,W5500會優先處理數據通訊數據,所以會偶爾造成PING超時或PING時間長;
  • 網絡環境比較差,網絡比較忙碌,造成PING包到達和返回的時間相應延長;

 

Q39:WOL模式和Power Down模式的區別

A:  WOL模式下,WIZnet芯片除了Magic packet數據包之外不再接收其他類型的數據包,只有接收到Magic packet數據包,才會觸發中斷,從而通知MCU重新初始化WIZnet芯片,繼而開始工作。

Power Down模式下,WIZnet芯片的PHY部分會處于完全關斷的情況,只有通過置位 [Operation Mode Configuration Bit]為其他的模式才可以退出Power Down模式。

兩種模式都可以起到節能的目的,但是實現方式不一樣,在WOL模式下,MCU可以關掉其他的外設,等待網絡喚醒后重新開始工作;而Power Doen模式下,本身不再接收其他的數據包,不能通過網絡端喚醒,但是因為功耗最大的PHY在此模式下是關斷,沒有功耗的,所以本身就可以做到比較低的功耗。根據實際情況選擇需要使用的模式。

 

Q40:W5500正常工作時,芯片表面溫度達到多少?

A:  經實際測試,W5500在25℃的室溫下工作,實際的溫升有大概10~15℃,芯片表面大概是40攝氏度左右。

根據W5500的可靠性性能測試報告,W5500的極限溫度范圍如下:

 

Q41:Wireshark如何過濾數據包

A:  我們在使用抓包軟件Wireshark時,經常需要過濾掉無用包,只選擇針對WIZnet芯片通訊的包進行分析。常用過濾語法如下:

字段詳解:

Protocol(協議):ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
Direction(方向):src, dst, src and dst, src or dst

Host(s):net, port, host, portrange.

Logical Operations(邏輯運算):not(!), and(&&), or(||)

例子: (src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

顯示來源IP為10.4.1.12或者來源網絡為10.6.0.0/16,目的地TCP端口號在200至10000之間,并且目的位于網絡10.0.0.0/8內的所有封包。

 

Q42:如何使用W7500 ISP工具?

A:  W7500和W7500都可以通過SWD和ISP的方式寫入程序,對于ISP方式,WIZnet提供專門的ISP工具“W7500 ISP Tool”來下載程序。通過如下幾步就可以刷寫程序:

1,拉高BOOT管腳,并Reset;

2,選擇ISP工具的對應串口,點擊“Open”完成握手;

3,選擇擦除區域及寫保護選項;

4,選擇程序并點擊“ISP Start”開始下載;

 

Q43:W7500如何使用KEIL通過SWD調試下載程序

A 解決方案:

1,下載W7500 128K FLASH project并拷貝到KEIL的FLASH文件夾;并按右圖將W7500燒寫算法添加到KEIL算法目錄,并設置算法在RAM中運行的位置;

2,按下圖設置設置下載選項:

3,在Device選項中選擇“Use Debug Driver”選項;

4,通過工具欄的“Download”即可進行程序下載。

 

Q44:MCU無法讀寫W5500寄存器的故障排除步驟

A 解決方案:

1,檢查供電,特別是內部變壓器的供電;

2,檢查晶振輸入腳是否有波形;

//插上網線,如果LINK燈亮的話,可以基本確定供電和晶振沒有問題;

3,檢測SPI時序是否與右圖一致。

4,使用SPI接口讀取一個參數相對固定的寄存器,比如版本寄存器;

 


文章評論
發表評論:(匿名發表無需登錄,已登錄用戶可直接發表。) 登錄狀態: 未登錄,點擊登錄
上海皕科電子有限公司 版權所有
地址:上海市閔行區都園路4288號D區220室
電話:021-54852770
郵件:sales@bitconn.com
 
豆奶视频app官网版下载-豆奶视频破解版下载