cancel
Showing results for 
Search instead for 
Did you mean: 

STM3H743VIT6 and LAN8742A Not functioning on 7/10 PCBAs

jabraao
Visitor

Layout LAN8742A 2.png

Layout LAN8742A.png

Schematic LAN8742A.png

   

I have a PCBA design that uses a Molex Picoblade connector instead of RJ45 due to enclosure height restrictions. The PHY IC is a LAN8742A and the MCU is STM32H743VIT6, the ethernet is also POE.

I have spliced, a ethernet and 8pin Picoblade connector together to make a 6in cable that plugs into a router. I figured with such a short distance and being 10/100 that while not ideal should still work. I maintained the RJ45 pinout. There is also a POE circuit using a small Silvertel AG9905 module, that is working as expected.

Of the 10 boards 3 seem to work but not without some issues. They refuse to work off cold boots (from off to powered) they only seem to work after a warm boot. Also they arent fully stable, sometimes connecting or disconnecting the cable can crash the system or pinging the system can also crash the working boards.

For the remaining 7 I am able to assign them a static IP and random MAC, and I can confirm this by seeing the device connected on the router UI, but when I ping I get host unreachable. Same code same setup with the 3 others with a warm boot I get the ping back and I can open the simple server test program.

The boards all pass the PHY internal loopback test, but not always first go off cold boot.

I soldered in a magjack RJ45 to bypass the magnetics, POE and picoblade connector. The RJ45 works with the 3 working boards but do not fix the issues with the 7 others. That makes me confident that my issue is not with that side of the circuit and is more so related to the PHY<-->STM32H7 RMII side of the circuit.

I have tried tuning the series resistors up and down from 33ohm. My REF_CLK seems stable. I have bypassed the 3.3V LDO with a lab supply to make sure its not a problem with the power supply. I have added more bulk capacitors to the LAN8742A and the MCU, 10uF everywhere I could find. I have tuned the load capacitors on both the LAN8742A and STM32H7 crystals and even swapped in higher tolerance crystals.

I am really scratching my head at what could be going wrong here. There's always a chance that I have more work to do on the firmware but I cant explain why 3 work and 7 don't with identical setups.


4 REPLIES 4
jabraao
Visitor

Additional info. The original design has the NRST from the MCU and LAN8742A tied together like the Nucleo dev board and push button.

I took a non working board and cut the trace and wired it to PB0 to add a startup delay but that did not work.

RTT print of the startup.

 

00> --- Hard Reset. RTT Initialized. Fast Blink Delay... ---
00> --- HW RESET: Forcing Straps LOW (RMII Mode)... ---
00> --- HW RESET: Driving PB0 LOW... ---
00> --- HW RESET: Releasing PB0 HIGH (Latching Straps)... ---
00> --- HW RESET: Done. Waiting for PLL... ---
00> --- MPU Configured. Write Buffer Disabled. ---
00> --- Calling HAL_Init... ---
00> --- HAL_Init Done. ---
00> --- Calling SystemClock_Config... ---
00> SCC: Entered. Calling HAL_PWREx_ConfigSupply...
00> SCC: Supply Configured. Configuring Voltage Scaling (Scale 1)...
00> SCC: VOS1 Ready. Configuring Oscillators (HSI First)...
00> SCC: HSI/PLL Init Success. Configuring Clocks...
00> SCC: Clock Config Success. Now attempting HSE override...
00> SCC: HSE Started (Auxiliary)...
00> --- SystemClock_Config Returned. ---
00> --- Peripheral Init Done. Waiting for Voltage Rail to Settle (10ms)... ---
00> --- Voltage Settled. Enabling SRAM Clocks FIRST... ---
00> --- SRAM Clocks Enabled. Checking Cache Status... ---
00> --- DCache was OFF (Cold Boot). Skipping disable. ---
00> --- PHY Soft Reset Complete. ---
00> [IP: 1.123] [MAC: 02..] [Req: 0] [Link: UP]
00> [IP: 1.123] [MAC: 02..] [Req: 0] [Link: UP]
00> [IP: 1.123] [MAC: 02..] [Req: 0] [Link: UP]

Says link up, they even detect a cable inserted but going link down the moment the ethernet is unplugged but is unpingable, server doesn't load on the 7 boards, does work on the 3 boards, but like I mentioned sometimes those need a warm boot to work..


I have probed the REF_CLK of 3 boards, a working, non working and nucleo 144 Z753 for comparison. Looks like I am within tolerance no? I have attached those scope captures of each of the 3 boards REF_CLK, with a 150mhz probe and spring clip.

It seems like the TX lines are working on the non functioning boards but there is a problem with the RX? The router is able to see the device connected at its assigned IP, the MAC is read correctly, but pings from the PC dont receive back.

REF_CLK Nucelo Z753.JPG

REF_CLK Custom working.JPG

REF_CLK Nucelo Non working.JPG

   

TDK
Super User

Probably a workmanship issue since the STM32 and LAN chips aren't likely to be the problem here. Perhaps reflow chips, inspect solder joints. Chase the most likely scenarios first.

The STM32 can handle being abused during loading. Unlikely that reflow will cause issues even at high temperatures. Not sure about the LAN. Replace it if you can and see if the issue persists.

If you feel a post has answered your question, please click "Accept as Solution".

These board were manufactured by a contract manufacturer overall quality looks good. I have yet to find a voltage rail thats out of tolerance or a open connection between points in the net.

For what its worth I have swapped in new several new LAN8742A, STM32H7, crystals, but have yet to make a non-functioning board work. All 10 boards pass all other IO tests, usb, just the ethernet comm is failing.

TDK
Super User

> For what its worth I have swapped in new several new LAN8742A, STM32H7, crystals, but have yet to make a non-functioning board work.

Perhaps the issue is the PCB then. Cracked vias are not terribly common but do happen.

Is this "contract manufacturer" a new supplier for you? Were PCBs tested electrically before assembly (flying lead test)? Two-layer boards are usually manufactured well. More layers and complexity increases the likelihood of issues.

If you feel a post has answered your question, please click "Accept as Solution".