Why is there no REFCLKO on ESP32-WROOM-32 (LAN8720A)
Posted: Sun Dec 29, 2019 10:36 pm
There is a problem with a board created by me. It uses ESP32-WROOM-32 attached to a LAN8720A. The LAN8720A never produces an output clock on it's pin 14 (nINT/REFCLKO) as expected which is connected to IO0. Pin 2 (LED2/INTSEL) has a pull-down resistor as required. This will create the 50MHz clock from it's 25MHz crystal. Also PHYAD0 (Pin 10) has pull-down resistor (address 0).
I've used latest IDF Master repository from github. I used unmodified exampled/ethernet/basic/ for demonstration purpose. I configured all pins according to desired defaults, including IO17 for PHYPOWER to reset/enable the attached LAN8720A. I tried also to set R11 as pull-up or leaving it at all.
SMI communication seems to be perfect, identification of the device is working, but as soon as the software reset is activated it times out, I suppose since there is no clock on IO0 (EMAC_CLK). This will reset the ESP32-WROOM-32 in an endless loop.
The ESP32 module is configured to accept 50MHz input clock on IO0.
The crystal is oscillating with 25MHz as expected. However on XTAL1 the voltage amplitude is only about 1.4V and on XTAL2 it's about 1V. I don't know if this is the expected voltage. I didn't find any information in datasheet about this specification.
Is there any error in the circuit? What could be the problem here?
PS: Programming mode is entered by setting nPROG to HIGH, which is working as expected.
I've used latest IDF Master repository from github. I used unmodified exampled/ethernet/basic/ for demonstration purpose. I configured all pins according to desired defaults, including IO17 for PHYPOWER to reset/enable the attached LAN8720A. I tried also to set R11 as pull-up or leaving it at all.
SMI communication seems to be perfect, identification of the device is working, but as soon as the software reset is activated it times out, I suppose since there is no clock on IO0 (EMAC_CLK). This will reset the ESP32-WROOM-32 in an endless loop.
components/esp_eth/src/esp_eth_mac_esp32.c in emac_esp32_init MAC_CHECK(to < emac->sw_reset_timeout_ms / 10, "reset timeout", err, ESP_ERR_TIMEOUT);
The ESP32 module is configured to accept 50MHz input clock on IO0.
The crystal is oscillating with 25MHz as expected. However on XTAL1 the voltage amplitude is only about 1.4V and on XTAL2 it's about 1V. I don't know if this is the expected voltage. I didn't find any information in datasheet about this specification.
Is there any error in the circuit? What could be the problem here?
PS: Programming mode is entered by setting nPROG to HIGH, which is working as expected.