sommersoft wrote:
...
I do agree however that the conversation is limited on the "when" aspect of one vs the other. For instance, if your interfacing with more than one SPI device, you either have to 1) MUX it or 2) spidev one device AND bitbang the other. This is based on RPi not having slave SPI capability. (again, I may be off on this...still learning myself)
The Python spidev module uses the underlying Linux SPI driver.
The Linux SPI driver on the Pi supports the main SPI peripheral which has two slave selects.
There is another SPI peripheral on recent Pis which is currently not supported by the Linux SPI driver. This auxiliary peripheral has three slave selects.
Support for both peripherals as well as arbitrary gpios used as slave selects is slowly moving through the Linux kernel review process.
So currently recent Pis support a total of 5 connected SPI devices, although only two have kernel support.
The Pi always acts as a SPI and I2C bus master (not quite true, but near enough). I.e. it does not act as a slave device, it talks to slave devices.