[51单片机]

以太网的问题

[复制链接]
楼主: 比神乐
手机看帖
扫描二维码
随时随地手机跟帖
比神乐|  楼主 | 2022-12-31 20:40 | 显示全部楼层
gxs64 发表于 2022-12-31 19:10
w5500的确很好用,我用来做数采,8ch,15khz/ch,不掉数

是好用,可我的电脑不争气,没有默认网关。这是怎么回事啊?

使用特权

评论回复
gxs64| | 2022-12-31 22:04 | 显示全部楼层
不知道你如何控制w5500


1796188414_副本.jpg
WIN10_20180712.jpg
STM32F103VCH6串口_20220105_副本.jpg

使用特权

评论回复
gxs64| | 2022-12-31 22:07 | 显示全部楼层
不知道你如何控制w5500的

TCPUDPDebug102_Setup.rar

1.77 MB

使用特权

评论回复
gxs64| | 2022-12-31 22:11 | 显示全部楼层
你不会没用单片机控制w5500吧?

使用特权

评论回复
xyz549040622| | 2023-1-1 08:11 | 显示全部楼层
比神乐 发表于 2022-12-31 15:53
我插上网线依然显示网线被拔出。我以前也做过这方面的实验,只不过是在PC机上,不是笔记本上。 ...

插上网线显示被拔出,说明你的以太网接口坏了,硬件都不连接,肯定ping不通的。

使用特权

评论回复
gxs64| | 2023-1-1 11:47 | 显示全部楼层
xyz549040622 发表于 2023-1-1 08:11
插上网线显示被拔出,说明你的以太网接口坏了,硬件都不连接,肯定ping不通的。 ...

估计他没有分清服务器端和客户端

使用特权

评论回复
比神乐|  楼主 | 2023-1-1 11:51 | 显示全部楼层
gxs64 发表于 2022-12-31 22:04
不知道你如何控制w5500的

谢谢!你发的第二张图看不清

使用特权

评论回复
比神乐|  楼主 | 2023-1-1 11:52 | 显示全部楼层
gxs64 发表于 2022-12-31 22:07
不知道你如何控制w5500的

谢谢

使用特权

评论回复
比神乐|  楼主 | 2023-1-1 11:53 | 显示全部楼层
gxs64 发表于 2022-12-31 22:11
你不会没用单片机控制w5500吧?

控制了。我买的网口模块,SPI接口的,可以打开连接,可是发送数据没有回应。
程序里收到数据原封不动的转发

使用特权

评论回复
比神乐|  楼主 | 2023-1-1 11:55 | 显示全部楼层
gxs64 发表于 2023-1-1 11:47
估计他没有分清服务器端和客户端

怎么分不清,我以前做过这方面的工作。只是电脑没有默认网关,这是我最头疼的。搞不清楚。

使用特权

评论回复
gxs64| | 2023-1-1 13:01 | 显示全部楼层
比神乐 发表于 2023-1-1 11:51
谢谢!你发的第二张图看不清

21ic问题
WIN10_20180712.jpg

使用特权

评论回复
评论
gxs64 2023-1-1 13:01 回复TA
图片被压缩了 
gxs64| | 2023-1-1 13:02 | 显示全部楼层
5285063b113f9116e7.png

使用特权

评论回复
gxs64| | 2023-1-1 13:05 | 显示全部楼层
void set_default(void)                                                                                                                        // ÉèÖÃĬÈÏMAC¡¢IP¡¢GW¡¢SUB¡¢DNS
{  
       
        uint8 mac[6]={0x00,0x08,0xdc,0x11,0x11,0x11};                //Íø¿ÚÎïÀíµØÖ·
  //uint8 lip[4]={192,168,1,112};
        uint8 lip[4]={192,168,222,23};                                                                        //stm32×÷Ϊ·þÎñÆ÷IPµØÖ·
          //--------20220411 gxs add IPµØÖ·¿ÉÑ¡-----------
        //uint8 lip[4]={192,168,222,temp_address1};                                                                                                                //ÉèÖÃеÄIPµØÖ·
                //----------------------------------------------
  uint8 sub[4]={255,255,255,0};                                                                                //stm32×÷Ϊ·þÎñÆ÷×ÓÍøÑÚÂë
  //uint8 gw[4]={192,168,1,1};
        uint8 gw[4]={192,168,222,254};                                                                        //stm32×÷Ϊ·þÎñÆ÷ĬÈÏÍø¹Ø
  //uint8 dns[4]={114,114,114,114};
        uint8 dns[4]={8,8,8,8};                          //DNS
       
          //--------20220411 gxs add IPµØÖ·¿ÉÑ¡-----------
                        alt_u16 temp_address;
                        alt_u16 temp_address0;
                        alt_u8 temp_address1;
                        alt_u8 temp_address2;
       
                        GPIO_InitTypeDef GPIO_InitStructure;
                        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);
                        //ʹÄÜPORTA,PORTCʱÖÓ
                        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9;                                                                         //Ñ¡ÔñÒª¿ØÖƵÄGPIOÒý½Å
                        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                                                                                                                //ÉèÖÃÒý½ÅËÙÂÊΪ50MHz
                        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                                                                                                                                                                //ÉèÖÃÒý½ÅģʽΪÉÏÀ­ÊäÈë
                        GPIO_Init(GPIOB, &GPIO_InitStructure);                                                                                                                                                                                        //µ÷Óÿ⺯Êý£¬³õʼ»¯GPIO
               
                //read PB6,PB7 PB9
                        temp_address = GPIO_ReadInputData(GPIOB);
                        temp_address0 = temp_address & 0x02C0;                //0x02C0 = 0000 0010 1100 0000
                        temp_address0 = temp_address0 >> 6;
                        temp_address1 = (alt_u8) temp_address0;                //ת»»Îª8bit
                        if(b_CheckBit(temp_address1, 3))
                                {
                                        b_SetBit(temp_address1,2);
                                        b_ClearBit(temp_address1,3);
                                }
                                else
                                {
                                        b_ClearBit(temp_address1,2);
                                        b_ClearBit(temp_address1,3);                       
                                }
                                temp_address1 = temp_address1 + 16;               
                                lip[3]=temp_address1;                                                                        //stm32×÷Ϊ·þÎñÆ÷еÄIPµØÖ·
        //----------------------------------------------

       
       
  memcpy(ConfigMsg.lip, lip, 4);
  memcpy(ConfigMsg.sub, sub, 4);
  memcpy(ConfigMsg.gw,  gw, 4);
  memcpy(ConfigMsg.mac, mac,6);
  memcpy(ConfigMsg.dns,dns,4);

  ConfigMsg.dhcp=0;
  ConfigMsg.debug=1;
  ConfigMsg.fw_len=0;
  
  ConfigMsg.state=NORMAL_STATE;
  ConfigMsg.sw_ver[0]=FW_VER_HIGH;
  ConfigMsg.sw_ver[1]=FW_VER_LOW;  
}

使用特权

评论回复
比神乐|  楼主 | 2023-1-2 11:56 | 显示全部楼层
gxs64 发表于 2023-1-1 13:05
void set_default(void)                                                                                                                        // ÉèÖÃĬÈÏMAC¡¢IP¡¢GW¡¢SUB¡¢DNS
{  
       

谢谢!我试试吧。不过还是担心没有默认网关是个问题

使用特权

评论回复
比神乐|  楼主 | 2023-1-2 15:16 | 显示全部楼层
不好使。
5.jpg
错误码:10060

使用特权

评论回复
gxs64| | 2023-1-3 16:29 | 显示全部楼层
估计你控制w5500失败

使用特权

评论回复
sagade| | 2023-1-3 20:29 | 显示全部楼层
ctlnetwork ( CN_GET_NETINFO, ( void* ) &rWIZNETINFO );
读取网络的信息对不对?示波器看下SPI信号对不对

使用特权

评论回复
比神乐|  楼主 | 2023-1-6 16:04 | 显示全部楼层
找到一个问题,一个IO口,其实就是RST不能正常输出高低电平。
现在插上网线,网线灯也亮了。可是发送数据收不到回复。
我调试了一下,发现以下这个函数过不去。
/*******************************************************************************
* 函数名  : W5500_Interrupt_Process
* 描述    : W5500中断处理程序框架
* 输入    : 无
* 输出    : 无
* 返回值  : 无
* 说明    : 无
*******************************************************************************/
void W5500_Interrupt_Process(void)
{
        unsigned char i,j;

IntDispose:

        i=Read_W5500_1Byte(SIR);//读取端口中断标志寄存器       
        if((i & S0_INT) == S0_INT)//Socket0事件处理
        {
                j=Read_W5500_SOCK_1Byte(0,Sn_IR);//读取Socket0中断标志寄存器
                Write_W5500_SOCK_1Byte(0,Sn_IR,j);
                if(j&IR_CON)//在TCP模式下,Socket0成功连接
                {
                        S0_State|=S_CONN;//网络连接状态0x02,端口完成连接,可以正常传输数据
                }
                if(j&IR_DISCON)//在TCP模式下Socket断开连接处理
                {
                        Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//关闭端口,等待重新打开连接
                        Socket_Init(0);                //指定Socket(0~7)初始化,初始化端口0
                        S0_State=0;//网络连接状态0x00,端口连接失败
                }
                if(j&IR_SEND_OK)//Socket0数据发送完成,可以再次启动S_tx_process()函数发送数据
                {
                        S0_Data|=S_TRANSMITOK;//端口发送一个数据包完成
                }
                if(j&IR_RECV)//Socket接收到数据,可以启动S_rx_process()函数
                {
                        S0_Data|=S_RECEIVE;//端口接收到一个数据包
                }
                if(j&IR_TIMEOUT)//Socket连接或数据传输超时处理
                {
                        Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);// 关闭端口,等待重新打开连接                        
                        S0_State=0;//网络连接状态0x00,端口连接失败
                }
        }

        if(Read_W5500_1Byte(SIR) != 0)
                goto IntDispose;
}
主程序大循环

while (1)
        {
                W5500_Socket_Set();//W5500端口初始化配置
               
                //W5500_Interrupt_Process();//W5500中断处理程序框架

                if((S0_Data & S_RECEIVE) == S_RECEIVE)//如果Socket0接收到数据
                {
                        S0_Data&=~S_RECEIVE;
                        Process_Socket_Data(0);//W5500接收并发送接收到的数据
                }
                else if(W5500_Send_Delay_Counter >= 3000)//定时发送字符串
                {
                        if(S0_State == (S_INIT|S_CONN))
                        {
                                S0_Data&=~S_TRANSMITOK;
                                memcpy(Tx_Buffer, "\r\nWelcome To ChuangWeiElec!\r\n", 27);
                                Write_SOCK_Data_Buffer(0, Tx_Buffer, 27);//指定Socket(0~7)发送数据处理,端口0发送27字节数据
                        }
                        W5500_Send_Delay_Counter=0;
                }
                W5500_Send_Delay_Counter++;
        }

我把那个函数注释掉也不行。
高手给指点指点,谢谢!

使用特权

评论回复
比神乐|  楼主 | 2023-1-6 16:50 | 显示全部楼层
我又下载了一个客户端程序,如下图:
1.jpg

显示当前没有连接对象。

使用特权

评论回复
比神乐|  楼主 | 2023-1-6 17:30 | 显示全部楼层
2.jpg
3.jpg DHCP到底开启还是没开启?我无语了。



使用特权

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

本版积分规则