![](/img/trans.png)
[英]arduino mega + ENC28J60 ethernet module direct connection to PC to receive/send UDP
[英]Arduino Mega + ENC28J60 ethernet module is hanging on ether.begin
我为我的 Arduino Mega 购买了一个以太网模块,但我无法启动它。 经过一些检查,我发现该芯片的库在调用ether.begin
挂起,我不知道为什么。
这是代码。 我正在使用库示例文件夹中修改过的“backSoon”,所以我只发布了setup()
函数(其余的都是无关紧要的,因为名义上的错误):
void setup(){
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(57600);
Serial.println("\n[backSoon]");
Serial.print("Slave=");
Serial.println(SS);
Serial.print("MOSI=");
Serial.println(MOSI);
Serial.print("SCK=");
Serial.println(SCK);
Serial.print("MISO=");
Serial.println(MISO);
Serial.print("LED=");
Serial.println(LED_BUILTIN);
// Change 'SS' to your Slave Select pin, if you arn't using the default pin
uint8_t status = ether.begin(sizeof Ethernet::buffer, mymac, SS);
Serial.print("Status: "); Serial.println(status);
Serial.flush();
if (status == 0) {
Serial.println( "Failed to access Ethernet controller");
digitalWrite(LED_BUILTIN, LOW);
while(true);
} else {
digitalWrite(LED_BUILTIN, HIGH);
}
#if STATIC
Serial.println("Setup static");
ether.staticSetup(myip, gwip);
#else
Serial.println("Trying DHCP");
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
#endif
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
}
有很多Serial
调用的代码在那里,因为我不确定我是否正确连接了以太网模块,所以我打印了库使用的所有引脚(我潜伏在库的源代码中)。
串行输出为:
[backSoon]
Slave=53
MOSI=51
SCK=52
MISO=50
LED=13
[backSoon]
Slave=53
MOSI=51
SCK=52
MISO=50
LED=13
(是的,它翻倍了,这也很奇怪)
正如标题所说,我很确定问题出在ether.begin(...)
调用中,因为打印后没有任何串行打印。
我担心我可能会烧毁模块,但首先我想听听我的问题是否还有其他可能的解释。
PS:如果有人问我以这种方式连接引脚:
好的,我解决了。 我犯了一个错误:我没有将所有 GND 连接到 Arduino。 我没有注意到模块上有两个 GND 引脚。 我的模块根本没有足够的果汁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.