方案簡介
W5500集成了TCP/IP協議棧,10M/100M以太網數據鏈路層(MAC)及物理層(PHY),用戶使用單芯片就能夠在應用中拓展網絡連接。久經市場考驗的WIZnet全硬件TCP/IP協議棧支持TCP,UDP,IPv4,ICMP,ARP,IGMP和PPPoE協議。用戶使用W5500時只需簡單的Socket編程就能實現以太網應用。與傳統軟件協議棧不同,W5500內嵌的8個獨立硬件 Socket可進行8路獨立通信,相互之間通信效率互不影響,可通過W5500片上32K字節的收/發緩存靈活定義每個Socket的大小。
W5500提供高速標準4線SPI(外設串行接口),速率可達到80MHz,更容易與外設MCU整合,從而能更好地實現高速網絡通訊。為減少系統能耗,W5500還提供了網絡喚醒模式(WOL)和掉電模式供用戶選擇使用。
方案主要特性:
支持10M/100M以太網自適應適配;
使用SPI接口,支持mode 0和mode 3;
SPI速率理論可以達到80MHz,實際可以提供到33.3MHz穩定傳輸;
支持8路Socket單獨通路,具有32K片上緩存。
2. 實物圖
3. W5500通過網線連接路由器,電腦也通過網線或Wifi連接到路由器(確保在同一網段)。
4. 參數配置
打開代碼,在main.c的Load_Net_Parameters配置自己的網絡參數,網絡工具端網絡參數需為本地電腦參數,以Demo為例:
Gateway_IP:網關IP //代碼默認 192.168.50.1
Sub_Mask:子網掩碼 //代碼默認 255.255.255.0
Phy_Addr:物理地址 //代碼默認 0c:29:ab:7c:00:01
IP_Addr:本機IP地址 //代碼默認 192.168.50.199
S0_Port:本機斷開0端口號 //代碼默認 5000
S0_DIP:目的IP //代碼默認 192.168.50.232
S0_DPort:目的端口 //代碼默認 6000
5. TCP客戶端測試
5.1 打開網絡測試工具,點擊創建服務器→設置本機端口→點擊確定→啟動服務器。
5.2 給開發板上電
5.3 可以看到W5500已經連接上TCP服務器
5.4 進行數據收發,發送數據,開發板可以收到,并且log打印出來,開發板按下k4,會向TCP服務器發送數據。
6. TCP服務器測試
6.1 修改網絡參數后(參考步驟4),下載到開發板,并且給開發板上電。
6.2 打開網絡工具,創建TCP客戶端,點擊創建連接→選擇類型為TCP,設置目標IP和端口號,點擊創建。
6.3 點擊連接,可以看到開發板log連接成功。
7. UDP測試
7.1 打開網絡工具,創建UDP:點擊創建連接→選擇類型為UDP,設置目標IP和端口號→點擊創建。
7.2 給開發板上電
7.3 收發數據測試
代碼適配流程
1. GPIO配置
W5500的RST和INIT引腳,RST是重啟的作用,低電平有效,時間大于500us,INIT是中斷腳,低電平有效,當W5500有事件發生時,會將INIT腳拉低,提示AC7840x處理事件。
2. SPI配置
2.1 SPI主設備配置
2.2 SPI讀寫時序
W5500的幀分為3段:地址段、控制段、數據段。地址段為W5500寄存器或TX/RX內存指定了16位的偏移地址??刂贫沃付说刂范卧O定的偏移區域的歸屬,讀/寫訪問模式以及SPI工作模式(可變長度模式/固定長度模式)。數據段可以設定為任意長度(N-字節,1≤N)或者是固定的長度:1字節,2字節或4字節,如果SPI工作模式設置為可變數據長度模式(VDM),SPI的SCSn信號需要由外部主機通過SPI幀控制。在可變數據長度模式下,SCSn控制SPI幀的開始和停止:SCSn信號拉低(高電平到低電平),即代表W5500的SPI幀開始(地址段);SCSn信號拉高(低電平到高電平),即代表W5500的SPI幀結束(數據段的隨機N字節數據結尾)。
SPI數據幀
W5500的SPI數據幀包括了16位地址段的偏移地址,8位控制段和N字節數據段,如下圖所示。8位控制段可以通過修改區域選擇位(BSB[4:0]),讀/寫訪問模式位(RWB)以及SPI工作模式位(OM[1:0])來重新定義。區域選擇位選擇了歸屬于偏移地址的區域。W5500支持數據的連續讀/寫,其流程為數據從(2/4/N字節連續數據的)偏移地址的基址開始傳輸,偏移地址會(自增尋址)加1傳輸接下來的數據。
地址段
地址段為W5500的寄存器或TX/RX緩存區指定了16位的偏移地址,這16位偏移地址的值來自于從最高標志位到最低標志位的順序傳輸。SPI數據幀的數據段(2/4/N字節)通過偏移地址自增(每傳輸1字節偏移地址加1)支持連續數據讀/寫。
控制段
控制段指定了地址段設定的偏移區域的歸屬,讀/寫訪問模式以及SPI工作模式。具體見W5500數據手冊。
向W5500指定寄存器地址發送一個字節數據
向W5500指定寄存器地址發送n字節數據
讀取W5500指定寄存器n字節數據
3. W5500 Socket配置
3.1 配置W5500 MAC地址、網關、IP等網絡參數
3.2 配置Socket的讀寫緩存大?。J為2K)
3.3 配置Socket收發超時時間和重傳次數
3.4 配置對端網絡IP、端口號等網絡參數
3.5 監聽或者連接服務器
4. 中斷處理流程
4.1 W5500會拉低INIT IO,拋出中斷時間,AC7840x獲取中斷后,讀取SIR寄存器,獲取Socket事件號。
4.2 再根據事件號讀取對應Sn_IR,獲取事件(如connect/receive/timeout)。
4.3 處理具體事件
4.4 中斷事件處理
更多關于AC7840x適配W5500技術咨詢,請聯系support@autochips.com。