- W5500簡介
- 芯片特點
- 引腳說明
- 相關寄存器相關程序測試結果圖總結
W5500簡介本次寫一篇相關驅動W5500模組的文章,W5500 芯片是一種采用全硬件 TCP/IP 協議棧的嵌入式以太網控制器,它能使嵌入式系統(tǒng)通過 SPI(串行外設接口)接口輕松地連接到網絡。此次準備寫一下51驅動W5500作為客戶端的相關說明。下面我們將看到更多關于W5500模塊的說明以及如果使用它,我們也準備了相關的代碼以供測試使用。 點擊圖片購買 芯片特點①支持硬件 TCP/IP 協議:TCP、UDP、ICMP、IGMP、IPv4、ARP、IGMP、PPPoE 和以太網 ②支持 8 個獨立的端口(sockets) ③極小巧的 LQFP48 無鉛封裝 ④提供休眠模式 ⑤提供網絡喚醒 ⑥支持高速 SPI 總線(SPI 模式 0,3) ⑦內部 32K 字節(jié)存儲器作 TX/RX 緩存 ⑧內嵌 10/100Mbps 以太網物理層 ⑨支持自動協商(10/100-Based 全雙工/半雙工) ⑩不支持 IP 分段 注意:3.3V 工作電壓,I/O 口可承受 5V 電壓使用時一定要注意供電和I/O口的電壓不小心的話容易燒壞模塊。 引腳說明引腳說明 | 功能說明 | 3.3V | 3.3V 電源輸入引腳 | MISO | SPI 主機輸入從機輸出引腳 | MOSI | SPI 主機輸出從機輸入引腳 | SCS | SPI SLAVE 選擇引腳(低電平有效) | SCLK | SPI 主機輸出從機輸入引腳 | 5V | 5V 電源輸入引腳 | GND | 電源地引腳 | RST | W5500 硬件初始化引腳(低電平有效) | INT | W5500 中斷引腳(低電平有效) | NC | 懸空 |
原理圖可看:電路中加了LDO從而可以允許5V供電,注意供電3.3V不要接入5V會損壞模組 相關寄存器W5500具有一個公共寄存器和8個端口寄存器,TX和RX的緩沖區(qū)分配給8個端口寄存器,51單片機也可以通過查詢寄存器去讀取對應端口的狀態(tài)來檢測發(fā)送和接受數據。 還有一些需要用到的公共配置的寄存器去配置IP或者MAC地址還有子網掩碼等參數,8個端口寄存器可用于通信,使用端口號的值可以有SPI的BSB幀【4:0】進行選擇。 下圖為幾個重要配置參數寄存器可以分別配置網關,子網掩碼,MAC物理地址等信息。 這些配置信息在程序中完成相關配置放入數組中存儲用于取用。
相關程序驅動芯片:STC89C52 部分相關初始化函數可看下圖配置相關寄存器: 復位W5500并檢測以太網連接: /********************復位W5500并檢測W5500的連接狀態(tài)連接成功時候PHYCFGR寄存器LINK位硬件置1********************/void W5500_Hardware_Reset(void){W5500_RST=0;//復位引腳拉低Delay(200);W5500_RST=1;//復位引腳拉高Delay(200);while((Read_W5500_1Byte(PHYCFGR)&LINK)==0);//等待以太網連接完成
初始化相關代碼: 注意端口寄存器可配置TXBUFF,RXBUFF緩存空間大小 可參考手冊中的示例配置:  void W5500_Init(void){unsigned char i=0;Write_W5500_1Byte(MR, RST);//軟件復位W5500,置1有效,復位后自動清0Delay(10);//延時10ms,自己定義該函數//設置網關(Gateway)的IP地址,Gateway_IP為4字節(jié)unsigned char數組,自己定義//使用網關可以使通信突破子網的局限,通過網關可以訪問到其它子網或進入InternetWrite_W5500_nByte(GAR, Gateway_IP, 4);//設置子網掩碼(MASK)值,SUB_MASK為4字節(jié)unsigned char數組,自己定義//子網掩碼用于子網運算Write_W5500_nByte(SUBR,Sub_Mask,4);//設置物理地址,PHY_ADDR為6字節(jié)unsigned char數組,自己定義,用于唯一標識網絡設備的物理地址值//該地址值需要到IEEE申請,按照OUI的規(guī)定,前3個字節(jié)為廠商代碼,后三個字節(jié)為產品序號//如果自己定義物理地址,注意第一個字節(jié)必須為偶數Write_W5500_nByte(SHAR,Phy_Addr,6);//設置本機的IP地址,IP_ADDR為4字節(jié)unsigned char數組,自己定義//注意,網關IP必須與本機IP屬于同一個子網,否則本機將無法找到網關Write_W5500_nByte(SIPR,IP_Addr,4);//設置發(fā)送緩沖區(qū)和接收緩沖區(qū)的大小,參考W5500數據手冊for(i=0;i<8;i++){Write_W5500_SOCK_1Byte(i,Sn_RXBUF_SIZE, 0x02);//Socket Rx memory size=2kWrite_W5500_SOCK_1Byte(i,Sn_TXBUF_SIZE, 0x02);//Socket Tx mempry size=2k}//設置重試時間,默認為2000(200ms)//每一單位數值為100微秒,初始化時值設為2000(0x07D0),等于200毫秒Write_W5500_2Byte(RTR, 0x07d0);//設置重試次數,默認為8次//如果重發(fā)的次數超過設定值,則產生超時中斷(相關的端口中斷寄存器中的Sn_IR 超時位(TIMEOUT)置“1”)Write_W5500_1Byte(RCR,8);}
測試結果圖燒入51單片機后使用電腦打開TCP服務端口即可收到單片機作為客戶端發(fā)送到電腦服務端的相關數據。 ==注意:==電腦服務端配置需要先配置好和單片機中程序中設置的目的IP和端口號不然沒法通信傳輸數據。 總結W5500內嵌了硬件TCP/IP協議在使用過程中比較方便直接使用SPI進行通信即可驅動,免去軟件協議上的實現,對于單片機的驅動以太網通信是十分方便的,程序代碼比較長,需要相關程序代碼的可下方留言獲取,另外可提供STM32相關驅動代碼,本文對于W5500的使用總結到此結束,歡迎一鍵三連?。?!
|