SPI pins of each ports

As far as I know, nobody has written any libraries to use those SPI-based ethernet chips with DMA. Will you do this work? Are you experienced in writing such DMA-based code? It's not easy and if you haven't done so before, the learning curve is very steep. Not impossible, but you would be wise to consider how difficult it can be.

Even with the traditional polled SPI code, those chips have a long history of sluggish performance. I am the person who optimized the Arduino Ethernet library (for Wiznet W5100, W5200, W5500). Even without the extra complexity of DMA, just using simple polled SPI, for many years nobody really did comprehensive optimizations until I made version 2.0, rewriting quite a lot of that library.

Maybe you will do so much better, but if you have zero experience with these chips, consider how poorly that relatively simple non-DMA library worked for so many years because nobody was willing to put in the needed effort.
 
Last edited:
I'm also a bit skeptical those SPI-based ethernet chips can ever achieve low overhead, even with use of SPI FIFOs and DMA. Will admit, I really only have experience with Wiznet W5500. I haven't used ENC28J60. Maybe it is better? But I can say from experience the Wiznet chip has quite a lot of overhead for many small transfers needed to manage the registers before you're able to perform a longer transfer just to move 1 packet over SPI.
 
Back
Top