《STM32F103驱动W5500网络程序.docx》由会员分享,可在线阅读,更多相关《STM32F103驱动W5500网络程序.docx(18页珍藏版)》请在第壹文秘上搜索。
1、 返回值:无 说明:无ZvoidW5500_GPIO_Configuration(void|RCC-APB2ENR=1CRl&=OXFFOOFFFF;GPIOC-CR1.=0X003800;GPIOC-ODR=34;/PC4上拉,PC5输出海SPIlJnitO;Ex_NVIC_Config(GPIO_CAFTIR);下降沿触发MY.NVIC.Inlt(2fO,eXTI4JRQChanneU);抢占2,子优先级0,组2 的数名:Write_WS500_IByte 描述:通过SPIl向指定地址寄存器写1个字节数据 输入”eg:16位寄存器地址,dat:恃写入的数据 输出:无 返回值:无 说明:无v
2、oidWrite_W5500_lByte(ul6regj8dat)(W55OO_CS-IOW();员W55OO的SCS为低电平SPll_Send_ShOrt(reg);通过SPIl写16位寄存器地址SPlI_ReadWriteByte(FDMlIRWB_WRITE|C0MM0N_R);通过SPIl写限洌字节,1个字节数据长度,写数据,选杼通用寄存器SP1.ReadWriteByte网;写1个字节数据W5500_CS-High0;置W5500的SCS为向电平 函数名:Write_W5500_28yte 描述:通过SPIl向指定地址寄存器写2个字节数据 函数名:Write_W5SOO_SOCK_l
3、Byte 描述:通过SPIl向指定堀Il寄存器写1个字节数据 输入:$:那口号,降8:16位寄存器地址,dat:待写入的数据 输出:无 返回值:无 说明:无,*“*jadS*+u*m+j*d*4U*u*d*u/voidWrite_W5SOO_SOK_lByte(SOCKETs,16reg,u8dat)W5500_CS_1.ow();/)rfW5500的SCS为低电平SPIl_Send_ShOrt(reg);通过SPIl写16位寄存器地址SPlI一ReadWriteByte(FDMllRWB_WRITEI(Uox2O2xO8);通过SPIl写限制字节,1个字节数据长度,写数据,选择然口S的寄存器
4、SP1.ReadWriteBytadat);写1个字节数据W55M_CS_High();/i*iW55OO的SCS为高电平*ar*x*京*xat*“*,*:”*:* 函数名:Write_W5500_SOCK_2Byte 描述:通过SPIl向指定端口寄存器目2个字节数据 输入:s:端口号,reg:16位寄存零地址,dat:16位待写入的数据(2个字节) 输出:无 返回值:无 说明:无 寓a*拿*%*1*at:*a*/%*,ZvoidWrite_W5500_SOCK_2Byte(S0CKET$,ul6reg,ul6dat)(W55.CS,1.ow()iWSSOO的SCS为低电平SPI1.sen1.
5、ShOn(reg);通过SPIl写16位寄存器地址SPI1.ReadWriteByte(FDM21RWB_WRlTEl(S*0x20+0x08);通过SPIl写限制字节,2个字节数据长度,写数据,选择端口s的寄存SPIl_Send_Short(dat);/16位数据W55OO_CS_High0;置W55的SCS为麻电平SPll_Sen1.Short(reg);通过SPIl写16位寄存器地址i=$Pll_ReadWriteByte(FDMllRWB_READlCOMMoN_R);通过SPIl写R4制字节,1个字节数据长度,读数据,选杼通用寄存器U=Read_W5500_lByte(0x);/$P
6、lI_Sent1.Byte(OXo0);发送一个喳数据i=SPI1.ReadWriteByte(OXo0);被取1个字节数据W5500_CS_High();置WSSOO的SCS为高电平returni;返【可读取到的寄存器数据/*,*X*上*,* 函数名:Reat1.W5500_SoaCByte 描述:读W5500指定端11寄存甥的1个字节数据 输入:s:iffl口号,reg:16位寄存!地址 输出:无 返回值:读取到寄存器的1个字节数据 说明:无/u8Read_W5500_SOCK_lByte(SOCKETs,ul6reg)u8i;W5500_CS_1.ow();/FfWS500的SCS为低电
7、平SPll.Send-Short(reghitSPIl写16位寄存器地址i=SPIl_ReadWriteByte(FDMlRWB.READ($,0x20+0x08);通过SPIl写限制字节,1个字节数据长度,读数据,选择然口S的寄存器/i=SPIJ2S_ReceiveData(SPIl);/SP1.sent1.Byte(OXo0);发送一个哑数据i=SPI1.ReadWriteByte(OXOO);读取1个字节数据W5500_CS_High0;置WSSOO(f)SCS为高电平returni;返e1读取到的寄存器数则/*,*,*arx*a*;*函数名:Read_W5SOO_SOCK_2BYte描
8、述:读W5500指定端1:1寄存器的2个字节数据注目的主机端口号)off$et=Read_W5500_SOCK_2Byte(5,Sn_TX_WR);offsetl=jffset;OffSet&=(Sjx_3IZE-1);计算实际的物理地址W5500_CS_1.oW();置W55OO的SCS为低电平SP1.Sen1.ShOrtgffset);写16位地址SPl1.ReadWriteByte(VDMIRWB_WRITEMS*020+0xl0);“写和同字节,N个字节数据长叱写数据,选择端口S的寄存器if(offset4size)S_TX_SIZE)/如最大地址未超过W5S00发送级冲区寄存器的最大
9、地址for(i=0;isize;i+)循环U入size个字节数据(SPIlsReadWriteByte(,dat_ptr+);打人一个字节的数据)eke鼠如最大地址超过W55发送缓冲区寄存的最大地址(OffSet=SJX-SIZE-Offset;for(i=0;ioffset;i+)循环,。入前offset个字节数据(SPlI_ReadWriteByteedaJPtr+);写入一个字节的数据)W55OO_CS_High0;置W5S的SCS为高电平W55M_CS_1.ow();/jKtWSSOO的SCS为低电平SPIl_Send_ShOrt(OXO0);有16位地址SPIl_ReadWriteB
10、yte(VDMlRWB_WRITEl(S*0x20+0x10);写限制字节,N个字节数据长度,写数据,选择湘口s的寄存器for(;ivsize;i+)循环打入size-offset个字节数据(SP1.ReadWriteByte(dajptr+);写入个字节的数据)W5500_CS_High。;置WS500的SCS为高电平OffSeU+=ze;更新实际物理地址,即下次写待发送数据到发送数据畿冲区的起始地址Write_W5500_SOCK_2Bytc(s,Sn_TX_WR,offsetl);Write_W5SOO_SOCK_lByte(s,Sn_CR,SEND);发送自动发送吩咐 函数名:W55O
11、O_HardWare_Reset 描述:硬件班位W55OO 输入:无 输出:无 返同依:无 说明:W55OO的复位引脚保持低电平至少SOOUS以上,才能无用W55OOvoidW5S00-Hardware-Reset(void)W5500_RSTjW0;或位出脚拉低delay-ms(501;W5500_RSTJigh();狂位引脚拉高delay-ms(2);/While(Reae1.W55OO_lByte(PHYCFGR)&UNK)=0);等待以太网连接完成,函数名:W55,lnit 描述:初始化W5S00寄存器函数 输入:无 输出:无 返回俄:无 说明:在运用W5500之前.先对W5500初始
12、化voidWSSOOJnit(Void)(u8i=0;Write_WS500_lByte(MR.RST);软件史位WSSOOjtJ1疗效,更位后自动消0delay_ms(10);延时IOmS,El己定义该函数设置网关(Gateway)的IPJfeJizGatewayJP为4字节unsignedChar数知1.自己定义运用网关可以使通信突破子网的局限,通过M关可以访问到其它子网或进入InternetWrite_W5500_nByte(GAR,GatewayeIPr4);设置子网掩码(MASK)值,SUB-MASK为4字节unsignedchar数纲,自己定义returnTRUE;)while(l
13、); 函数Z:Socket-lnit 描述:指定SOCket(O7)初始化 输入:S:待初始化的端口 输出:无 返回值:无 说明:无/voidSocke1.lniKSOCKETS)设置分片长度.参考W5500数据手册,该位可以不修改Wnte_W5500_SOCK_2Byte(O,Sn_MSSR,1460);呆大分片字节数=1460(0x5b4)设置指定端口switch(三)(case0:设置端口0的端口号Write_W55M_SOCK_2Byte(0,Sn_PoRT,S0_Port(0*2S6*S0_Portl);break;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break; 说明:当本机SoCket匚作在服务器模式时,引用该程序,等等远程主机的连接 该程序只两用一次,就使W5S00设置为服务器模式ZunsignedcharSOCket.1.isten(SoCKET$)Wme_W55OO_SOCK_1Byte(Ssn_MR,MR_TCP);设置socket为TCP模式Write_W55OO_SoCK_1Byte(S,Sn_CRQPEN);打开Socketdelay-ms(5)il