Ethernet ENC28j60 github example - Error: enc28j60_init: wrong chip ID
Posted: Thu Jul 29, 2021 8:07 am
After running idf.py menuconfig and flashing the code, I am getting a “Wrong Chip ID” error. I explored the code and I think the problem seems to be occurring while reading the PHY register PHCON1 (ETH_PHY_IDR1_REG_ADDR) and PHCON2 (ETH_PHY_IDR1_REG_ADDR). My wiring is functioning properly but the issue is persistent.
As a check I tried printing out the id1.val and id2.val but both ended up being 0 (hence my assumption). Any help would be appreciated. Thanks
The pins set up in sdkconfig
CONFIG_EXAMPLE_ENC28J60_SPI_HOST=1
CONFIG_EXAMPLE_ENC28J60_SCLK_GPIO=21
CONFIG_EXAMPLE_ENC28J60_MOSI_GPIO=23
CONFIG_EXAMPLE_ENC28J60_MISO_GPIO=22
CONFIG_EXAMPLE_ENC28J60_CS_GPIO=25
CONFIG_EXAMPLE_ENC28J60_SPI_CLOCK_MHZ=10
CONFIG_EXAMPLE_ENC28J60_INT_GPIO=4
Here are the logs
Executing action: monitor
Running idf_monitor in directory c:\Projects\esp32-projects\enc28j60-demo
Executing "C:\Users\Keshav\.espressif\python_env\idf4.2_py3.7_env\Scripts\python.exe C:\esp32\esp-idf\tools/idf_monitor.py -p COM5 -b 115200 --toolchain-prefix xtensa-esp32-elf- c:\Projects\esp32-projects\enc28j60-demo\build\enc28j60.elf -m 'C:\Users\Keshav\.espressif\python_env\idf4.2_py3.7_env\Scripts\python.exe' 'C:\esp32\esp-idf\tools\idf.py' '-p' 'COM5'"...
--- WARNING: GDB cannot open serial ports accessed as COMx
--- Using \\.\COM5 instead...
--- idf_monitor on \\.\COM5 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:7096
load:0x40078000,len:13212
load:0x40080400,len:4568
0x40080400: _init at ??:?
entry 0x400806f4
I (28) boot: ESP-IDF v4.2-dirty 2nd stage bootloader
I (28) boot: compile time 22:43:36
I (29) boot: chip revision: 1
I (32) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (39) boot.esp32: SPI Speed : 40MHz
I (43) boot.esp32: SPI Mode : DIO
I (48) boot.esp32: SPI Flash Size : 2MB
I (52) boot: Enabling RNG early entropy source...
I (58) boot: Partition Table:
I (61) boot: ## Label Usage Type ST Offset Length
I (69) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (76) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (84) boot: 2 factory factory app 00 00 00010000 00100000
I (91) boot: End of partition table
I (95) boot_comm: chip revision: 1, min. application chip revision: 0
I (102) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x11274 ( 70260) map
I (138) esp_image: segment 1: paddr=0x0002129c vaddr=0x3ffb0000 size=0x021a4 ( 8612) load
I (142) esp_image: segment 2: paddr=0x00023448 vaddr=0x40080000 size=0x00404 ( 1028) load
0x40080000: _WindowOverflow4 at c:/esp32/esp-idf/components/freertos/xtensa/xtensa_vectors.S:1730
I (145) esp_image: segment 3: paddr=0x00023854 vaddr=0x40080404 size=0x0bc44 ( 48196) load
I (175) esp_image: segment 4: paddr=0x0002f4a0 vaddr=0x00000000 size=0x00b78 ( 2936)
I (176) esp_image: segment 5: paddr=0x00030020 vaddr=0x400d0020 size=0x31570 (202096) map
0x400d0020: _stext at ??:?
I (265) boot: Loaded app from partition at offset 0x10000
I (265) boot: Disabling RNG early entropy source...
I (265) cpu_start: Pro cpu up.
I (269) cpu_start: Application information:
I (274) cpu_start: Project name: enc28j60
I (279) cpu_start: App version: 1
I (283) cpu_start: Compile time: Jul 28 2021 20:37:02
I (289) cpu_start: ELF file SHA256: e3509b72c43cccfc...
I (295) cpu_start: ESP-IDF: v4.2-dirty
I (301) cpu_start: Starting app cpu, entry point is 0x4008192c
0x4008192c: call_start_cpu1 at c:/esp32/esp-idf/components/esp32/cpu_start.c:287
I (0) cpu_start: App cpu up.
I (311) heap_init: Initializing. RAM available for dynamic allocation:
I (318) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (324) heap_init: At 3FFB3928 len 0002C6D8 (177 KiB): DRAM
I (330) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (337) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (343) heap_init: At 4008C048 len 00013FB8 (79 KiB): IRAM
I (349) cpu_start: Pro cpu start user code
I (368) spi_flash: detected chip: generic
I (368) spi_flash: flash io: dio
W (368) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (379) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (6389) enc28j60: revision: 6
E (6399) enc28j60: enc28j60_init(270): wrong chip ID
E (6399) esp_eth: esp_eth_driver_install(199): init phy failed
I (6409) gpio: GPIO[4]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
ESP_ERROR_CHECK failed: esp_err_t 0xffffffff (ESP_FAIL) at 0x40084d38
0x40084d38: _esp_error_check_failed at c:/esp32/esp-idf/components/esp_common/src/esp_err.c:45
file: "../main/enc28j60_example_main.c" line 118
func: app_main
expression: esp_eth_driver_install(ð_config, ð_handle)
abort() was called at PC 0x40084d3b on core 0
0x40084d3b: _esp_error_check_failed at c:/esp32/esp-idf/components/esp_common/src/esp_err.c:46
Backtrace:0x400851ab:0x3ffb5640 0x40085849:0x3ffb5660 0x400892a6:0x3ffb5680 0x40084d3b:0x3ffb56f0 0x400d48d3:0x3ffb5710 0x400d31de:0x3ffb57e0 0x40085851:0x3ffb5810
0x400851ab: panic_abort at c:/esp32/esp-idf/components/esp_system/panic.c:330
0x40085849: esp_system_abort at c:/esp32/esp-idf/components/esp_system/system_api.c:106
0x400892a6: abort at c:/esp32/esp-idf/components/newlib/abort.c:46
0x40084d3b: _esp_error_check_failed at c:/esp32/esp-idf/components/esp_common/src/esp_err.c:46
0x400d48d3: app_main at c:\Projects\esp32-projects\enc28j60-demo\build/../main/enc28j60_example_main.c:118 (discriminator 1)
0x400d31de: main_task at c:/esp32/esp-idf/components/esp32/cpu_start.c:600 (discriminator 2)
0x40085851: vPortTaskWrapper at c:/esp32/esp-idf/components/freertos/xtensa/port.c:143
ELF file SHA256: e3509b72c43cccfc
Rebooting...
As a check I tried printing out the id1.val and id2.val but both ended up being 0 (hence my assumption). Any help would be appreciated. Thanks
The pins set up in sdkconfig
CONFIG_EXAMPLE_ENC28J60_SPI_HOST=1
CONFIG_EXAMPLE_ENC28J60_SCLK_GPIO=21
CONFIG_EXAMPLE_ENC28J60_MOSI_GPIO=23
CONFIG_EXAMPLE_ENC28J60_MISO_GPIO=22
CONFIG_EXAMPLE_ENC28J60_CS_GPIO=25
CONFIG_EXAMPLE_ENC28J60_SPI_CLOCK_MHZ=10
CONFIG_EXAMPLE_ENC28J60_INT_GPIO=4
Here are the logs
Executing action: monitor
Running idf_monitor in directory c:\Projects\esp32-projects\enc28j60-demo
Executing "C:\Users\Keshav\.espressif\python_env\idf4.2_py3.7_env\Scripts\python.exe C:\esp32\esp-idf\tools/idf_monitor.py -p COM5 -b 115200 --toolchain-prefix xtensa-esp32-elf- c:\Projects\esp32-projects\enc28j60-demo\build\enc28j60.elf -m 'C:\Users\Keshav\.espressif\python_env\idf4.2_py3.7_env\Scripts\python.exe' 'C:\esp32\esp-idf\tools\idf.py' '-p' 'COM5'"...
--- WARNING: GDB cannot open serial ports accessed as COMx
--- Using \\.\COM5 instead...
--- idf_monitor on \\.\COM5 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:7096
load:0x40078000,len:13212
load:0x40080400,len:4568
0x40080400: _init at ??:?
entry 0x400806f4
I (28) boot: ESP-IDF v4.2-dirty 2nd stage bootloader
I (28) boot: compile time 22:43:36
I (29) boot: chip revision: 1
I (32) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (39) boot.esp32: SPI Speed : 40MHz
I (43) boot.esp32: SPI Mode : DIO
I (48) boot.esp32: SPI Flash Size : 2MB
I (52) boot: Enabling RNG early entropy source...
I (58) boot: Partition Table:
I (61) boot: ## Label Usage Type ST Offset Length
I (69) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (76) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (84) boot: 2 factory factory app 00 00 00010000 00100000
I (91) boot: End of partition table
I (95) boot_comm: chip revision: 1, min. application chip revision: 0
I (102) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x11274 ( 70260) map
I (138) esp_image: segment 1: paddr=0x0002129c vaddr=0x3ffb0000 size=0x021a4 ( 8612) load
I (142) esp_image: segment 2: paddr=0x00023448 vaddr=0x40080000 size=0x00404 ( 1028) load
0x40080000: _WindowOverflow4 at c:/esp32/esp-idf/components/freertos/xtensa/xtensa_vectors.S:1730
I (145) esp_image: segment 3: paddr=0x00023854 vaddr=0x40080404 size=0x0bc44 ( 48196) load
I (175) esp_image: segment 4: paddr=0x0002f4a0 vaddr=0x00000000 size=0x00b78 ( 2936)
I (176) esp_image: segment 5: paddr=0x00030020 vaddr=0x400d0020 size=0x31570 (202096) map
0x400d0020: _stext at ??:?
I (265) boot: Loaded app from partition at offset 0x10000
I (265) boot: Disabling RNG early entropy source...
I (265) cpu_start: Pro cpu up.
I (269) cpu_start: Application information:
I (274) cpu_start: Project name: enc28j60
I (279) cpu_start: App version: 1
I (283) cpu_start: Compile time: Jul 28 2021 20:37:02
I (289) cpu_start: ELF file SHA256: e3509b72c43cccfc...
I (295) cpu_start: ESP-IDF: v4.2-dirty
I (301) cpu_start: Starting app cpu, entry point is 0x4008192c
0x4008192c: call_start_cpu1 at c:/esp32/esp-idf/components/esp32/cpu_start.c:287
I (0) cpu_start: App cpu up.
I (311) heap_init: Initializing. RAM available for dynamic allocation:
I (318) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (324) heap_init: At 3FFB3928 len 0002C6D8 (177 KiB): DRAM
I (330) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (337) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (343) heap_init: At 4008C048 len 00013FB8 (79 KiB): IRAM
I (349) cpu_start: Pro cpu start user code
I (368) spi_flash: detected chip: generic
I (368) spi_flash: flash io: dio
W (368) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (379) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (6389) enc28j60: revision: 6
E (6399) enc28j60: enc28j60_init(270): wrong chip ID
E (6399) esp_eth: esp_eth_driver_install(199): init phy failed
I (6409) gpio: GPIO[4]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
ESP_ERROR_CHECK failed: esp_err_t 0xffffffff (ESP_FAIL) at 0x40084d38
0x40084d38: _esp_error_check_failed at c:/esp32/esp-idf/components/esp_common/src/esp_err.c:45
file: "../main/enc28j60_example_main.c" line 118
func: app_main
expression: esp_eth_driver_install(ð_config, ð_handle)
abort() was called at PC 0x40084d3b on core 0
0x40084d3b: _esp_error_check_failed at c:/esp32/esp-idf/components/esp_common/src/esp_err.c:46
Backtrace:0x400851ab:0x3ffb5640 0x40085849:0x3ffb5660 0x400892a6:0x3ffb5680 0x40084d3b:0x3ffb56f0 0x400d48d3:0x3ffb5710 0x400d31de:0x3ffb57e0 0x40085851:0x3ffb5810
0x400851ab: panic_abort at c:/esp32/esp-idf/components/esp_system/panic.c:330
0x40085849: esp_system_abort at c:/esp32/esp-idf/components/esp_system/system_api.c:106
0x400892a6: abort at c:/esp32/esp-idf/components/newlib/abort.c:46
0x40084d3b: _esp_error_check_failed at c:/esp32/esp-idf/components/esp_common/src/esp_err.c:46
0x400d48d3: app_main at c:\Projects\esp32-projects\enc28j60-demo\build/../main/enc28j60_example_main.c:118 (discriminator 1)
0x400d31de: main_task at c:/esp32/esp-idf/components/esp32/cpu_start.c:600 (discriminator 2)
0x40085851: vPortTaskWrapper at c:/esp32/esp-idf/components/freertos/xtensa/port.c:143
ELF file SHA256: e3509b72c43cccfc
Rebooting...