Adding support for LAN9303 PHY to IDF

geeks-r-us
Posts: 1
Joined: Sun Oct 25, 2020 6:53 pm

Adding support for LAN9303 PHY to IDF

Postby geeks-r-us » Sun Oct 25, 2020 7:06 pm

Hi,

I would like to add support for the PHY LAN9303 because it would add 2 LAN Ports to the ESP32 (bridged or separated) beside V-LAN etc...

So first question is there already development ongoing into this direction?

In the docs I found the already supported PHYs which does not include the LAN9303 but the sentence other support can be added by the users. Is there a example / documentation how to add new PHYs? Just clone the IDF an add a new source code file to esp-eth?
or is there a components approach too?

I had a look at the source of esp-eth and the handling of the phy and the mac is completely separated. This shoud work fine for the most PHYs as they are just forwarding the data to the MAC. If I understood the datasheet of the LAN9303 right, it's connected as PHY but there is also MAC functionality in it. At least I would need to add the MAC address of the ESP to the integrated switch to make communication work. But the SMI communication is done by the phy part and MAC address etc is stored in the mac part.
Due to the structure of eth_hanlde_t is not public to pass it to an separate util to configure the switch. What would be the best way to archive this without patching around in the whole IDF?

Thx

giannifp
Posts: 3
Joined: Mon Jul 06, 2020 2:58 pm

Re: Adding support for LAN9303 PHY to IDF

Postby giannifp » Sat May 01, 2021 6:18 pm

Hello,
Has anyone managed to get the LAN9303 Working with the ESP32? I'm want to give it a try, but don't want to go into a dead end path if it doesn't work. I see the LAN9303 Switch can work as a virtual device in which should be transparent from the ESP32 side. But I'm not sure about the command/register addressing for the device and how they differ from the LAN8720.

CKH12358
Posts: 1
Joined: Mon Oct 18, 2021 1:29 pm

Re: Adding support for LAN9303 PHY to IDF

Postby CKH12358 » Mon Oct 18, 2021 1:51 pm

Hi!

Yes! Actually, I just got a board design with the LAN9303 to work! In terms of the IDF, it is very similar to the LAN8720. Only 1 register (that is used) is different - the PSCSR(PHY Special Control Status Register). Which, is still mostly the same. The only functional difference is in the function lan8720_negotiate, where it polls this PSCSC for a pscsr.auto_nego_done - which the LAN9303 does not have. So just edit out this check! I've attached the modified esp_eth_phy_lan8720.c below.

As for the hardware setup, the strapping pins on the 9303 are pretty important - so I've attached my hardware schematic. But basically, you need to set it up as a PHY RMII/SMI/CLKOUT-16ma.

LAN9303
https://drive.google.com/file/d/1r2MEXE ... sp=sharing

ESP32
https://drive.google.com/file/d/1tY9rww ... sp=sharing

esp_eth_phy_lan8720.c (Changes Denoted by //EDIT ... //END EDIT)
https://drive.google.com/file/d/12SKOgl ... sp=sharing

Hopes this helps!
-Coach Chuck

NorbertoNorbs
Posts: 2
Joined: Fri Oct 29, 2021 1:28 am

Re: Adding support for LAN9303 PHY to IDF

Postby NorbertoNorbs » Fri Oct 29, 2021 6:49 pm

@CKH12358

Thanks a lot, this example you be very useful for a upcoming project.

Who is online

Users browsing this forum: asargent and 150 guests