Cerb family - Ethernet - multi-SPI

Hello all,

I’m back working with the Cerberus mainboard - this time I’m hoping to use the ENC28 Ethernet module to help set up a webserver/client to use a semi-RESTful API to send and receive commands. The good news is that this part looks to be working pretty well.

The bad news for me is that I had misunderstood the way SPI was working on the Cerberus mainboard. Doing a bit of searching/scrounging I’ve come to realize that only one SPI bus is enabled on Cerb family products. With the ENC28 module taking up the only SPI bus, I’m unable to use other SPI modules.

So, my question is this - what is the best angle to tackle this problem from?

  1. Use SPI’s chip select between all SPI controlled modules.
    This seems like the most straightforward way of doing this and I would be on board, but I’m not sure this is possible. From the way I understand it, the ENC28 module may require full control over the SPI bus at all times and wouldn’t allow me to switch the chip select pin to talk with other devices. Could anyone verify/refute this for me?

  2. Change the firmware myself to enable a second SPI bus (as the STM32F405 chip has 3).
    This seems like a more in depth fix to the given problem and I’m not sure how involved this could get. We are able to layout and produce our own board with more pins exposed if needed. I’m also cautious of going this route because of the “recent” (I’ve been gone for a while) change from Open Source to Closed Source for the Cerb family firmware. Is it even possible to change the Cerb family firmware with NETMF 4.3?

  3. Bit-bang all other SPI communication necessary.
    This seems like a “hack”, which I’m not entirely opposed to. But when the STM32F405 chip has 3 SPI buses, it would seem silly to do this.

  4. Use a different mainboard with either direct Ethernet support or multiple SPI buses enabled.
    In this case, does anyone have any suggestions for other boards?

Thanks everyone!

You can have other SPI devices on the same bus as ENC28J60 but the rule is the same with any SPI system, use chip select for each slave.

@ Gus - Thanks Gus. I guess I should have just tried that out before posting, but it looks like it is working so far.

As always, thanks for your quick response times!

We are always here happy to help :slight_smile:

@ Sivat -
did you find a solution?