繁体   English   中英

Arduino Mega + ENC28J60 以太网模块挂在 ether.begin 上

[英]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:如果有人问我以这种方式连接引脚:

  • 5V -> 5V
  • 地 -> 地
  • S0 -> 50
  • SCK -> 52
  • ST -> 51
  • CS -> 53

好的,我解决了。 我犯了一个错误:我没有将所有 GND 连接到 Arduino。 我没有注意到模块上有两个 GND 引脚。 我的模块根本没有足够的果汁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM