ENC28J60发送数据的问题
小弟最近在做一个项目,用STC单片机+ENC28J60网络芯片进行与PC的通信,采用uIP协议栈,现在通过串口助手发数据,然后网络调试助手可以收到数据,同样用网络调试助手发数据,串口助手也可以收到数据,但是有一个问题就是假如用串口调试助手不断地发送数据,发到42K字节后单片机会卡死,需要重启后才可以继续发送,同样网络调试助手给单片机发数据,发送大约6K的字节也就会卡死,也同样需要重启才可以继续传输,现在我找不出来问题所在了,脑袋有点大了,希望做过这个东西的你们可以提一些建议,本人不甚感激 单片机 ENC28J60 uIP 网络
[解决办法]
1. 首先ENC28J60内的缓冲是有限的,总共8KB左右的缓冲,如果数据传输过快,可能会造成ENC28J60缓冲错误,如果你的代码里没有对ENC28J60发生错误的情况进行处理,很可能造成ENC28J60无法从错误中恢复,造成ENC28J60死掉,从而网口无法收发数据。
2. 我认为,UIP结构性较差,如果移植不好的话很容易造成问题,所以也可能是51死掉了
3. 所以我觉得你应该先确认是哪里导致的错误发生,是51死掉了,还是ENC28J60挂掉了,这个应该很简单,可以让STC控制串口定时向外发字符或控制IO口输出方波证明51的死活。如果51死了,就找UIP和单片机程序的问题,如果是ENC28J60的问题,那就啃一下datasheet吧。