OpenEdv-开源电子网

标题: 快速移植W5500,基于STM32F407 [打印本页]

作者: mftang2016    时间: 2017-4-15 21:46
标题: 快速移植W5500,基于STM32F407
本帖最后由 mftang2016 于 2017-4-15 23:11 编辑

说明:
本文主要介绍一种简单的W5500模块移植方案,仅需要简单地修改硬件接口,即可实现该驱动程序的移植。

硬件:
安富莱_STM32-V5开发板 和 有人物联网 USR-ES1 W5500模块
(, 下载次数: 50) (, 下载次数: 21)

在安富莱_STM32-V5开发板,上预留一个NRF24L01模块的接口,可使用其作为W5500模块的控制引脚
IO连接方式:

W5500                                  MCU
REST                                      PC4
CS                                          PA4
MOSI                                      PB5
MISO                                      PB4
SCK                                        PB3

具体连接实物图如下:
(, 下载次数: 27)


固件介绍
该驱动主要由四个文件组成,w5500.c, w5500.h, socket.c,   socket.h, 而移植该固件仅需修改w5500.c中IO相关配置即可。
代码见附件

在w5500.c文件中修改IO端口配置信息,该测试代码使用 安富莱_STM32-V5开发板,其配置信息如下:
(, 下载次数: 13)

测试
测试版作为客户端,PC上位机作为服务器使用
测试代码如下:
INT8U NetStateCheck(void)
{
      INT8U net_state,phy_cfgr;
      CommModule    *pCommCfg;
              
      pCommCfg = &st_AppCfg.CommCfg;
      //判断是否网线断线
      phy_cfgr = getPHYCFGR();
      if(!(phy_cfgr&0x1))
      {
                disconnect(0);
                net_state = CONNECT_NONE;
                return net_state;
      }

      net_state=getSn_SR(0);
      switch(net_state)/*获取socket0的状态*/
      {
              case SOCK_INIT:/*socket初始化完成*/
                              connect(0, pCommCfg->Rj45.server_ip,pCommCfg->Rj45.server_port);/*在TCP模式下向服务器发送连接请求*/
              break;

              case SOCK_ESTABLISHED:/*socket连接建立*/
                              if(getSn_IR(0) & Sn_IR_CON)         //如下代码跳入到该状态下,则网络连接成功
                              {
                                              setSn_IR(0, Sn_IR_CON);/*Sn_IR的第0位置1*/
                              }        
              break;

              case SOCK_CLOSE_WAIT:/*socket等待关闭状态*/
                              disconnect(0);
              break;

              case SOCK_CLOSED:/*socket关闭*/
                              if(pCommCfg->Rj45.local_port>=4000)
                              {
                                              pCommCfg->Rj45.local_port=3000;
                              }
                              socket(0,Sn_MR_TCP, pCommCfg->Rj45.local_port++,Sn_MR_ND);/*打开socket0的一个端口*/
              break;
              default:
              break;
      }

      if( net_state == SOCK_ESTABLISHED )
      {

      }
      else
      {

      }

      return net_state;        
}

测试结果: (, 下载次数: 12)





作者: mftang2016    时间: 2017-4-15 21:51
标题: 快速移植W5500,基于STM32F407
本帖最后由 mftang2016 于 2017-4-15 23:04 编辑

      同上
作者: mftang2016    时间: 2018-7-15 19:48
历史帖更新:

(, 下载次数: 13)


作者: 飘渺孤鸿影    时间: 2018-7-19 12:06
好东西啊,最近正在做这个。
作者: WSGustin    时间: 2018-10-11 09:42
如果有W5500问题没有解决,可以来找我们深圳炜世科技,提供专业的技术支持。
QQ:2429075983
邮箱gustin@wisioe.com
作者: opk666    时间: 2018-12-10 16:14
楼主头像违规了
作者: 轻唱碎流年    时间: 2019-2-13 09:54
这真是极好的
作者: 零一春风数声    时间: 2019-3-8 15:07
谢谢分享!
作者: lorabbitve    时间: 2019-3-21 21:50
多谢楼主!
作者: zuan    时间: 2019-3-29 10:19
多谢分享!
作者: 那凯    时间: 2019-5-8 22:48
移植起来
作者: stn1313528    时间: 2019-9-12 20:40
好资料,谢谢
作者: 宇智波白    时间: 2019-10-23 19:44
支持一下
作者: 柯先云    时间: 2019-12-12 16:42
楼主,为什么提示#include "Includes.h"这个头文件没找到啊
作者: pjzmj2012    时间: 2020-10-15 17:27
mark STM32F407 w5500
作者: xuejunwang    时间: 2021-3-20 11:16
谢谢分享!有功之人!
作者: ghwcxh    时间: 2021-11-25 18:52
柯先云 发表于 2019-12-12 16:42
楼主,为什么提示#include "Includes.h"这个头文件没找到啊

请问怎么解决,有没有使用过F407成功连接并受到信息的




欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) Powered by Discuz! X3.4