guocai 发表于 2011-2-26 11:27:40

28J60接收中断的问题

开始正常收发UDP数据包,一段时间后就没接收。调试后发现28J60的中断不产生了,有谁试过这种情况吗

guocai 发表于 2011-2-28 09:27:43

ffxz大哥在吗~请帮帮忙
我读回28J60的状态
-- enc28j60 registers:
Filter: 0xbf
HwRevID: 0x06
Cntrl: ECON1 ECON2 ESTATEIREIE
       0x040x800x010x000xc8
MAC: MACON1 MACON3 MACON4
       0x0d   0x33   0x40
Rx   : ERXSTERXNDERXWRPT ERXRDPT ERXFCON EPKTCNT MAMXFL
       0x0000 0x19fe 0x0a500x0a500xbf    0x00    0x05ee
Tx   : ETXSTETXNDMACLCON1 MACLCON2 MAPHSUP
       0x19ff 0x1a33 0x0f   0x3f   0x10
现在是正常状态的。
到收不到数据后(不产生中断了) EIR寄存器就变成0x40   继续发数据变会成0x41   ESTAT 也为0x41

ffxz 发表于 2011-2-28 19:51:41

很有可能还是enc28j60与MCU之间的中断状态不一致,导致MCU认为中断已经清楚,而enc28j60外设认为中断状态还未清楚,从而导致问题的发生。

guocai 发表于 2011-2-28 20:06:27

这问题有什么方法测试一下呢。

didazhang 发表于 2011-3-20 15:11:57

回复【楼主位】guocai
-----------------------------------------------------------------------
能不嫩把你的测试程序发我一份,我邮箱452920081@qq.com。

zjwzcc 发表于 2011-6-17 15:20:39

准确来讲,应该是 stm32某一次未捕获到 28j60的中断管脚 的下降沿跳变,从而使 28j60发生堵包(数据包一直未被处理)


http://cache.amobbs.com/bbs_upload782111/files_41/ourdev_649733HDB3FN.jpg
上面为正常处理情况,下面为数据包接收不到的情况 (原文件名:未命名1.jpg)

sunnyhook 发表于 2011-6-17 15:53:43

回复【5楼】zjwzcc无尘之剑
-----------------------------------------------------------------------

难道还要定时去查询28J60的状态吗?有没有其它办法啊?

zjwzcc 发表于 2011-6-17 16:24:13

我现在解决的方法:
程序里面肯定有定时器的,在某个定时中断里面,如:
void TIM4_IRQHandler(void)
{
enc28j60WriteOp(ENC28J60_BIT_FIELD_CLR, EIE, EIE_INTIE);//暂时关闭网络芯片全局中断

......
//定时中断处理

enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, EIE, EIE_INTIE|EIE_PKTIE);//继续开启网络芯片接收中断

}

这样可以保证上面说的第二种情况发生时,通过关闭网络中断 拉高 电平,使cpu重新可以判断外部中断
页: [1]
查看完整版本: 28J60接收中断的问题