嵌入式以太网社区

?找回密码
?立即注册
搜索
365bet官网足球官方开户网利用Python来控制STM32365bet官网足球官方开户网365bet官网足球官方开户网
STM32高速USB数据传输方案,支持多系统!STM32全速USB数据传输方案,支持多系统!Flash高速烧写方案STM32 HID IAP/Bootloader升级方案
查看: 58617|bet365体-在线体育投注_365体育投注地址_365体育投注登录: 208
打印 上一主题 下一主题

如何移植使用W5500官方提供的最新Socket库

? [复制链接]

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
跳转到指定楼层
楼主
发表于 2014-10-25 18:37:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
官方提供了W5500的最新驱动库,下载地址如下:
http://wizwiki.net/wiki/doku.php?id=products:w5500:driver
下面简单介绍下如何使用这套库
首先下载库源码,文件目录如下所示:

我们主要用到Ethernet文件夹下面的文件,将这些文件加入到自己的工程中,然后编译,若编译出现类似于如下错误
..\User\Ethernet\wizchip_conf.c(113): error:??#29: expected an expression
? ?? ???.id? ?? ?? ?? ?? ?? ?= _WIZCHIP_ID_,
..\User\Ethernet\wizchip_conf.c(114): error:??#29: expected an expression
? ?? ???.if_mode? ?? ?? ?? ? = _WIZCHIP_IO_MODE_,
..\User\Ethernet\wizchip_conf.c(115): error:??#29: expected an expression
? ?? ???.CRIS._enter? ?? ?? ?= wizchip_cris_enter,
..\User\Ethernet\wizchip_conf.c(116): error:??#29: expected an expression
? ?? ???.CRIS._exit? ?? ?? ? = wizchip_cris_exit,
..\User\Ethernet\wizchip_conf.c(117): error:??#29: expected an expression
? ?? ???.CS._select? ?? ?? ? = wizchip_cs_select,
..\User\Ethernet\wizchip_conf.c(118): error:??#29: expected an expression
? ?? ???.CS._deselect? ?? ???= wizchip_cs_deselect,
..\User\Ethernet\wizchip_conf.c(119): error:??#29: expected an expression
? ?? ???.IF.BUS._read_byte? ?= wizchip_bus_readbyte,
..\User\Ethernet\wizchip_conf.c(120): error:??#29: expected an expression
? ?? ???.IF.BUS._write_byte??= wizchip_bus_writebyte
..\User\Ethernet\wizchip_conf.c(123): warning:??#12-D: parsing restarts here after previous syntax error
? ?? ???};
..\User\Ethernet\wizchip_conf.c: 1 warning, 8 errors
则需要根据自己的编译器做下设置,keil MDK设置如下所示:

主要原因是Keil MDK默认设置不支持按照结构体名称初始化结构体的原因导致。

W5500和MCU是通过SPI接口通信的,库是利用如下结构体中的相关函数指针实现SPI通信和其他功能。
[C] 纯文本查看 复制代码
_WIZCHIP  WIZCHIP =
      {
      .id                  = _WIZCHIP_ID_,
      .if_mode             = _WIZCHIP_IO_MODE_,
      .CRIS._enter         = wizchip_cris_enter,
      .CRIS._exit          = wizchip_cris_exit,
      .CS._select          = wizchip_cs_select,
      .CS._deselect        = wizchip_cs_deselect,
      .IF.BUS._read_byte   = wizchip_bus_readbyte,
      .IF.BUS._write_byte  = wizchip_bus_writebyte
//    .IF.SPI._read_byte   = wizchip_spi_readbyte,
//    .IF.SPI._write_byte  = wizchip_spi_writebyte
      };


根据函数名字和库中的注释,我们这里也对要实现的函数做个简单的说明
wizchip_cris_enter :进入临界区的函数,可以不管
wizchip_cris_exit :退出临界区的函数,也可以不管
wizchip_cs_select :输出有效片选信号的函数,也就是控制CS输出低电平的函数,必须实现
wizchip_cs_deselect :控制CS输出高电平的函数,必须实现
wizchip_bus_readbyte :SPI总线读取一字节数据函数,必须实现
wizchip_bus_writebyte :SPI总线写一字节数据函数,必须实现

根据以上可知,只要实现了SPI的基本操作,移植基本完成,是不是很简单

下面我们就新建一个spi.c的文件来实现这几个函数,当然这些函数名字可以不和这个结构体里面的函数名字一样,到时候可以调用相关的函数注册下即可
[C] 纯文本查看 复制代码
/**
  ******************************************************************************
  * @file    spi.c
  * $Author: 飞鸿踏雪 $
  * $Revision: 17 $
  * $Date:: 2014-10-25 11:16:48 +0800 #$
  * @brief   SPI驱动函数实现.
  ******************************************************************************
  * @attention
  *
  *

? Copyright 2009-2012, EmbedNet
*
[url]http://www.embed-net.com[/url]
*
All Rights Reserved

* ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "main.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /** * @brief 使能SPI时钟 * @retval None */ static void SPI_RCC_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1,ENABLE); } /** * @brief 配置指定SPI的引脚 * @retval None */ static void SPI_GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStruct; //PA4->CS,PA5->SCK,PA6->MISO,PA7->MOSI GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStruct); //初始化片选输出引脚 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_SetBits(GPIOA,GPIO_Pin_4); } /** * @brief 根据外部SPI设备配置SPI相关参数 * @retval None */ void SPI_Configuration(void) { SPI_InitTypeDef SPI_InitStruct; SPI_RCC_Configuration(); SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex; SPI_InitStruct.SPI_Mode = SPI_Mode_Master; SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b; SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low; SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStruct.SPI_NSS = SPI_NSS_Soft; SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStruct.SPI_CRCPolynomial = 7; SPI_Init(SPI1,&SPI_InitStruct); SPI_GPIO_Configuration(); SPI_SSOutputCmd(SPI1, ENABLE); SPI_Cmd(SPI1, ENABLE); } /** * @brief 写1字节数据到SPI总线 * @param TxData 写到总线的数据 * @retval None */ void SPI_WriteByte(uint8_t TxData) { while((SPI1->SR&SPI_I2S_FLAG_TXE)==0); //等待发送区空 SPI1->DR=TxData; //发送一个byte while((SPI1->SR&SPI_I2S_FLAG_RXNE)==0); //等待接收完一个byte SPI1->DR; } /** * @brief 从SPI总线读取1字节数据 * @retval 读到的数据 */ uint8_t SPI_ReadByte(void) { while((SPI1->SR&SPI_I2S_FLAG_TXE)==0); //等待发送区空 SPI1->DR=0xFF; //发送一个空数据产生输入数据的时钟 while((SPI1->SR&SPI_I2S_FLAG_RXNE)==0); //等待接收完一个byte return SPI1->DR; } /** * @brief 进入临界区 * @retval None */ void SPI_CrisEnter(void) { __set_PRIMASK(1); } /** * @brief 退出临界区 * @retval None */ void SPI_CrisExit(void) { __set_PRIMASK(0); } /** * @brief 片选信号输出低电平 * @retval None */ void SPI_CS_Select(void) { GPIO_ResetBits(GPIOA,GPIO_Pin_4); } /** * @brief 片选信号输出高电平 * @retval None */ void SPI_CS_Deselect(void) { GPIO_SetBits(GPIOA,GPIO_Pin_4); } /*********************************END OF FILE**********************************/


到这里,移植基本上完成。
但是这些SPI的接口函数如何跟这套库衔接呢?不用怕,库提供有这样的函数来注册,只要在主函数中调用下就可以了,具体程序如下
[C] 纯文本查看 复制代码
	// First of all, Should register SPI callback functions implemented by user for accessing WIZCHIP 
	/* Critical section callback */
	reg_wizchip_cris_cbfunc(SPI_CrisEnter, SPI_CrisExit);	//注册临界区函数
	/* Chip selection call back */
#if   _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_
	reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect);//注册SPI片选信号函数
#elif _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_
	reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect);  // CS must be tried with LOW.
#else
   #if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SIP_) != _WIZCHIP_IO_MODE_SIP_
      #error "Unknown _WIZCHIP_IO_MODE_"
   #else
      reg_wizchip_cs_cbfunc(wizchip_select, wizchip_deselect);
   #endif
#endif
	/* SPI Read & Write callback function */
	reg_wizchip_spi_cbfunc(SPI_ReadByte, SPI_WriteByte);	//注册读写函数


到这里,移植工程基本完成,下面我们就将官方提供的一个loopback的测试程序移植到我们自己的工程中来,基本上也没做什么修改,下面是测试工程用到的几个测试函数
[C] 纯文本查看 复制代码
/**
  * @brief  Intialize the network information to be used in WIZCHIP
  * @retval None
  */
void network_init(void)
{
   uint8_t tmpstr[6];
	ctlnetwork(CN_SET_NETINFO, (void*)&gWIZNETINFO);
	ctlnetwork(CN_GET_NETINFO, (void*)&gWIZNETINFO);

	// Display Network Information
	ctlwizchip(CW_GET_ID,(void*)tmpstr);
	printf("\r\n=== %s NET CONF ===\r\n",(char*)tmpstr);
	printf("MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n",gWIZNETINFO.mac[0],gWIZNETINFO.mac[1],gWIZNETINFO.mac[2],
		  gWIZNETINFO.mac[3],gWIZNETINFO.mac[4],gWIZNETINFO.mac[5]);
	printf("SIP: %d.%d.%d.%d\r\n", gWIZNETINFO.ip[0],gWIZNETINFO.ip[1],gWIZNETINFO.ip[2],gWIZNETINFO.ip[3]);
	printf("GAR: %d.%d.%d.%d\r\n", gWIZNETINFO.gw[0],gWIZNETINFO.gw[1],gWIZNETINFO.gw[2],gWIZNETINFO.gw[3]);
	printf("SUB: %d.%d.%d.%d\r\n", gWIZNETINFO.sn[0],gWIZNETINFO.sn[1],gWIZNETINFO.sn[2],gWIZNETINFO.sn[3]);
	printf("DNS: %d.%d.%d.%d\r\n", gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]);
	printf("======================\r\n");
}

/**
  * @brief  Loopback Test Example Code using ioLibrary_BSD	
  * @retval None
  */
int32_t loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port)
{
   int32_t ret;
   uint16_t size = 0, sentsize=0;
   switch(getSn_SR(sn))
   {
      case SOCK_ESTABLISHED :
         if(getSn_IR(sn) & Sn_IR_CON)
         {
            printf("%d:Connected\r\n",sn);
            setSn_IR(sn,Sn_IR_CON);
         }
         if((size = getSn_RX_RSR(sn)) > 0)
         {
            if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE;
            ret = recv(sn,buf,size);
            if(ret <= 0) return ret;
            sentsize = 0;
            while(size != sentsize)
            {
               ret = send(sn,buf+sentsize,size-sentsize);
               if(ret < 0)
               {
                  close(sn);
                  return ret;
               }
               sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero.
            }
         }
         break;
      case SOCK_CLOSE_WAIT :
         printf("%d:CloseWait\r\n",sn);
         if((ret=disconnect(sn)) != SOCK_OK) return ret;
         printf("%d:Closed\r\n",sn);
         break;
      case SOCK_INIT :
    	  printf("%d:Listen, port [%d]\r\n",sn, port);
         if( (ret = listen(sn)) != SOCK_OK) return ret;
         break;
      case SOCK_CLOSED:
         printf("%d:LBTStart\r\n",sn);
         if((ret=socket(sn,Sn_MR_TCP,port,0x00)) != sn)
            return ret;
         printf("%d:Opened\r\n",sn);
         break;
      default:
         break;
   }
   return 1;
}

/**
  * @brief  Loopback Test Example Code using ioLibrary_BSD	
  * @retval None
  */
int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port)
{
   int32_t  ret;
   uint16_t size, sentsize;
   uint8_t  destip[4];
   uint16_t destport;
   //uint8_t  packinfo = 0;
   switch(getSn_SR(sn))
   {
      case SOCK_UDP :
         if((size = getSn_RX_RSR(sn)) > 0)
         {
            if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE;
            ret = recvfrom(sn,buf,size,destip,(uint16_t*)&destport);
            if(ret <= 0)
            {
               printf("%d: recvfrom error. %ld\r\n",sn,ret);
               return ret;
            }
            size = (uint16_t) ret;
            sentsize = 0;
            while(sentsize != size)
            {
               ret = sendto(sn,buf+sentsize,size-sentsize,destip,destport);
               if(ret < 0)
               {
                  printf("%d: sendto error. %ld\r\n",sn,ret);
                  return ret;
               }
               sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero.
            }
         }
         break;
      case SOCK_CLOSED:
         printf("%d:LBUStart\r\n",sn);
         if((ret=socket(sn,Sn_MR_UDP,port,0x00)) != sn)
            return ret;
         printf("%d:Opened, port [%d]\r\n",sn, port);
         break;
      default :
         break;
   }
   return 1;
}

/**
  * @brief  Loopback Test Example Code using ioLibrary_BSD	
  * @retval None
  */
void platform_init(void)
{
	SystemInit();//系统时钟初始化
	USART_Configuration();//串口1初始化
	printf("\x0c");printf("\x0c");//超级终端清屏
	printf("\033[1;40;32m");//设置超级终端背景为黑色,字符为绿色
	printf("\r\n*******************************************************************************");
	printf("\r\n************************ Copyright 2009-2014, EmbedNet ************************");
	printf("\r\n*************************** [url]http://www.embed-net.com[/url] **************************");
	printf("\r\n***************************** All Rights Reserved *****************************");
	printf("\r\n*******************************************************************************");
	printf("\r\n");
	//Config SPI
	SPI_Configuration();
	//延时初始化
	delay_init();
}


我们自己在工程中加了串口打印程序,程序运行后串口输出信息如下:


我们ping下程序里面的IP试试


能ping通,看来没什么大问题了

程序源码下载
STM32工程源码下载:
stm32_w5500_loopback.zip (776.65 KB, 下载次数: 2973)
w5500官方库下载:
iolibrary_bsd_ethernet_v103.zip (38.13 KB, 下载次数: 1325)
DNS和DHCP库下载:
iolibrary_bsd_internet_v111.zip (16.4 KB, 下载次数: 1175)
API说明文档下载:
w5500_socket_apis_v103.zip (1.28 MB, 下载次数: 2206)

STM32和W5500硬件连接只需要SPI的4根线就够了,也就是CS,CLK,MISO,MOSI,其他的可以不管。


人生到处知何似,应似飞鸿踏雪泥。

32

帖子

8

主题

431

金币

管理员

Rank: 9Rank: 9Rank: 9

积分
527
QQ
推荐
发表于 2014-11-11 15:54:06 | 只看该作者
justloong 发表于 2014-11-11 14:44
搞定了。是没设置..\..\Drivers 这个路径。
虽搞定了,但还是不明白,能否解释一下

程序包含最上层是不是Ethernet这个文件夹?这个文件夹在什么地方才能看见?显然是Drivers这个文件夹噻,所以你要把Drivers这个文件夹包含进去...

16

帖子

3

主题

64

金币

中级会员

Rank: 3Rank: 3

积分
217
推荐
发表于 2015-12-21 20:56:50 | 只看该作者
老是死在? ?? ???//连接服务器? ?? ???ret = connect(SOCK_TCPS,DstIP,9901);if(ret != SOCK_OK){
? ?? ?? ?? ?? ? printf("%d:Socket Connect Error\r\n",SOCK_TCPS);
? ?? ?? ?? ?? ? while(1);

这个我也经常遇到请问有解决的吗

31

帖子

0

主题

56

金币

注册会员

Rank: 2

积分
97
推荐
发表于 2015-8-18 17:54:39 | 只看该作者
要是早看到楼主的贴就好了,当时浪费了好几天弄这个

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
推荐
?楼主| 发表于 2016-7-21 09:53:32 | 只看该作者
zcllom 发表于 2016-7-20 23:15
_WIZCHIP??WIZCHIP =
? ?? ?{
? ?? ?.id? ?? ?? ?? ?? ?? ?= _WIZCHIP_ID_,

这个是在声明结构体变量的时候顺便给结构体里面的成员赋值,当然你在这里也可以不赋值,在后面的程序中再赋值,因为这个成员是存在的,所以调用它并不会报错,这个不是定义结构体,是定义结构体变量
人生到处知何似,应似飞鸿踏雪泥。

49

帖子

5

主题

155

金币

中级会员

Rank: 3Rank: 3

积分
310
推荐
发表于 2014-10-31 13:22:02 | 只看该作者
感谢分享? ?? ?? ?? ?? ?

2

帖子

0

主题

6

金币

新手上路

Rank: 1

积分
8
板凳
发表于 2014-11-3 09:52:40 | 只看该作者
赞,学习了!!

3

帖子

0

主题

27

金币

新手上路

Rank: 1

积分
30
地板
发表于 2014-11-8 16:20:20 | 只看该作者


如图所诉,MDK在编译链接的时候报错,说没有这样的文件或则路径,可是我明明设置了路径,而且是正确的,但就是通不过。

但如果我把include改成 #include "wizchip_conf.h" 这样就能通过了。有谁能解释下吗?

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
5#
?楼主| 发表于 2014-11-8 18:37:47 | 只看该作者
justloong 发表于 2014-11-8 16:20
如图所诉,MDK在编译链接的时候报错,说没有这样的文件或则路径,可是我明明设置了路径,而且是正确的 ...

你没设置..\.\Drivers这样的路径
人生到处知何似,应似飞鸿踏雪泥。

3

帖子

0

主题

27

金币

新手上路

Rank: 1

积分
30
6#
发表于 2014-11-11 14:41:06 | 只看该作者
飞鸿踏雪 发表于 2014-11-8 18:37
你没设置..\.\Drivers这样的路径

我设置了啊,截图中有。
还是说我设置错了?
请问该如何设置

3

帖子

0

主题

27

金币

新手上路

Rank: 1

积分
30
7#
发表于 2014-11-11 14:44:38 | 只看该作者
飞鸿踏雪 发表于 2014-11-8 18:37
你没设置..\.\Drivers这样的路径

搞定了。是没设置..\..\Drivers 这个路径。
虽搞定了,但还是不明白,能否解释一下

2

帖子

0

主题

12

金币

新手上路

Rank: 1

积分
14
9#
发表于 2014-11-20 10:18:57 | 只看该作者
我的怎么总是ping不通,ip地址都是对的,spi也是对的,网线是好的?

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
10#
?楼主| 发表于 2014-11-20 17:25:43 | 只看该作者
haohaohao 发表于 2014-11-20 10:18
我的怎么总是ping不通,ip地址都是对的,spi也是对的,网线是好的?

SPI你是如何证明是好的?用逻辑分析仪或者示波器抓了数据,并且数据也是对的?
网线是怎么接的?直接接电脑,还是接路由器,还是接交换机?
IP地址,子网掩码等设置是否和你当前网络一致?
人生到处知何似,应似飞鸿踏雪泥。

2

帖子

0

主题

12

金币

新手上路

Rank: 1

积分
14
11#
发表于 2014-11-21 10:31:09 | 只看该作者
飞鸿踏雪 发表于 2014-11-20 17:25
SPI你是如何证明是好的?用逻辑分析仪或者示波器抓了数据,并且数据也是对的?
网线是怎么接的?直接接 ...

我现在用spi自己读写w5500是可以的,而且数据是正确的,我现在是问题解决了,我改的spi2,SPI_Init(SPI1, &SPI_InitStruct); 这个忘记改成spi2了,现在正在研究客服端断线重连,好像老是死在? ? ? ? //连接服务器? ? ? ? ret = connect(SOCK_TCPS,DstIP,9901);if(ret != SOCK_OK){
? ? ? ? ? ? ? ? printf("%d:Socket Connect Error\r\n",SOCK_TCPS);
? ? ? ? ? ? ? ? while(1);
? ? ? ? }? ? ? ?
。可能是刚接触,我在好好看看。

1

帖子

0

主题

9

金币

新手上路

Rank: 1

积分
10
12#
发表于 2014-11-21 11:11:23 | 只看该作者
haohaohao 发表于 2014-11-21 10:31
我现在用spi自己读写w5500是可以的,而且数据是正确的,我现在是问题解决了,我改的spi2,SPI_Init(SPI1, ...

我这边的也是这个情况 通过打印 好像 getSn_SR(sn) 变成closed 所以 connect 跳不出来 死在那里 了 ,不知道怎么回事

4

帖子

0

主题

66

金币

注册会员

Rank: 2

积分
76
13#
发表于 2014-11-25 22:56:59 | 只看该作者
不错,顶起!

3

帖子

0

主题

15

金币

新手上路

Rank: 1

积分
18
14#
发表于 2014-12-3 21:12:34 | 只看该作者
wizchip_bus_readbyte,wizchip_bus_writebyte是不是应该改为wizchip_spi_readbyte,wizchip_spi_writebyte,W5500只有SPI总线,而不是通过地址和数据总线传输数据

9

帖子

0

主题

24

金币

新手上路

Rank: 1

积分
43
15#
发表于 2014-12-3 21:27:45 | 只看该作者
楼主你好,W5500的复位引脚是不是可以不用IO口控制,直接接电源还是通过电容接电源呢

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
16#
?楼主| 发表于 2014-12-3 21:34:01 | 只看该作者
llyzl0 发表于 2014-12-3 21:12
wizchip_bus_readbyte,wizchip_bus_writebyte是不是应该改为wizchip_spi_readbyte,wizchip_spi_writebyte ...

你不要被
[C] 纯文本查看 复制代码
_WIZCHIP  WIZCHIP =
      {
      .id                  = _WIZCHIP_ID_,
      .if_mode             = _WIZCHIP_IO_MODE_,
      .CRIS._enter         = wizchip_cris_enter,
      .CRIS._exit          = wizchip_cris_exit,
      .CS._select          = wizchip_cs_select,
      .CS._deselect        = wizchip_cs_deselect,
      .IF.BUS._read_byte   = wizchip_bus_readbyte,
      .IF.BUS._write_byte  = wizchip_bus_writebyte
//    .IF.SPI._read_byte   = wizchip_spi_readbyte,
//    .IF.SPI._write_byte  = wizchip_spi_writebyte
      };

这段代码迷惑,这段代码保留BUS的两个函数实际上是为了让程序不出错而这样初始化设置的,SPI的两个函数是有被赋值的,你可以跟进reg_wizchip_spi_cbfunc函数,代码如下:
[C] 纯文本查看 复制代码
void reg_wizchip_spi_cbfunc(uint8_t (*spi_rb)(void), void (*spi_wb)(uint8_t wb))
{
   while(!(WIZCHIP.if_mode & _WIZCHIP_IO_MODE_SPI_));
   
   if(!spi_rb || !spi_wb)
   {
      WIZCHIP.IF.SPI._read_byte   = wizchip_spi_readbyte;
      WIZCHIP.IF.SPI._write_byte  = wizchip_spi_writebyte;
   }
   else
   {
      WIZCHIP.IF.SPI._read_byte   = spi_rb;
      WIZCHIP.IF.SPI._write_byte  = spi_wb;
   }
}

这段代码实际上是注册的SPI的接口函数
还有个配置就是对WIZCHIP.if_mode的配置,你也可以跟进去看看,最终的定义是:
#define _WIZCHIP_IO_MODE_SPI_VDM_? ?? ?(_WIZCHIP_IO_MODE_SPI_ + 1) /**< SPI interface mode for variable length data*/

人生到处知何似,应似飞鸿踏雪泥。

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
17#
?楼主| 发表于 2014-12-3 21:34:56 | 只看该作者
lzy888 发表于 2014-12-3 21:27
楼主你好,W5500的复位引脚是不是可以不用IO口控制,直接接电源还是通过电容接电源呢

我调试的时候直接悬空的,用发命令的方式进行软件复位,没用硬件复位方式
人生到处知何似,应似飞鸿踏雪泥。

3

帖子

0

主题

15

金币

新手上路

Rank: 1

积分
18
18#
发表于 2014-12-6 16:04:22 | 只看该作者
飞鸿踏雪 发表于 2014-12-3 21:34
你不要被
[mw_shl_code=c,true]_WIZCHIP??WIZCHIP =
? ?? ?{

之前才看了两个头文件,c文件还没看,今天在wizchip_conf.c中看到WIZCHIP结构体中被定义的函数都被指向了,若自己没有在注册函数中指向函数指针的话,则WIZCHIP.IF.SPI._read_byte等函数被赋wizchip_spi_readbyte默认值

1

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
9
19#
发表于 2014-12-6 23:12:59 | 只看该作者
好东西,谢谢楼主分享

3

帖子

0

主题

15

金币

新手上路

Rank: 1

积分
18
20#
发表于 2014-12-8 19:15:17 | 只看该作者
本帖最后由 llyzl0 于 2014-12-8 19:20 编辑
飞鸿踏雪 发表于 2014-12-3 21:34
你不要被
[mw_shl_code=c,true]_WIZCHIP??WIZCHIP =
? ?? ?{

想问下楼主,我在用DSP实现网络通信时,SPI_CrisEnter和 SPI_CrisExit这两个临界区的函数需要用到吗?我看到嵌入式系统中才有这样的函数,如果不用临界区,会不会影响WIZNET芯片的使用?

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
21#
?楼主| 发表于 2014-12-8 21:06:31 | 只看该作者
llyzl0 发表于 2014-12-8 19:15
想问下楼主,我在用DSP实现网络通信时,SPI_CrisEnter和 SPI_CrisExit这两个临界区的函数需要用到吗?我 ...

可以不用的,应该没什么影响,最大的影响可能也只有对速度稍有影响
人生到处知何似,应似飞鸿踏雪泥。

2

帖子

0

主题

35

金币

新手上路

Rank: 1

积分
37
22#
发表于 2015-3-18 10:28:41 | 只看该作者
本帖最后由 DIIIIIII 于 2015-3-18 10:32 编辑

我的MDK4.7怎么没有C99?
已解决在misc controls上加--C99

2

帖子

0

主题

35

金币

新手上路

Rank: 1

积分
37
23#
发表于 2015-3-18 10:37:33 | 只看该作者
楼主,在官网上下的驱动有些文件的版本好像比这个托管的版本号高,我大致对比了一下,有些改动好像很大。我是初学者,具体的看不懂,楼主能顺便具体对比下吗?

3

帖子

0

主题

20

金币

新手上路

Rank: 1

积分
23
24#
发表于 2015-4-15 16:14:54 | 只看该作者
我用的keil MDK 4.72??在target选项中 找不到 c99 怎么办

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
25#
?楼主| 发表于 2015-4-15 19:41:22 | 只看该作者
jordan2005 发表于 2015-4-15 16:14
我用的keil MDK 4.72??在target选项中 找不到 c99 怎么办

换KEIL MDK5
人生到处知何似,应似飞鸿踏雪泥。

3

帖子

0

主题

20

金币

新手上路

Rank: 1

积分
23
26#
发表于 2015-4-16 10:43:47 | 只看该作者

找到办法了 在misc controls 中 加上“--C99” 即可编译成功

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
27#
?楼主| 发表于 2015-4-17 13:27:38 | 只看该作者
jordan2005 发表于 2015-4-16 10:43
找到办法了 在misc controls 中 加上“--C99” 即可编译成功

不错!我还没发现这样也可以
人生到处知何似,应似飞鸿踏雪泥。

2

帖子

1

主题

18

金币

新手上路

Rank: 1

积分
20
28#
发表于 2015-5-10 17:49:03 | 只看该作者
请教点问题,最近做毕设调W5500,读SHAR读出来的数跟写进去的不一样,麻烦指点一下这个是这么回事?

wiz_NetInfo gWIZNETINFO = { .mac = {0x00, 0x08, 0xdc,0x00, 0xab, 0xcd},
? ?? ?? ?? ?? ?? ?? ?? ?? ???.ip = {192, 168, 1, 125},
? ?? ?? ?? ?? ?? ?? ?? ?? ???.sn = {255,255,255,0},
? ?? ?? ?? ?? ?? ?? ?? ?? ???.gw = {192, 168, 1, 1},
? ?? ?? ?? ?? ?? ?? ?? ?? ???.dns = {0,0,0,0},
? ?? ?? ?? ?? ?? ?? ?? ?? ???.dhcp = NETINFO_STATIC };

读出来是这样的??
=== W5500 NET CONF ===
MAC: 00:0C:FE:00:FF:EF
SIP: 224.252.1.127
GAR: 224.252.1.1
SUB: 255.255.255.0
DNS: 0.0.0.0

用电脑可以ping通192.168.1.125

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
29#
?楼主| 发表于 2015-5-10 22:24:44 | 只看该作者
new_w5500 发表于 2015-5-10 17:49
请教点问题,最近做毕设调W5500,读SHAR读出来的数跟写进去的不一样,麻烦指点一下这个是这么回事?

wiz ...

读出的数据完全不对啊
人生到处知何似,应似飞鸿踏雪泥。

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
30#
?楼主| 发表于 2015-5-10 22:25:49 | 只看该作者
new_w5500 发表于 2015-5-10 17:49
请教点问题,最近做毕设调W5500,读SHAR读出来的数跟写进去的不一样,麻烦指点一下这个是这么回事?

wiz ...

你确认SPI配置是正确的?
人生到处知何似,应似飞鸿踏雪泥。

1

帖子

0

主题

12

金币

新手上路

Rank: 1

积分
13
31#
发表于 2015-6-17 17:52:32 | 只看该作者
学习当中,很值得借鉴

1

帖子

0

主题

12

金币

新手上路

Rank: 1

积分
13
32#
发表于 2015-7-9 22:09:23 | 只看该作者
楼主你好,我现正学习研究w5500的使用,过程中遇到了一个很纠结的问题:
官方给的soket.c中给的recv函数采用的while(1)阻塞接收数据的方式,但我的应用层设计不允许阻塞,我把while注释掉了。 测试:pc机网络调试助手为客户端。测试步骤: 1tcp连接成功??2数据收发正常??3调试助手断开本次连接? ?4pc机再次连接成功开始接收数据??。此时轮询非阻塞方式的recv??调试得到:在recv函数内的getSn_Rx_RSR 返回的的值特别大??接近65536。不知楼主有遇到??能指导指导?非常感谢

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
33#
?楼主| 发表于 2015-7-9 22:14:29 | 只看该作者
yuerbupashui 发表于 2015-7-9 22:09
楼主你好,我现正学习研究w5500的使用,过程中遇到了一个很纠结的问题:
官方给的soket.c中给的recv函数采 ...

我也改成过非阻塞方式,其实就是给一个超时时间,如果超过了这个时间还没正常连接,就返回上层代码一个错误代码,当然超时时间最好可以上层代码控制
人生到处知何似,应似飞鸿踏雪泥。

15

帖子

0

主题

15

金币

新手上路

Rank: 1

积分
34
34#
发表于 2015-7-14 22:09:14 | 只看该作者
感谢分享

4

帖子

0

主题

17

金币

新手上路

Rank: 1

积分
21
35#
发表于 2015-7-30 11:49:47 | 只看该作者
请问楼主有没有碰到连续收数据到800字节后会有1段时间接收数据不全,超过1024字节后又正常,然后2048字节后再抵达800字节又会重复

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
36#
?楼主| 发表于 2015-7-30 12:15:42 | 只看该作者
wjwrab0223 发表于 2015-7-30 11:49
请问楼主有没有碰到连续收数据到800字节后会有1段时间接收数据不全,超过1024字节后又正常,然后2048字节后 ...

没这样测试过...
人生到处知何似,应似飞鸿踏雪泥。

4

帖子

0

主题

17

金币

新手上路

Rank: 1

积分
21
37#
发表于 2015-7-30 12:51:09 | 只看该作者

有点奇怪了,每次都是很规律的800字节,然后接收只能收到第一个字节,后面几个都是FF,如果单个单个发,收到的是对的,感觉是SPI到那一段地址时不能连续读去几个字节。

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
38#
?楼主| 发表于 2015-7-30 14:59:55 | 只看该作者
wjwrab0223 发表于 2015-7-30 12:51
有点奇怪了,每次都是很规律的800字节,然后接收只能收到第一个字节,后面几个都是FF,如果单个单个发, ...

那你单独调试下SPI的驱动程序试试
人生到处知何似,应似飞鸿踏雪泥。

17

帖子

2

主题

398

金币

中级会员

Rank: 3Rank: 3

积分
415
39#
发表于 2015-8-4 23:45:15 | 只看该作者
楼主发的贴都是强贴,高

4

帖子

0

主题

17

金币

新手上路

Rank: 1

积分
21
40#
发表于 2015-8-5 09:31:05 | 只看该作者
飞鸿踏雪 发表于 2015-7-30 14:59
那你单独调试下SPI的驱动程序试试

不知道网友有没有遇到,分享下我折中的解决办法,芯片资料里也没注明,不知道是STM32和W5500不兼容还是别的原因。修改了读取缓存时的地址,强制将高的那几位置1就好了

4

帖子

0

主题

17

金币

新手上路

Rank: 1

积分
21
41#
发表于 2015-8-5 09:33:04 | 只看该作者
wjwrab0223 发表于 2015-8-5 09:31
不知道网友有没有遇到,分享下我折中的解决办法,芯片资料里也没注明,不知道是STM32和W5500不兼容还是别 ...

void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len)
{
? ?uint16_t i = 0;
? ?uint16_t j = 0;
? ?WIZCHIP_CRITICAL_ENTER();
? ?WIZCHIP.CS._select();

#if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_))

? ?#if??( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_ )
? ?? ?AddrSel |= (_W5500_SPI_READ_ | _W5500_SPI_VDM_OP_);
? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel& 0x00FF0000|0x00F80000) >> 16);??//强制置高位为1
? ? ? ? ? ? ? ? ? ? ? ? //WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16);
? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >>??8);
? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >>??0);
? ?? ?for(i = 0; i < len; i++)
? ?? ???pBuf = WIZCHIP.IF.SPI._read_byte();
? ?#elif( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_ )
? ?? ?AddrSel |= (_W5500_SPI_READ_ | _W5500_SPI_FDM_OP_LEN4_);
? ?? ?for(i = 0; i < len/4; i++, j)
? ?? ?{
? ?? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16);
? ?? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >>??8);
? ?? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >>??0);
? ?? ?? ?pBuf[i*4]? ?= WIZCHIP.IF.SPI._read_byte();
? ?? ?? ?pBuf[i*4+1] = WIZCHIP.IF.SPI._read_byte();
? ?? ?? ?pBuf[i*4+2] = WIZCHIP.IF.SPI._read_byte();? ?? ?? ?? ?
? ?? ?? ?pBuf[i*4+3] = WIZCHIP.IF.SPI._read_byte();? ?? ?? ?? ?
? ?? ?? ?AddrSel = WIZCHIP_OFFSET_INC(AddrSel,4);
? ?? ?}
? ?? ?len %= 4;? ?? ?// for the rest data
? ?? ?// M20131220 : remove for loop
? ?? ?i *= 4;? ?? ???
? ?? ?if(len >= 2)
? ?? ?{
? ?? ?? ?AddrSel -= 1;??// change _W5500_SPI_FDM_OP_LEN4_ to _W5500_SPI_FDM_OP_LEN2_

? ?? ? //for(j = 0; j < len/2 ; j++)
? ?? ?? ?{
? ?? ?? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16);
? ?? ?? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >>??8);
? ?? ?? ?? ?WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >>??0);
? ?? ?? ?? ?pBuf? ?= WIZCHIP.IF.SPI._read_byte();
? ?? ?? ?? ?pBuf[i+1] = WIZCHIP.IF.SPI._read_byte();
? ?? ?? ?? ?i += 2;
? ?? ?? ?? ?AddrSel = WIZCHIP_OFFSET_INC(AddrSel,2);
? ?? ?? ?}
? ?? ?}
? ?? ?len %= 2;
? ?? ?if(len)
? ?? ?{
? ?? ???AddrSel -= 1;??// change _W5500_SPI_FDM_OP_LEN2_ to _W5500_SPI_FDM_OP_LEN1_
? ?? ???WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16);
? ?? ???WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >>??8);
? ?? ???WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >>??0);
? ?? ???pBuf? ?= WIZCHIP.IF.SPI._read_byte();
? ?? ?}? ?? ?
? ?#else
? ?? ?#error "Unsupported _WIZCHIP_IO_MODE_SPI_ in W5500 !!!"
? ?#endif

#elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) )

? ?#if??(_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_)

? ?#elif(_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_)

? ?#else
? ?? ?#error "Unsupported _WIZCHIP_IO_MODE_BUS_ in W5500 !!!"
? ?#endif
#else
? ?#error "Unknown _WIZCHIP_IO_MODE_ in W5500. !!!!"
#endif

? ?WIZCHIP.CS._deselect();
? ?WIZCHIP_CRITICAL_EXIT();
}

48

帖子

7

主题

3

金币

注册会员

Rank: 2

积分
81
42#
发表于 2015-8-6 15:57:49 | 只看该作者
谢谢分享,研究一下

29

帖子

1

主题

11

金币

注册会员

Rank: 2

积分
65
43#
发表于 2015-8-10 20:39:09 | 只看该作者
谢谢分享,研究一下

13

帖子

0

主题

94

金币

新手上路

Rank: 1

积分
107
44#
发表于 2015-8-17 23:48:02 | 只看该作者
谢谢!特别实用!

13

帖子

0

主题

94

金币

新手上路

Rank: 1

积分
107
45#
发表于 2015-8-17 23:48:43 | 只看该作者
还差一点积分!下载不了!

22

帖子

1

主题

67

金币

注册会员

Rank: 2

积分
122
47#
发表于 2015-8-27 22:06:56 | 只看该作者
哈哈,谢谢版主分享、、、

19

帖子

0

主题

20

金币

注册会员

Rank: 2

积分
71
48#
发表于 2015-9-3 00:59:05 | 只看该作者
顶贴啊,顶起来

22

帖子

0

主题

39

金币

注册会员

Rank: 2

积分
79
49#
发表于 2015-9-11 08:32:01 | 只看该作者
好东西,下载下来研究一下

13

帖子

0

主题

145

金币

中级会员

Rank: 3Rank: 3

积分
294
50#
发表于 2015-10-14 17:21:22 | 只看该作者
非常好的资料,学习了

22

帖子

1

主题

67

金币

注册会员

Rank: 2

积分
122
51#
发表于 2015-11-10 09:21:41 | 只看该作者
楼主,可以讲一下w5500的中断么?对这个中断不太了解,但是想用,不太清楚这个。。

8

帖子

0

主题

9

金币

新手上路

Rank: 1

积分
29
52#
发表于 2015-11-20 22:22:05 | 只看该作者
good job!!!

16

帖子

0

主题

20

金币

注册会员

Rank: 2

积分
62
53#
发表于 2015-12-2 07:53:59 | 只看该作者
赚取金币,下载文件,3QQQQ

6

帖子

0

主题

11

金币

新手上路

Rank: 1

积分
29
54#
发表于 2015-12-2 15:59:36 | 只看该作者
刚刚准备学习W5500,先来取点经谢谢分享

59

帖子

15

主题

91

金币

中级会员

Rank: 3Rank: 3

积分
406
55#
发表于 2015-12-7 09:35:41 | 只看该作者
ENC28J60用过,W5500没用过 ,应该更好用,呵呵!

1

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
11
56#
发表于 2015-12-9 09:24:47 | 只看该作者
怎么不能下载呢

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
57#
?楼主| 发表于 2015-12-9 10:14:34 | 只看该作者
du3900 发表于 2015-12-9 09:24
怎么不能下载呢

直接点击就可以下载了
人生到处知何似,应似飞鸿踏雪泥。

4

帖子

0

主题

6

金币

新手上路

Rank: 1

积分
18
58#
发表于 2015-12-16 12:50:17 | 只看该作者
这段时间刚好要折腾W5500,可以参考一下,谢谢楼主

68

帖子

0

主题

56

金币

新手上路

Rank: 1

积分
250
59#
发表于 2015-12-18 11:16:38 | 只看该作者
非常感谢

16

帖子

3

主题

64

金币

中级会员

Rank: 3Rank: 3

积分
217
61#
发表于 2015-12-21 20:58:24 | 只看该作者
另外使用DHCP的时候经常卡住这边do{
? ? if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1){
? ?? ?Println("Unknown PHY Link stauts.\r\n");
? ? }
? ? ? ?
? ? ? ? Println("CW_GET_PHYLINK.\r\n");
? ? ? ? }while(tmp == PHY_LINK_OFF);

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
62#
?楼主| 发表于 2015-12-21 22:05:53 | 只看该作者
hydjmu 发表于 2015-12-21 20:58
另外使用DHCP的时候经常卡住这边do{
? ? if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1){
? ?? ?Pri ...

遇到这种情况,软件复位下5500试试
人生到处知何似,应似飞鸿踏雪泥。

1110

帖子

173

主题

14万

金币

超级版主

Rank: 8Rank: 8

积分
149607
QQ
63#
?楼主| 发表于 2015-12-21 22:06:08 | 只看该作者
hydjmu 发表于 2015-12-21 20:58
另外使用DHCP的时候经常卡住这边do{
? ? if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1){
? ?? ?Pri ...

遇到这种情况,软件复位下5500试试
人生到处知何似,应似飞鸿踏雪泥。

16

帖子

3

主题

64

金币

中级会员

Rank: 3Rank: 3

积分
217
64#
发表于 2015-12-21 22:16:52 | 只看该作者
飞鸿踏雪 发表于 2015-12-21 22:06
遇到这种情况,软件复位下5500试试

试过软件复位没有效果,确认网线是连接好的,就偶尔不行

16

帖子

3

主题

64

金币

中级会员

Rank: 3Rank: 3

积分
217
65#
发表于 2015-12-21 22:17:47 | 只看该作者
飞鸿踏雪 发表于 2015-12-21 22:06
遇到这种情况,软件复位下5500试试

试过软件复位没有效果,确认网线是连接好的,就偶尔不行


16

帖子

3

主题

64

金币

中级会员

Rank: 3Rank: 3

积分
217
66#
发表于 2015-12-21 22:18:58 | 只看该作者
飞鸿踏雪 发表于 2015-12-21 22:05
遇到这种情况,软件复位下5500试试


老是死在? ?? ???//连接服务器? ?? ???ret = connect(SOCK_TCPS,DstIP,9901);if(ret != SOCK_OK){
? ?? ?? ?? ?? ? printf("%d:Socket Connect Error\r\n",SOCK_TCPS);
? ?? ?? ?? ?? ? while(1);
这个怎么解决 主要是这个 有时候可以连有时候会卡住在这,确认连接的服务器是可以连接的

16

帖子

3

主题

64

金币

中级会员

Rank: 3Rank: 3

积分
217
67#
发表于 2015-12-21 22:20:03 | 只看该作者
飞鸿踏雪 发表于 2015-12-21 22:05
遇到这种情况,软件复位下5500试试


老是死在? ?? ???//连接服务器? ?? ???ret = connect(SOCK_TCPS,DstIP,9901);if(ret != SOCK_OK){
? ?? ?? ?? ?? ? printf("%d:Socket Connect Error\r\n",SOCK_TCPS);
? ?? ?? ?? ?? ? while(1);
这个怎么解决 主要是这个 有时候可以连有时候会卡住在这,确认连接的服务器是可以连接的

68

帖子

0

主题

56

金币

新手上路

Rank: 1

积分
250
68#
发表于 2015-12-24 09:45:08 | 只看该作者
天天登录,来挣个金币!!!!!!

68

帖子

0

主题

56

金币

新手上路

Rank: 1

积分
250
69#
发表于 2016-1-6 10:15:36 | 只看该作者
天天登录,来挣个金币!!!!!!!

68

帖子

0

主题

56

金币

新手上路

Rank: 1

积分
250
70#
发表于 2016-1-6 10:16:16 | 只看该作者
天天登录,来挣个金币!!!!!!

68

帖子

0

主题

56

金币

新手上路

Rank: 1

积分
250
71#
发表于 2016-1-8 12:44:31 | 只看该作者
天天登录,来挣个金币!!!!!!

68

帖子

0

主题

56

金币

新手上路

Rank: 1

积分
250
72#
发表于 2016-1-11 14:10:57 | 只看该作者
天天登录,来挣个金币!!!!!

3

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
25
73#
发表于 2016-1-16 17:53:43 | 只看该作者
正要学习,感学斑竹~~~~~~~~~~~~

3

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
25
74#
发表于 2016-1-16 17:54:26 | 只看该作者
bet365体-在线体育投注_365体育投注地址_365体育投注登录的时候响应好慢。。

22

帖子

0

主题

12

金币

注册会员

Rank: 2

积分
72
75#
发表于 2016-1-25 02:26:11 | 只看该作者
学习了,谢谢楼主

8

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
34
76#
发表于 2016-1-26 16:17:04 | 只看该作者
谢谢? ???学习了??嘻嘻

3

帖子

0

主题

20

金币

新手上路

Rank: 1

积分
29
77#
发表于 2016-2-3 10:59:05 | 只看该作者
感谢分享??

18

帖子

0

主题

5

金币

注册会员

Rank: 2

积分
60
78#
发表于 2016-2-3 15:00:17 | 只看该作者
好资料,学习中

21

帖子

4

主题

140

金币

版主

Rank: 7Rank: 7Rank: 7

积分
293
79#
发表于 2016-2-19 17:36:57 | 只看该作者
好东西,赞一个!

11

帖子

0

主题

2

金币

新手上路

Rank: 1

积分
25
80#
发表于 2016-2-24 15:02:37 | 只看该作者
W5500官方提供的最新Socket库

11

帖子

0

主题

33

金币

注册会员

Rank: 2

积分
66
81#
发表于 2016-3-9 02:59:42 | 只看该作者
感谢分享!!!

2

帖子

0

主题

31

金币

新手上路

Rank: 1

积分
37
82#
发表于 2016-3-25 14:14:51 | 只看该作者
学习了,楼主赞一个

2

帖子

0

主题

31

金币

新手上路

Rank: 1

积分
37
83#
发表于 2016-3-25 14:23:15 | 只看该作者
最近调试W5500也遇到设置进去的MAC地址等,读出来有部分正确,开始以为是没有配置crisenter和crisexit的原因,增加开关中断,发现仍然读出有误,修改SPI波特率,错误更多,由此可定位基本是SPI通信时序问题,查找最原子的SPI发送接收函数,发现是发送时,等待接收成功后,没有读取DR里的数据,增加空读DR数据,测试OK,去掉crisenter和crisexit,测试OK

4

帖子

0

主题

1

金币

新手上路

Rank: 1

积分
13
84#
发表于 2016-4-28 22:05:16 | 只看该作者

STM32学习中,先下载学习了

42

帖子

0

主题

32

金币

注册会员

Rank: 2

积分
144
85#
发表于 2016-4-28 22:54:28 | 只看该作者
非常感谢

8

帖子

0

主题

163

金币

注册会员

Rank: 2

积分
187
86#
发表于 2016-5-3 13:11:52 | 只看该作者
new_w5500 发表于 2015-5-10 17:49
请教点问题,最近做毕设调W5500,读SHAR读出来的数跟写进去的不一样,麻烦指点一下这个是这么回事?

wiz ...

不知楼主这个问题解决了么?怎么解决的!

8

帖子

2

主题

37

金币

注册会员

Rank: 2

积分
73
87#
发表于 2016-5-11 11:25:22 | 只看该作者
http://www.embed-net.com/thread-558-1-1.html 版主 你好,W5500 无法发送心跳包,是啥原因呢?

14

帖子

1

主题

355

金币

中级会员

Rank: 3Rank: 3

积分
406
88#
发表于 2016-5-14 08:37:49 | 只看该作者
好东西,学习了.谢谢.

2

帖子

0

主题

68

金币

注册会员

Rank: 2

积分
74
89#
发表于 2016-5-23 17:44:10 | 只看该作者
很好不错??基础差看不懂啊

5

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
23
90#
发表于 2016-5-23 17:49:12 | 只看该作者
这个必须收藏起来

1

帖子

0

主题

34

金币

新手上路

Rank: 1

积分
37
91#
发表于 2016-5-27 00:12:32 | 只看该作者
资料很有用,谢谢!

12

帖子

0

主题

48

金币

注册会员

Rank: 2

积分
84
92#
发表于 2016-6-13 13:47:40 | 只看该作者

好东西,学习了.谢谢.

10

帖子

0

主题

5

金币

新手上路

Rank: 1

积分
42
93#
发表于 2016-6-15 17:05:14 | 只看该作者
谢谢楼主,很好的资料

25

帖子

0

主题

39

金币

注册会员

Rank: 2

积分
106
94#
发表于 2016-6-17 13:40:20 | 只看该作者
感谢楼主分享! 学习一下

25

帖子

0

主题

39

金币

注册会员

Rank: 2

积分
106
95#
发表于 2016-6-22 18:24:32 | 只看该作者
感谢楼主分享! 学习一下

2

帖子

0

主题

6

金币

新手上路

Rank: 1

积分
12
96#
发表于 2016-6-28 22:57:35 | 只看该作者
222222222222222

4

帖子

1

主题

4

金币

新手上路

Rank: 1

积分
19
97#
发表于 2016-7-12 19:12:12 | 只看该作者
谢谢分享。。。。

4

帖子

1

主题

4

金币

新手上路

Rank: 1

积分
19
98#
发表于 2016-7-12 19:13:44 | 只看该作者
好东西,谢谢分享

3

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
13
99#
发表于 2016-7-13 13:53:58 | 只看该作者
版主真心不错??谢谢分享 努力学习之中

4

帖子

0

主题

10

金币

新手上路

Rank: 1

积分
22
100#
发表于 2016-7-19 09:37:08 | 只看该作者
感谢LZ,提供了这么好的例子来参考!在我的项目中刚好用到,而且用的非常好!
感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|嵌入式以太网社区 ( 渝ICP备14007427号 )?

GMT+8, 2019-11-6 12:34 , Processed in 0.250938 second(s), 33 queries .

Powered by Discuz! X3.2

? 2001-2013 Comsenz Inc.

快速bet365体-在线体育投注_365体育投注地址_365体育投注登录 返回顶部 返回列表