搜索
bottom↓
回复: 11

奇怪了!ENC28J60为什么有时PING得通,有时PING不通!

[复制链接]

出0入0汤圆

发表于 2011-6-21 10:05:20 | 显示全部楼层 |阅读模式
为什么ENC28J60有时PING得通,有时PING不通?刚上电时PING得通,过段时间就PING不通了,要重启才能又PING通!
主程序如下:(是不是主程序的问题?)
while(1)
   { wdt();

     plen = enc28j60_packet_receive(BUFFER_SIZE, buffer);

        //USART_DMASendData(USART1,buf,plen);


        /*plen will ne unequal to zero if there is a valid packet (without crc error) */

        if(plen==0)
                {
            continue;
                }
        // arp is broadcast if unknown but a host may also
        // verify the mac address by sending it to
        // a unicast address.
        if(eth_type_is_arp_and_my_ip(buffer,plen))
                {
                        make_arp_answer_from_request(buffer);
                        //USART_DMASendText(USART1,"make_arp_answer_from_request\n");
            continue;
                }

        // check if ip packets are for us:
        if(eth_type_is_ip_and_my_ip(buffer,plen)==0)
                {
            continue;
                }

        
        if(buffer[IP_PROTO_P]==IP_PROTO_ICMP_V && buffer[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V)
                {
            // a ping packet, let's send pong       
                        make_echo_reply_from_request(buffer, plen);
                        //USART_DMASendText(USART1,"make_echo_reply_from_request\n");
                        continue;
                }
        if (buffer[IP_PROTO_P]==IP_PROTO_UDP_V&&buffer[UDP_DST_PORT_H_P]==0x17&&buffer[UDP_DST_PORT_L_P]==0x70)
                    { make_udp_reply_from_request(buffer,rdata,5,mydk);
                          
                        }
        //make_udp_reply_from_request(buffer,rdata,5,mydk);
   }

出0入0汤圆

发表于 2011-6-21 12:49:45 | 显示全部楼层
有可能是程序问题
也可能是硬件问题,ENC28J60发热比较厉害,时间长了就会出点小问题。

出0入0汤圆

 楼主| 发表于 2011-6-21 14:46:49 | 显示全部楼层
ENC28J60发热比较厉害,要怎么解决呢?

出0入0汤圆

发表于 2011-6-21 21:27:11 | 显示全部楼层
严重感冒~哈哈,路过帮顶

出0入0汤圆

发表于 2011-6-21 22:53:02 | 显示全部楼层
之前有讨论过,如果是中断驱动的方式,可能的原因是由于某次中断请求没有被响应,造成了数据阻塞。如果是查询的方式,那有可能是程序出错,篡改了某些寄存器的值,导致数据传输问题,定期重新初始化芯片就能解决了。

至于说发热的问题,一般是调整偏置电阻降低工作电流能起到一定的改善作用,一般2k的电阻换成2.7k的就差不多了。

出0入0汤圆

发表于 2011-6-21 23:12:18 | 显示全部楼层
芯片底部双面覆铜,再用十几个开窗过孔打通,热量就小了。SPI在收发的时候,禁止其他中断,能降低错误概率。

出0入0汤圆

 楼主| 发表于 2011-6-23 12:32:21 | 显示全部楼层
谢谢你们!

出0入30汤圆

发表于 2012-3-28 19:28:32 | 显示全部楼层
低速少量数据间隔传输。

出0入0汤圆

发表于 2012-10-26 11:50:12 | 显示全部楼层
我也遇到这种问题,请问解结了没有?怎么解结的?

出0入0汤圆

发表于 2013-7-19 23:40:13 | 显示全部楼层
我也是呀不知怎样解决

出0入0汤圆

发表于 2020-6-19 22:10:14 | 显示全部楼层
我也遇到了这个问题,上电工作几分钟就ping不通了,一定要重新上电才能ping通,几分钟后又不通了,摸了一下很烫,前几个月天气冷的时候好像就很好

出0入89汤圆

发表于 2020-6-19 22:53:59 来自手机 | 显示全部楼层
我认为是驱动写的问题
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 16:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表