簡體   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