![](/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.