w5500調試小記


w5500是全硬件 TCP/IP 嵌入式以太網控制器,W5500 集成了 TCP/IP 協議棧,10/100M 以太網數據鏈路層(MAC)及物理層(PHY),TCP/IP 協議棧支持 TCP,UDP,IPv4,ICMP,ARP,IGMP 以及 PPPoE 協議,w5500 內嵌 32K 字節片上緩存以供以太網包處理。如果你使用 W5500,你只需要一些簡單的 Socket 編程就能實現以太網應用。

W5500 提供了 SPI(外設串行接口)從而能夠更加容易與外設 MCU 整合。而且,W5500 的使用了新的高效 SPI 協議支持 80MHz 速率,

特點
- 支持硬件 TCP/IP 協議:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
- 支持 8 個獨立端口(Socket)同時通訊
- 支持掉電模式
- 支持網絡喚醒
- 支持高速串行外設接口(SPI 模式 0,3)
- 內部 32K 字節收發緩存
- 內嵌 10BaseT/100BaseTX 以太網物理層(PHY)
- 支持自動協商(10/100-Based 全雙工/半雙工)
- 不支持 IP 分片
- 3.3V 工作電壓,I/O 信號口 5V 耐壓
- LED 狀態顯示(全雙工/半雙工,網絡連接,網絡速度,活動狀態)
- LQFP48 無鉛封裝(7x7mm,間距 0.5mm)

上面規格書的大致說明,在項目中,配置了spi的mode0,速率比上面提到的慢很多,500k左右,,w5500本身默認是全功能,自然就支持全雙工了,另外還有一個引腳,可以根據寄存器的配置而出發中斷,低電平有效,高電平無中斷。在stm32中只能配置下降沿中斷。

另外,tcp協議是有三次握手和四次分手的特性,而且接受法收到信息都要返回ack用以確認,因此tcp是可靠連接方式,udp是不可靠的,因此tcp協議為了達到可靠性,增加了很多特寫,重發機制,滑動窗口,快速重發等等,難怪有tcpip詳解的書籍,那可是聖經了。

在w5500中,有兩個寄存器設置,就是rtr和rcr,默認是200ms,8次,我實際配置200ms3次,

 

 

RTR ( 重試時間值寄存器 ) [R/W] [0x0019 – 0x001A] [0x07 D0]
RTR 配置了重傳超時的時間值。每一單位數值為 100 微秒。初始化時值設為
2000(0x07D0),即相當於 200 毫秒(100us X 2000)。
在 RTR 配置的時間內,W5500 等待 Sn-CR(CONNECT, DISCON, CLOSE, SEND,
SEND_MAC, SEND_KEEP command)傳輸后,來自對方的回應。如果在 RTR 時間段內
沒有回應,W5500 進行包重傳或觸發超時中斷。
例如:當超時周期別設置為 400ms 時,RTR=(400ms/1ms)X10=4000(0x0FA0)
0x0019 0x001A
0x0F 0xA0
RCR ( 重試計數寄存器 ) [R/W] [0x001B] [0x08]
該寄存器是設置重新傳送的次數。當第‘RCR+1’次重傳時,超時中斷就會置
‘1’。(中斷寄存器(Sn_IR)的‘中斷’位(‘TIMEOUT’bit)設置為'1')。
例如:RCR = 0x0007
0x001B
0x07
W5500 的超時可以用 RTR 和 RCR 來配置。W5500 的超時包括地址解析協議(ARP)
和 TCP 重新傳送超時。

 

 

另外還有一個

 

ND/MC/
MMB
時 使用無延時 ACK
Use No Delayed ACK
0:關閉無延時 ACK 選項
1:開啟無延時 ACK 選項
該位只有在 TCP 模式下(P[3:0] = ‘0001’)才能生效。
當該位設置為‘1’時,W5500 會在從對端接收到數據包后沒有任何延時盡快地回復 ACK 包。當該位為‘0’,W5500 發送 ACK 包需要 RTR 設定的超時時間做延時。

這個我配置了無延時ack,好像還是有延時ack穩定。

另外,tcpip協議是只是一個統稱,里面有很多協議,ip地址這個很容易理解,端口號,以前不是很理解,現在理解了,就是給一個應用的端口,一個ip里面有很多程序,那么這個數據包給誰解析,就靠端口號來判斷。

以上就是一點點記錄。

 

另外,網上有很多驅動,有查詢方式的,有中斷方式,目前中斷方式的通信測試比較穩定,端口號也是穩定


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM