Skip to main content
Visitor II
June 9, 2017
Question

example using HAL ETH without LWiP for raw ethernet frames?

  • June 9, 2017
  • 13 replies
  • 14049 views
Posted on June 09, 2017 at 20:41

[reposting after 30 days of no responses]

Hello all,

I have been making great progress using CubeMX and HAL for lots of things, now I want to try ethernet. My application is very simple, I only want to send and receive raw ethernet frames -- no UDP or TCP at all. I also prefer not to use LWiP for something so basic. Can anyone point me to an example of raw ethernet frame IO using just HAL? I will be using Nucleo F429ZI.

My requirements:

[ ] send a raw frame (source and destination MAC address, type IP and payload, total less than 1500 bytes)

[ ] receive interrupt upon receipt of a raw ethernet frame

My transactions are slow and simple, I do not even need any buffer queuing.

Thanks for any tips.

#raw-ethernet-frame
    This topic has been closed for replies.

    13 replies

    Visitor II
    March 23, 2022

    Hello @Elwood Downey​  I'm just starting with using ETH with STM and I'm trying to do the same application can you please share with me the source code if you still have it ?

    Visitor II
    July 30, 2022

    This is an extremely useful application. Sending/receiving raw ethernet frames is very liberating and empowering.

    I've tried using LWiP, and after horrible experiences on the STM32H743 (works for 5 to 8 hours and hangs) without any code on my part (completely out-of-the-box), I can't even ping after 8 hours. Months later, we did not have a product that we could ship, because we couldn't get LWIP to work forever.

    Even with LWIP working reliably, there are times when the raw frames are the best. I'm trying to avoid an LWIP-centric defense argument.

    Anyway, back to the central point. Is there a body of code somewhere, where I can send/transmit frames from one MCU to another? No protocol. Just transfer one byte stream to another.

    Thanks!

    Super User
    August 1, 2022

    > No protocol. Just transfer one byte stream to another.

    Just look at the low_level_input and low_level_output functions. Remove anything related to LwIP (especially the buffer/packet allocation); roll your own.

    Visitor II
    April 24, 2025

    Please watch my youtube. It may be helpful; for you even though the speaking language is Korean.  https://www.youtube.com/watch?v=HVrPErX_NN0