神秘阿当 神秘阿当
关注数: 6 粉丝数: 42 发帖数: 166 关注贴吧数: 22
【经验分享】终于搞定了,enc28j60真费劲…… 两天两夜无法入眠的严重强迫症患者表示,大家还是W5100吧,易用很多。 ENC28上JCW的ethercard库好是好,但是还是有些小问题害我走了点弯路。这里简单写写,方便后来的朋友。 目标服务器端口port指定: 自制的综合环境监测用了NAS做服务器,为了避免跟NAS的管理界面冲突选用了81端口。 国内基本所有的enc28教程都是使用yeelink之类封好的sdk,不涉及改变端口。其实ethercard是支持端口指定的,也很简单:ether.hisport就可以了。多数教程都是拿路由端或者唯一终端来举例子的,所以那个hisport跟这个还是有些区别的。 DNS的dnslookup解析失败: ethercard的dnslookup经常失败,有人就把dnslookup放到loop里或者干脆手写,很不方便效率也低。我去JCW的论坛里扫了一圈,12年的时候JCW的一篇更新说明里提到了ether.dnslookup(website, true)的用法。国内的教程我也没找到true的范例。这里为true表明是使用DNSRAM,如果你的dnslookup经常超时,请尝试加上这个true。 Stash无法清空: 在我两天两夜无限多次的尝试中发现Stash可能存在一些莫名的bug,才疏学浅就不鼓捣库了。Bug的来源基本上有个思路,就是尽量不要stash.save()。JCW在另外一个更新说明里提到了在ether.tcpSend();以后会清空stash,很遗憾,我的没有。所以在ENC28 仅有分给stash的3.5K空间被占满以后,再也写不进去一个字节了。 CS针脚指定: 8,11,12 ,13!我大强迫症患者群hold不住了!必须CS改为10。这里lucadentella的范例都很好: if (!ether.begin(sizeof Ethernet::buffer, mymac, 10)) Serial.println("Failed to access Ethernet controller"); 不需要刻意去指定针脚了,不用飞来飞去的走线了。目前我ENC28J60端的针脚使用情况如下: ENC26J60: 10, 11, 12, 13, RST。 nRF24L01: 2, 4, 5, 7, 8, 9, RST。 电源RAW, GND。 nRF24这么用是因为我另外一块板子焊接洞洞板的时候为了避免飞线,就近接针脚所以改了库文件,这个懒得分开改库了。 大概就这些,想到了再补充。
1 下一页