W5500是WIZnet最新推出的一款高性能以太網芯片,發揚了早期芯片W5100 & W5200的所有主要特徵。全功能10/100以太網MAC&PHY,全硬件TCP/IP協議處理,8個獨立socket,32KB RAM緩存。新的W5500獨特處包括一個更快、多功能的SPI接口(80 MHz),主控芯片靈活地利用W5500緩存處理通用的數據,片上RAM比較小的低成本單片機也同樣可以。
那麼,今天給大家繼續介紹W5500用戶手冊的最後一部分。
4.2 Socket 端口寄存器
Sn3_MR (Socket n模式寄存器) [R/W] [0x0000] [0x00]
該寄存器用於配置所有 SOCKET 的選項或協議類型
表格 12 Sn_MR 描述
3n 是 Socket 編號(0,1,2,3,4,5,6,7).n 設置了 SNUM[2:0]控制位集
n is Socket number (0, 1, 2, 3, 4, 5, 6, 7). n is set ‘SNUM[2:0]’ in Control Bits sets.
Sn_CR (Socket n 配置寄存器) [R/W] [0x0001] [0x00]
該寄存器用於設置 Socket n 的配置命令如 OPEN、CLOSE、CONNECT、LISTEN、END 和 RECEIVE。經 W5500 識別這一命令後,Sn_CR 寄存器會自動清零為 0x00。儘管 Sn_CR 被清零為 0x00,但命令仍在處理中。為了驗證該命令是否完成,請檢查 Sn_IR 或 Sn_SR 寄存器。
表格 13 Sn_CR 描述
Sn_IR (Socket n 中斷寄存器) [R] [0x0002] [0x00]
Sn_IR 寄 存器用於提供給 Socket n 中斷類型信息, 如建立(Establishment)、 終止
(Termination)、接收數據(Receiving data)和超時(Timeout)。當觸發一個中斷即 Sn_IMR
的對應位是’1’的時候,Sn_IR 的對應位也將會變成‘1’。 如果想把 Sn_IR 位清零的話,主機應該將該位置‘1’。
表格 14 Sn_IR 描述
Sn_SR (Socket n 狀態寄存器) [R] [0x0003] [0x00]
Sn_SR 指示了 Socket n 的狀態,並根據 Sn_CR 或者一些 TCP 模式下的特殊控制包,
如 SYN,FIN 包而改變。
表格 15 Sn_SR 狀態描述
下表顯示了 Socket n 狀態改變時的臨時狀態。
表格 16 Sn_SR 臨時狀態描述
Sn_PORT (Socket n 源端口寄存器) [R/W] [0x0004-0x0005] [0x0000]
該寄存器配置了 Socket n 的源端口號。當 Socket n 工作在 TCP 或 UDP 模式下,該寄
存器生效。注意:必須在 OPEN 命令生效前,完成對該寄存器的設置。 例) 如 SOCKET 0 的端口=5000(0x1388),配置應如下,
Sn_DHAR (Socket n 目的 MAC 地址寄存器) [R/W] [0x0006-0x000B] [0xFFFFFFFFFFFF]
Sn_DHAR 寄存器指示的為:UDP 模式下,使用 Send_MAC 配置命令,配置 Socket n
的目標主機 MAC 地址;或者 CONNECT/SEND 配置命令,ARP 過程獲取到的 MAC 地址。
例) 如 Socket 0 的目標 MAC 地址 = 08.DC.00.01.02.10,配置應如下,
Sn_DIPR (Socket 目標 IP 地址寄存器) [R/W] [0x000C-0x000F] [0x00000000]
Sn_DIPR 配置或指示的為 Socket n 的目標主機 IP 地址,在 TCP/UDP 模式下生效。
在 TCP 客戶端模式下,在 CONNECT 配置命令前,該寄存器設置了 TCP 服務器的 IP
地址。
在 TCP 服務器模式下,他顯示了在成功建立連接後,TCP 客戶端的 IP 地址;
在 UDP 模式下,他配置了對方主機的 IP 地址以供 SEND 或 SEND_MAC 配置命令後接 收 UDP 包。
例) 如 Socket 0 的目標 IP 地址= 192.168.0.11, 配置應如下,
Sn_DPORT (Socket n 目標端口寄存器) [R/W] [0x0010-0x0011] [0x00]
Sn_DPORT 配置或指示了 Socket n 的目標主機端口號,在 TCP/UDP 模式下生效。
在 TCP 客戶端模式下,在 CONNET 配置命令前,該寄存器配置了 TCP Server 監聽的 端口號。
在 TCP 服務器模式下,他顯示了在成功建立連接後,TCP 客戶端的端口號;
在 UDP 模式下,他配置了對方主機的端口號以供 SEND 或 SEND_MAC 配置命令後接收
UDP 包。
例) 如 Socket 0 的目標端口號 = 5000(0x1388) ,配置應如下,
Sn_MSSR (Socket n-th 最大分段寄存器) [R/W] [0x0012-0x0013] [0x0000]
該寄存器配置或顯示了 Socket n 的最大傳輸單元 MTU(Maximum Transfer Unit)。
在 TCP/UDP 模式下,默認該寄存器設定的最大傳輸單元生效。
然而,在 PPPoE 模式下(MR[PPPoE] = ‘1’),該寄存器將取決於 PPPoE 的最大傳輸單元。
表格 17 Sn_MSSR 描述
當 Socket n 處於 MACRAW 模式時,由於 MTU 不在內部處理,默認的 MTU 將會生效,
因此,當傳輸的數據比默認的 MTU 大時,主機需要手動的將數據劃分成默認 MTU 大小 單元進行傳輸。
當 Socket n 處於 TCP/UDP 模式,而傳輸的數據比 MTU 大時,數據將會被自動的劃分 成默認 MTU 單元大小傳輸。
在 UDP 模式下,由於不像 TCP 模式那樣涉及到一些連接過程,所以使用了 MTU 配置。 當不同大小的 MTU 數據傳輸給對方是時,可能會收到 ICMP 包(MTU 分片)。這樣的話 IR(FMTU)置‘1’,對方的信息如 MTU 大小以及 IP 地址將分別由 FMTUR 和 UIPR 指定。 如果 IR[MTU] = ‘1’,用戶不能發送數據到對方。如果要重新恢復與對方的通訊,可以按 照以下操作:
1. 通過 CLOSED 配置命令關閉 Socket。
2. 設置 Sn_MSS 指定 FMTUR 中的 MTU。
3. 通過 OPEN 配置命令打開 Socket n。
4. 重新與對方通信
例) 如 Socket 0 的 MSS = 1460(0x05B4) , 配置應如下,
Sn_TOS (Socket IP 服務類型寄存器) [R/W] [0x0015] [0x00]
該寄存器設置在 IP 層里 IP header 的 TOS(Type of Service – 服務類型) 字段。它應在執 行 OPEN 命令之前設置。請參考 http://www.iana.org/assignments/ip-parameters.
Sn_TTL (Socket IP 生存時間寄存器) [R/W] [0x0016] [0x80]
該寄存器設置在 IP 層里 IP 頭的 TTL(Time-To-Live – 生存時間) 字段。它應在執行
OPEN 命令之前設置。請參考 Uhttp://www.iana.org/assignments/ip-parametersU . Sn_RXBUF_SIZE (Socket n 接收緩存大小寄存器 – Socket n RX Buffer Size Register) [R/W] [0x001E] [0x02]
Sn_RXBUF_SIZE 配置了 Socket n 的接收緩存大小。Socket n 接收緩存區大小可以配置 為 1,2,4,8 和 16Kbytes。如果配置為其他大小,則 W5500 不能正常的從對方主機接 收數據。
即使 Socket n 的 接收 緩存 大 小初始 默認為 2Kbytes 。 用戶仍 然可 以 使用 Sn_RXBUF_SIZE 重新定義。但是所有 Socket 接收緩存(Sn_RXBUF_SIZE)的總大小不能 超過 16Kbytes。否則,將會使得接收異常。
當 所 有 的 Sn_RXBUF_SIZE 配 置 完 成 後 , 就 會 按 照 Socket 0 到 7 的 順 序 依 次 將
16Kbytes 的接收內存分配給各個 Socket 作為接收緩存使用。
不論 Socket n 的接收緩存配置的大小如何,都可以被 16 位的偏移地址尋址找到。(尋 址範圍:0x0000 到 0xFFFF)
例) Socket 0 RX Buffer Size = 8KB
Sn_TXBUF_SIZE (Socket n 發送緩存大小寄存器) [R/W] [0x001F] [0x02]
Sn_TXBUF_SIZE 配置了 Socket n 的發送緩存大小。Socket n 發送緩存區大小可 以配置為 1,2,4,8 和 16Kbytes。如果配置為其他大小,則 W5500 不能正常給對 方主機發送數據。
即使 Socket n 的 發送 緩 存 大小 初始默 認 為 2Kbytes 。用 戶 仍然 可以使用 Sn_RXBUF_SIZE 重新定義。但是所有 Socket 發送緩存的總大小不能超過 16Kbytes。 否則,將會使得發送異常。
當所有的 Sn_TXBUF_SIZE 配置完成後,就會按照 Socket 0 到 7 的順序依次將
16Kbytes 的發送內存分配給各個 Socket 作為發送緩存使用。
不論 Socket n 的接發送存配置的大小如何,都可以被 16 位的偏移地址尋址找到。
(尋址範圍:0x0000 到 0xFFFF)
例) Socket 0 TX Buffer Size = 4KB
Sn_TX_FSR (Socket n 空閑發送緩存寄存器) [R] [0x0020-0x0021] [0x0800]
Sn_TX_FSR 顯 示了 Socket n 發送緩 存的 空閑空 間 大小。 該寄存 器初 始化 配 置為 Sn_TXBUF_SIZE 大小。當傳輸數據比 Sn_TX_FSR 大時,將不能保存到 Socket n 的發送 緩存中。因為多出來的數據會覆蓋之前未傳輸完成的數據。因此在向 Socket n 發送緩 保存數據之前,需要先檢查一下數據大小是否等於或小於其剩餘空間,然後再保存數據 到發送緩存並通過 SEND/SEND_MAC 配置命令發送。如果數據比檢查到的剩餘空間大, 需要將數據劃分成小於或等於剩餘空間的大小之後,再保存數據到 Socket n 發送緩存。
如果 Sn_MR(P[3:0])不是 TCP 模式(‘0001’),W5500 將計算髮送寫指針(Sn_TX_WR)和
Socket n 發送讀指針之間的空間,並自動將數據劃分成相應大小。
如果 Sn_MR(P[3:0])是 TCP 模式(‘0001’),W5500 將計算髮送寫指針(Sn_TX_WR)與內 部 ACK 指針(指示已經從連接對方接收數據的節點位置)之間的空間。
例) 如 2048(0x0800) 在 S0_TX_FSR 時,
例) In case of 2048(0x0800) in S0_TX_FSR,
Sn_TX_RD (Socket n 發送讀指針寄存器) [R] [0x0022-0x0023] [0x0000]
Sn_TX_RD 寄存器可以通過 OPEN 配置命令進行初始化。然而,如果 Sn_MR(P[3:0])是
TCP 模式(‘0001’),該寄存器將會在 TCP 連接期間,重新進行初始化。 該寄存器初始化之後,會根據 SEND 配置命令自增。SEND 配置命令傳輸的是 Socket n
發送緩存中,當前 Sn_TX_RD 到 Sn_TX_WR 之間保存的數據。在傳輸完保存的數據之後,
SEND 配置命令會使得 Sn_TX_RD 等於 Sn_TX_WR。當 Sn_TX_RD 增加的值超出最大值
0xFFFF(大於 0x10000 併產生進位),Sn_TX_RD 會忽略進位,僅使用低 16 位的值。
Sn_TX_WR (Socket n 發送寫指針寄存器) [R/W] [0x0024-0x0025] [0x0000]
Sn_TX_WD 寄存器可以通過 OPEN 配置命令進行初始化。然而,如果 Sn_MR(P[3:0])是
TCP 模式(‘0001’),該寄存器將會在 TCP 連接期間,重新進行初始化。 該寄存器需要讀取或更新如下。
1. 讀取發送緩存中將要保存傳輸數據的首地址。
2. 從 Socket n 的發送緩存對應的首地址開始,保存需要傳輸的數據;
3. 在保存完傳輸數據之後,將 Sn_TX_WR 的值增加到傳輸數據大小。如果增加後, 超過最大值 0xFFFF(比 0x10000 大且產生進位),那麼將自動忽略進位,並自動 更新為低 16 位的值。
4. 通過使用 SEND 命令發送保存在 Socket n 發送緩存中的數據。
Sn_RX_RSR (Socket n 空閑接收緩存寄存器) [R] [0x0026-0x0027] [0x0000]
Sn_RX_RSR 顯示了 Socket n 接收緩存中已接收和保存的數據大小。
Sn_RX_RSR 不會超過 n_RXBUF_SIZE 大小,且計算的為 Socket n 接收寫指針(Sn_RX_WR)
和 Socket n 接收讀指針之間的空間大小。 例) 如 2048(0x0800) 在 S0_RX_RSR 時,
Sn_RX_RD (Socket n 接收讀指針寄存器) [R/W] [0x0028-0x0029] [0x0000]
Sn_RX_RD 寄存器可以通過 OPEN 配置命令進行初始化。請確保該寄存器按照以下步 驟讀取並更新:
1. 讀取保存在接收緩存中數據的首地址;
2. 從保存在 Socket n 接收緩存中數據的首地址開始讀取數據;
3. 在讀取完畢接收數據,將 Sn_RX_RD 的值更新為所讀數據大小。如果增加後的值 超過最大值 0xFFFF,即超過 0x10000 併產生進位,將會忽略進位,只取低 16 位 值。
4. 在接收到 RECV 命令後,將更新後的 Sn_RX_RD 值告知 W5500.
例) 如 2048(0x0800) 在 S0_RX_RD 時,
Sn_RX_WR (Socket n 接收寫指針寄存器) [R] [0x002A-0x002B] [0x0000]
Sn_RX_WR 寄存器可以通過 OPEN 配置命令進行初始化。並且隨着數據接收自動增加。 如果 Sn_RX_WR 的值增長到超過最大值 0xFFFF(即超過 0x10000 併產生進位),那麼
將自動忽略進位,並自動更新為低 16 位的值。 例) 如 2048(0x0800) 在 S0_RX_WR 時,
Sn_IMR (Socket n 中斷屏蔽寄存器) [R/W] [0x002C] [0xFF]
Sn_IMR 負責屏蔽 Socket n 的中斷。每一位都對應了 Sn_IR 寄存器的相應位。Socket n 的中斷觸發並且 Sn_IMR 的對應位為‘1’時,Sn_IR 的對應位變為‘1’。如果 Sn_IMR 和 Sn_IR 的對應位均為‘1’且 IR 寄存器的相應為‘1’,INTn 引腳便會拉低並使主機 產生中斷。
表格 18 Sn_IMR 描述
Sn_FRAG (Socket n 分段寄存器) [R/W] [0x002D-0x002E] [0x4000]
它設置了 IP 層中 IP 報頭的分段字段。 例) Sn_FRAG0 = 0x4000 (不要分段)
Sn_KPALVTR (Socket 在線時間寄存器) [R/W] [0x002F] [0x00]
Sn_KPALVTR 配置了 SOCKET n 的‘KEEP ALIVE(KA)’在線驗證心跳包傳輸時間。他只在
TCP 模式下生效,在其他模式下將會被忽略。單位時間為 5 秒。
KA 包會在 Sn_SR 變為 SOCK_ESTABLISHED 且與對方至少進行過一次收或發的通訊後 進行傳輸。如果‘Sn_KPALVTR > 0’,W5500 在一定時間周期會自動傳輸 KA 包以檢查 TCP 的連接狀態(自動在線驗證)。如果‘Sn_KPALVTR = 0’,將不會啟動自動在線驗 證,主機可以通過 SEND_KEEP 配置命令發送 KA 包(手動在線驗證)。在‘Sn_KPALVTR
> 0’時,將會無視手動在線驗證。
例)Sn_KPALVTR = 10(會每 50 秒自動發送一次在線驗證包)
5 電氣規範
5.1 絕對最大額定值
表格 19 絕對最大額定值
*備註:設備加載超過‘絕對最大額定值’時,可能造成永久性損壞。
5.2 絕對最大額定值 (電氣靈敏度)
靜電釋放
表格 20 ESD
靜態鎖定
表格 21 靜態鎖定
5.3 直流特性
表格 22 直流特性
5.4 功耗
(測試環境: VDD=3.3V, AVDD=3.3V, Ta = 25°C)
表格 23 功耗
5.5 交流特性
5.5.1 複位時鐘
圖 22 複位時鐘
表格 24 複位時鐘
5.5.2 喚醒時間
整流器的喚醒時間為:10us
5.5.3 晶體特性
表格 25 晶體特性
5.5.4 SPI 時鐘
圖 23 SPI 時鐘
表格 26 SPI 時鐘
4 理論值速度
即使理論設定值速率為 80MHz,但是高速信號在受電磁串擾和長信號線的影響下可能會失真。目前實測具
有穩定波形的速率,至少能夠保證為 33.3MHz.
詳情參考 SPI 應用筆記,裡面展示了 WIZnet 的測試環境及結果。
5.5.5 變壓器特性
表格 27 變壓器特性
圖 24 變壓器類型
5.5.6 極性變換 MDIX
W5500 不支持自動極性變換功能。 因此,用戶需要使用直連線與交換機或路由器連接,使用交叉線與終端設備(如服務器,工作站 或其他 W5500)相連。 然而,用戶可以使用任何一種類型的網線與具有自動極性變換的其他設備相連。對應接口會自動 糾正不正確的布線。
6 封裝描述
圖 25 封裝描述
注意:1. 以上尺寸不包括模具突出部分;
2. ( )代表僅供參考;
3. [ ]基於組裝質量
4. 單位:mm
感謝閱讀!
W5500相關文章參考:
高性能以太網芯片W5500 用戶手冊 V1.0(一)
高性能以太網芯片W5500 用戶手冊 V1.0(二)
更多信息與我們交流:
WIZnet郵箱:http://www.wiznet.co.kr
WIZnet官網:http://www.wiznet.co.kr
WIZnet官方微博:http://e.weibo.com/wiznet2012