打印
[复制链接]
4289|39
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shen_hao|  楼主 | 2017-10-23 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做了几组实验,像我这样直接经过网线接到电脑上的,IP设置的是以太网地址,只是这样就没有默认网关,所以我按照自己理解,设置为如下

wiz_NetInfo gWIZNETINFO = { .mac = {0x0c, 0x29, 0xab,0x7c, 0x00, 0x01},                                                                                                               
                            .ip = {169, 254, 209, 123}, //是模块本身ip
                            .sn = {255,255,255,0},
                            .gw = {169, 254, 209, 1},
                            .dns = {0,0,0,0},
                            .dhcp = NETINFO_STATIC };  //静态 NETINFO_DHCP    NETINFO_STATIC
这样应该对吧???
我是参照《飞鸿踏雪》引用wiznet库函数,从stm32 改为M4程序,如下
spi配置:
        CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL2_SPI0SEL_PCLK0, MODULE_NoMsk);
        CLK_EnableModuleClock(SPI0_MODULE);
    SYS->GPB_MFPL &= ~(SYS_GPB_MFPL_PB2MFP_Msk | SYS_GPB_MFPL_PB3MFP_Msk | SYS_GPB_MFPL_PB4MFP_Msk | SYS_GPB_MFPL_PB5MFP_Msk);
    SYS->GPB_MFPL |= (SYS_GPB_MFPL_PB2MFP_SPI0_CLK | SYS_GPB_MFPL_PB3MFP_SPI0_MISO0 | SYS_GPB_MFPL_PB4MFP_SPI0_SS | SYS_GPB_MFPL_PB5MFP_SPI0_MOSI0);
          SYS_ResetModule(SPI0_RST);
    SPI_Open(SPI0, SPI_MASTER, SPI_MODE_0, 8, 25000000);
SPI_DisableAutoSS(SPI0);
//SPI_SetFIFO(SPI0, 3, 3);

spi读写函数:
void SPI_WriteByte(uint8_t TxData)
{
         
        SPI_SET_SS_LOW(SPI0);       
        while(SPI_GET_TX_FIFO_EMPTY_FLAG(SPI0)==0);
        SPI_WRITE_TX(SPI0,TxData);
        while(SPI_IS_BUSY(SPI0));
        SPI_READ_RX(SPI0);
                SPI_SET_SS_HIGH(SPI0);               
}
uint8_t SPI_ReadByte(void)
{       
        uint8_t ret;
        SPI_SET_SS_LOW(SPI0);       
       
        //while(SPI_GET_TX_FIFO_EMPTY_FLAG(SPI0)==0);       
        SPI_WRITE_TX(SPI0,0xff);
        //while((SPI1->SR&SPI_I2S_FLAG_RXNE)==0); //等待接收完一个byte《m4没有rx不为空这个标志/函数/宏》
        ret= (uint8_t)SPI_READ_RX(SPI0);
SPI_SET_SS_HIGH(SPI0);       
        return ret;                                                    
}

结果是:
MAC: 01:00:00:00:01:01

SIP: 1.1.0.0

GAR: 1.1.0.0

SUB: 1.1.0.0

DNS: 0.0.0.0

沙发
shen_hao|  楼主 | 2017-10-23 15:26 | 只看该作者
请又写过这个程序的大神帮帮忙,跪谢

使用特权

评论回复
板凳
shen_hao|  楼主 | 2017-10-23 15:28 | 只看该作者
从结果来说,应该是spi没通,但是想不通,毕竟可以改的地方我都试过了。
这是stm32 spi 配置程序:
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);
}

使用特权

评论回复
地板
wanduzi| | 2017-10-23 15:55 | 只看该作者
参数没有生效?

使用特权

评论回复
5
antusheng| | 2017-10-23 20:23 | 只看该作者
我觉得必须要有网关的。
另外在局域网搞实验最好用192.168.1.1这个IP段。

使用特权

评论回复
6
捉虫天师| | 2017-10-23 21:14 | 只看该作者
这个芯片官方提供的有说明和例子。

使用特权

评论回复
7
zhuomuniao110| | 2017-10-24 19:38 | 只看该作者
从屋里地址看,就是没有设置对。

使用特权

评论回复
8
座机呀| | 2017-10-24 21:03 | 只看该作者
假如你怀疑SPI有问题,就先把SPI调通啊?
官方库有几个地方要注册函数,你注册了吗?
你确定你的芯片型号,代码里填的是W5500吗?
你确定你选择的通讯方式是SPI不是BUS吗?

使用特权

评论回复
9
shen_hao|  楼主 | 2017-10-25 09:21 | 只看该作者

参数设置应该差不多

SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
        SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex;    //nuvoton默认的
        SPI_InitStruct.SPI_Mode = SPI_Mode_Master; //选择就是
        SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;//8bit,选择的对
        SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;//
        SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;//这两个不是太懂,应该是上升沿锁存,下降沿输出。和w5500 datasheet保持一致
        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);

使用特权

评论回复
10
shen_hao|  楼主 | 2017-10-25 09:22 | 只看该作者
zhuomuniao110 发表于 2017-10-24 19:38
从屋里地址看,就是没有设置对。

这个物理地址不是可以随便设吗?

我这个是参照模块示例程序

使用特权

评论回复
11
shen_hao|  楼主 | 2017-10-25 09:45 | 只看该作者
座机呀 发表于 2017-10-24 21:03
假如你怀疑SPI有问题,就先把SPI调通啊?
官方库有几个地方要注册函数,你注册了吗?
你确定你的芯片型号,代码 ...

库函数   
  .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

注册函数,因为是参照别人程序,所以该注册的,没少应该。
reg_wizchip_spi_cbfunc(SPI_ReadByte, SPI_WriteByte);        //注册读写函数
所以bus和spi怎么确定不太懂,另外您说的对,我去单独试试spi才是正事,之前做别的实验spi是没有问题,不过之前spi是硬件自动片选。

使用特权

评论回复
12
座机呀| | 2017-10-25 19:32 | 只看该作者
shen_hao 发表于 2017-10-25 09:45
库函数   
  .IF.BUS._read_byte   = wizchip_bus_readbyte,
      .IF.BUS._write_byte  = wizchip_bus ...

注册函数对不对,先单步仿真,看能不能到你的功能里面!
最好不要硬件自动片选,官方库他有NSS使能和失能的函数,填就是了.
物理地址要首字节偶数,
选择BUS还是SPI有个宏,
SPI你觉得可以,看过波形吗?
不知道你是用什么MCU,如果是新唐M0的,我用过NU029LAN和MINI58FDE都调通过用的也是官方库.
不要看着代码瞎想,怀疑哪里就去实践,这才是DEBUG的正确方法

使用特权

评论回复
13
jiekou001| | 2017-10-25 21:39 | 只看该作者
应该已经调试通了吧,这个芯片官方给了代码的。

使用特权

评论回复
14
jiekou001| | 2017-10-25 21:39 | 只看该作者
貌似好多有线的网络接口都用的这个芯片。

使用特权

评论回复
15
shen_hao|  楼主 | 2017-10-26 09:25 | 只看该作者
jiekou001 发表于 2017-10-25 21:39
应该已经调试通了吧,这个芯片官方给了代码的。

没有通,我快放弃了

使用特权

评论回复
16
gxs64| | 2017-10-26 09:38 | 只看该作者
w5500是作为服务端?

使用特权

评论回复
17
caoqing| | 2017-10-26 10:40 | 只看该作者
我也没调通

使用特权

评论回复
18
gxs64| | 2017-10-26 11:19 | 只看该作者
已上传,搜索《2.TCPS_W5500EVB作为TCP服务器.rar》

使用特权

评论回复
19
shen_hao|  楼主 | 2017-10-26 14:18 | 只看该作者
gxs64 发表于 2017-10-26 11:19
已上传,搜索《2.TCPS_W5500EVB作为TCP服务器.rar》

m4的吗?

使用特权

评论回复
20
shen_hao|  楼主 | 2017-10-26 14:19 | 只看该作者

我调通了,你是m4的吗????我上传文件《Template-TCP-spi-1.zip》

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

230

帖子

2

粉丝