说明
需要调整的内容为W5500.h中关于IP地址、端口号、子网掩码、网关等参数
W5500
#ifndef_W5500_H_
#define_W5500_H_
/****************** Parameter **********************/
//网关地址
#define GATEWAY_IP_0 125
#define GATEWAY_IP_1 217
#define GATEWAY_IP_2 54
#define GATEWAY_IP_3 254
#define SUB_MASK_0 255
#define SUB_MASK_1 255
#define SUB_MASK_2 255
#define SUB_MASK_3 0
#define PHY_ADDR_0 0x80
#define PHY_ADDR_1 0x9E
#define PHY_ADDR_2 0x01
#define PHY_ADDR_3 0x56
#define PHY_ADDR_4 0x37
#define PHY_ADDR_5 0xC6
//本机IP地址
#define IP_ADDR_0 125
#define IP_ADDR_1 217
#define IP_ADDR_2 54
#define IP_ADDR_3 55
//本机端口号
#define S0_PORT_0 0x13
#define S0_PORT_1 0x88
//UDP(广播)模式,目的主机IP地址
#define UDP_DIR_0 125
#define UDP_DIR_1 217
#define UDP_DIR_2 54
#define UDP_DIR_3 242
//UDP(广播)模式,目的主机端口号
#define UDP_DPORT_0 0x17
#define UDP_DPORT_1 0x75
//模式配置
#define S0_MODE UDP_MODE
/***************** Common Register *****************/
#define MR0x0000
#define RST0x80
#define WOL0x20
#define PB0x10
#define PPP0x08
#define FARP0x02
#define GAR0x0001
#define SUBR0x0005
#define SHAR0x0009
#define SIPR0x000f
#define INTLEVEL0x0013
#define IR0x0015
#define CONFLICT0x80
#define UNREACH0x40
#define PPPOE0x20
#define MP0x10
#define IMR0x0016
#define IM_IR70x80
#define IM_IR60x40
#define IM_IR50x20
#define IM_IR40x10
#define SIR0x0017
#define S7_INT0x80
#define S6_INT0x40
#define S5_INT0x20
#define S4_INT0x10
#define S3_INT0x08
#define S2_INT0x04
#define S1_INT0x02
#define S0_INT0x01
#define SIMR0x0018
#define S7_IMR0x80
#define S6_IMR0x40
#define S5_IMR0x20
#define S4_IMR0x10
#define S3_IMR0x08
#define S2_IMR0x04
#define S1_IMR0x02
#define S0_IMR0x01
#define RTR0x0019
#define RCR0x001b
#define PTIMER0x001c
#define PMAGIC0x001d
#define PHA0x001e
#define PSID0x0024
#define PMRU0x0026
#define UIPR0x0028
#define UPORT0x002c
#define PHYCFGR0x002e
#define RST_PHY0x80
#define OPMODE0x40
#define DPX0x04
#define SPD0x02
#define LINK0x01
#define VERR0x0039
/********************* Socket Register *******************/
#define Sn_MR0x0000
#define MULTI_MFEN0x80
#define BCASTB0x40
#defineND_MC_MMB0x20
#define UCASTB_MIP6B0x10
#define MR_CLOSE0x00
#define MR_TCP0x01
#define MR_UDP0x02
#define MR_MACRAW0x04
#define Sn_CR0x0001
#define OPEN0x01
#define LISTEN0x02
#define CONNECT0x04
#define DISCON0x08
#define CLOSE0x10
#define SEND0x20
#define SEND_MAC0x21
#define SEND_KEEP0x22
#define RECV0x40
#define Sn_IR0x0002
#define IR_SEND_OK0x10
#define IR_TIMEOUT0x08
#define IR_RECV0x04
#define IR_DISCON0x02
#define IR_CON0x01
#define Sn_SR0x0003
#define SOCK_CLOSED0x00
#define SOCK_INIT0x13
#define SOCK_LISTEN0x14
#define SOCK_ESTABLISHED0x17
#define SOCK_CLOSE_WAIT0x1c
#define SOCK_UDP0x22
#define SOCK_MACRAW0x02
#define SOCK_SYNSEND0x15
#define SOCK_SYNRECV0x16
#define SOCK_FIN_WAI0x18
#define SOCK_CLOSING0x1a
#define SOCK_TIME_WAIT0x1b
#define SOCK_LAST_ACK0x1d
#define Sn_PORT0x0004
#define Sn_DHAR 0x0006
#define Sn_DIPR0x000c
#define Sn_DPORTR0x0010
#define Sn_MSSR0x0012
#define Sn_TOS0x0015
#define Sn_TTL0x0016
#define Sn_RXBUF_SIZE0x001e
#define Sn_TXBUF_SIZE0x001f
#define Sn_TX_FSR0x0020
#define Sn_TX_RD0x0022
#define Sn_TX_WR0x0024
#define Sn_RX_RSR0x0026
#define Sn_RX_RD0x0028
#define Sn_RX_WR0x002a
#define Sn_IMR0x002c
#define IMR_SENDOK0x10
#define IMR_TIMEOUT0x08
#define IMR_RECV0x04
#define IMR_DISCON0x02
#define IMR_CON0x01
#define Sn_FRAG0x002d
#define Sn_KPALVTR0x002f
/*******************************************************************/
/************************ SPI Control Byte *************************/
/*******************************************************************/
/* Operation mode bits */
#define VDM0x00
#define FDM10x01
#defineFDM20x02
#define FDM40x03
/* Read_Write control bit */
#define RWB_READ0x00
#define RWB_WRITE0x04
/* Block select bits */
#define COMMON_R0x00
/* Socket 0 */
#define S0_REG0x08
#define S0_TX_BUF0x10
#define S0_RX_BUF0x18
/* Socket 1 */
#define S1_REG0x28
#define S1_TX_BUF0x30
#define S1_RX_BUF0x38
/* Socket 2 */
#define S2_REG0x48
#define S2_TX_BUF0x50
#define S2_RX_BUF0x58
/* Socket 3 */
#define S3_REG0x68
#define S3_TX_BUF0x70
#define S3_RX_BUF0x78
/* Socket 4 */
#define S4_REG0x88
#define S4_TX_BUF0x90
#define S4_RX_BUF0x98
/* Socket 5 */
#define S5_REG0xa8
#define S5_TX_BUF0xb0
#define S5_RX_BUF0xb8
/* Socket 6 */
#define S6_REG0xc8
#define S6_TX_BUF0xd0
#define S6_RX_BUF0xd8
/* Socket 7 */
#define S7_REG0xe8
#define S7_TX_BUF0xf0
#define S7_RX_BUF0xf8
#define TRUE0xff
#define FALSE0x00
#define S_RX_SIZE2048/*定义Socket接收缓冲区的大小,可以根据W5500_RMSR的设置修改 */
#define S_TX_SIZE2048 /*定义Socket发送缓冲区的大小,可以根据W5500_TMSR的设置修改 */
/***************----- W5500 GPIO定义 -----***************/
#define W5500_SCSGPIO_Pin_4//定义W5500的CS引脚
#define W5500_SCS_PORTGPIOA
#define W5500_RSTGPIO_Pin_0//定义W5500的RST引脚
#define W5500_RST_PORTGPIOB
#define W5500_INTGPIO_Pin_1//定义W5500的INT引脚
#define W5500_INT_PORTGPIOB
/***************----- 网络参数变量定义 -----***************/
extern unsigned char Gateway_IP[4];//网关IP地址
extern unsigned char Sub_Mask[4];//子网掩码
extern unsigned char Phy_Addr[6];//物理地址(MAC)
extern unsigned char IP_Addr[4];//本机IP地址
extern unsigned char S0_Port[2];//端口0的端口号(5000)
extern unsigned char S0_DIP[4];//端口0目的IP地址
extern unsigned char S0_DPort[2];//端口0目的端口号(6000)
extern unsigned char UDP_DIPR[4];//UDP(广播)模式,目的主机IP地址
extern unsigned char UDP_DPORT[2];//UDP(广播)模式,目的主机端口号
/***************----- 端口的运行模式 -----***************/
extern unsigned char S0_Mode;//端口0的运行模式,0:TCP服务器模式,1:TCP客户端模式,2:UDP(广播)模式
#define TCP_SERVER0x00//TCP服务器模式
#define TCP_CLIENT0x01//TCP客户端模式
#define UDP_MODE0x02//UDP(广播)模式
/***************----- 端口的运行状态 -----***************/
extern unsigned char S0_State;//端口0状态记录,1:端口完成初始化,2端口完成连接(可以正常传输数据)
#define S_INIT0x01//端口完成初始化
#define S_CONN0x02//端口完成连接,可以正常传输数据
/***************----- 端口收发数据的状态 -----***************/
extern unsigned char S0_Data;//端口0接收和发送数据的状态,1:端口接收到数据,2:端口发送数据完成
#define S_RECEIVE0x01//端口接收到一个数据包
#define S_TRANSMITOK0x02//端口发送一个数据包完成
/***************----- 端口数据缓冲区 -----***************/
extern unsigned char Rx_Buffer[2048];//端口接收数据缓冲区
extern unsigned char Tx_Buffer[2048];//端口发送数据缓冲区
extern unsigned char W5500_Interrupt;//W5500中断标志(0:无中断,1:有中断)
typedef unsigned char SOCKET;//自定义端口号数据类型
extern void Delay(unsigned int d);//延时函数(ms)
extern void W5500_GPIO_Configuration(void);//W5500 GPIO初始化配置
extern void W5500_NVIC_Configuration(void);//W5500 接收引脚中断优先级设置
extern void SPI_Configuration(void);//W5500 SPI初始化配置(STM32 SPI1)
extern void W5500_Hardware_Reset(void);//硬件复位W5500
extern void W5500_Init(void);//初始化W5500寄存器函数
extern unsigned char Detect_Gateway(void);//检查网关服务器
extern void Socket_Init(SOCKET s);//指定Socket(0~7)初始化
extern unsigned char Socket_Connect(SOCKET s);//设置指定Socket(0~7)为客户端与远程服务器连接
extern unsigned char Socket_Listen(SOCKET s);//设置指定Socket(0~7)作为服务器等待远程主机的连接
extern unsigned char Socket_UDP(SOCKET s);//设置指定Socket(0~7)为UDP模式
extern unsigned short Read_SOCK_Data_Buffer(SOCKET s, unsigned char *dat_ptr);//指定Socket(0~7)接收数据处理
extern void Write_SOCK_Data_Buffer(SOCKET s, unsigned char *dat_ptr, unsigned short size); //指定Socket(0~7)发送数据处理
extern void W5500_Interrupt_Process(void);//W5500中断处理程序框架
void NVIC_Configuration(void);
void RCC_Configuration(void);
void Timer2_Init_Config(void);
void SendData(unsigned char* data,int length);
void My_W5500_Init(void);
void W5500_Socket_Set(void);
void Process_Socket_Data(SOCKET s);
#endif
W5500.c
/***********************************************************