enc28j60+uip奇怪的问题,特定情况下初始化很多次才成功。

2019-08-17 07:39发布

最近学习uip,mini板+enc28j60模块,enc28j60的驱动直接用的例程里的,参考例程移植了uip,加了几个tcp的测试app,都工作正常。之后又加了个简单的web服务器,在main()中加了web服务器的初始化函数simple_webserver_init(),它的内容就一句uip_listen(HTONS(80)),此时程序就不正常了,每次启动都卡在while(tapdev_init())里面,要初始化好几十次才成功。要是屏蔽掉simple_webserver_init()或者直接用uip_listen(HTONS(80)),每次初始化就一次成功。

更奇怪的是我后来又增加了一个udp的测试app,在main()中simple_webserver_init()后面加了一个udp_test_app_init(),此时反而初始化就一次成功了。

我就奇怪udp_test_app_init()  simple_webserver_init()这几个函数都是放在tapdev_init()后面的,为什么会影响到tapdev_init()的成功呢?请原子哥和各位高手帮忙分析下,谢谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
hugo01chen
2019-08-18 02:29
我也遇到初始化很多次才成功,这个次数不一定,有时候几百次,有时候2次就可以。底板加子卡的方式,子卡上的SPI的CS、SCK、MISO、MOSI的线长8cm~10cm左右,底板上的接口到MCU的线长14、17、18、10cm左右(依次对应CS、SCK、MISO、MOSI),示波器量测波形,从MCU出的信号,CS、 SCK、MOSI都蛮好的,但是从Slave出来的,MISO波形有点差,但是电平也还可以,就是上升沿有点大。
目前现象是写入6字节的MAC地址,再读出来时,读出的内容和写入的,不是都一样,2~3个位不一样。有时候读取的Device ID也不正确。
这个个问题1、是不是SPI通信问题?2、可能是ENC28J60的问题?

一周热门 更多>