PS:KEIL的工程文件我已经上传了,需要的自己下载了看看。
首先下载官方库文件,官方库的下载地址如下:
http://wizwiki.net/wiki/doku.php?id=products:w5500:driver
下载后,添加这几个文件到keil里面
第一步:在wizchap_conf.h中,修改芯片型号。初始默认的是W5100
第二步:有六个函数需要自己写一下。分别对应下图中的六个指针函数(当然,还有SPI和GPIO的初始化函数要自己写,这里就不贴了)
实现的代码如下:
void W5500_CrisEnter(void)
{
DISABLE_INT();
}
void W5500_CrisExit(void)
{
ENABLE_INT();
}
void W5500_CS_Select(void)
{
W5500_CS_0();
}
void W5500_CS_Deselect(void)
{
W5500_CS_1();
}
//SPI写一个字节
void bsp_SPI_WriteOneByte(u8 _ucByte)
{
while (SPI_I2S_GetFlagStatus(SPI_HARD, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI_HARD, _ucByte);
while (SPI_I2S_GetFlagStatus(SPI_HARD, SPI_I2S_FLAG_RXNE) == RESET);
SPI_I2S_ReceiveData(SPI_HARD);
}
//SPI读取一个字节
u8 bsp_SPI_ReadOneByte(void)
{
u8 read = 0;
while (SPI_I2S_GetFlagStatus(SPI_HARD, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI_HARD, 0);
while (SPI_I2S_GetFlagStatus(SPI_HARD, SPI_I2S_FLAG_RXNE) == RESET);
read = SPI_I2S_ReceiveData(SPI_HARD);
return read;
}
第三步:这六个函数写好后,需要通过W5500库函数自带的注册函数,来将我们自己写的函数和库函数对应起来。
函数代码如下所示:
第四步:设置W5500的IP地址、网关之类的参数。
这些信息在库函数中也有一个结构体对应:
这个结构体里面的信息要自己定义下,如下图所示:
第五步:写个函数检查是否连接正常,并且写网络参数到W5500芯片里面。如下图。
到了这里,W5500官方库的移植就都搞好了。然后来搞个TCP_SEVER的例程来发送数据试试。下面是代码截图:
然后main函数里面就像下面这样,初始化一下,然后就跳倒while里面。
这里我在试的时候有个情况,就是本来bsp_DetectPhylink()是在while外面的,但是我发现刚上电初始化的时候,硬件好像检测不到,要放到while里面多循环几次,才能正常的检测到硬件。
最后是测试结果: