2024-05-10 01:10 AM
Hi,
I am using STM32F107RB MCU for my custom project, currently testing ethernet section. No ping is working and I don't see any data in wireshark.
The Firmware package version is 1.7.0 and IDE version is 1.15.3.
Could anyone suggest.
Regards,
NaveenK
2024-05-10 10:35 AM
Is this a custom board with a custom PHY?
2024-05-10 11:16 AM
Could be any number of reasons your design, implementation or code might fail
Perhaps try with STM3210C-EVAL board if you can find one. There was an ST / uMicrium board with the F107, and a Golden Bull & Golden Dragon board.
Perhaps don't design using decades old parts, support and interest is going to be very low.
Perhaps look at current NUCLEO-144 boards with Ethernet as reference examples.
https://www.st.com/en/development-tools/stm32-micrium.html
https://www.hotmcu.com/stm32f107vct6-development-board-32-tft-lcd-p-115.html
2024-05-10 11:04 PM
Hi Pavel, yes it is.
I suppose to use the same controller, as it was decided based on cost.
Since the board is ready for bring up, I had no option left rather than continuing on it.
I only needed is that, the supported firmware package on which the ethernet works(working model). So that I can continue to work and make it up.
2024-05-11 08:25 AM - edited 2024-05-11 08:25 AM
First, please ensure that your program can talk to the PHY and it sees the cable connection and speed/duplex detected correctly. When this checked, set breakpoint on the packet received point in the code and send any broadcast from other machine. You should get the breakpoint hit. Then you can proceed to the IP addresses, pings and so on.
2024-05-16 01:09 AM - edited 2024-05-16 01:10 AM
Yes, cable is now detected. Initially, it was not detected after cross verifying the circuit it was observed that the pull ups on RX_DV/MII_MODE and CRS/CRS_DV/LED_CFG were missing and removed some passive components in the circuit.
I started debugging by giving a ping command from windows terminal and observed step by step code execution. Then I found that the function call given below is returning with Null value,
In this function HAL_ETH_ReadData();
/* Check if descriptor is not owned by DMA */
if ((READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_OWN) == (uint32_t)RESET)){ }
the above condition is getting failed and HAL_error is returned.
When I check with working board(with another MCU) the above section is executed.