On the same SPI bus you need to differentiate the devices via an own CS pin. MISO, MOSI, SCLK are shared. The active SPI device is chosen by pulling the CS pin high. This is done automatically by Klipper.
Above is the case, e.g. when you share a MAX board on the same SPI bus as your stepper drivers.
On the RPi it is a bit different.
Depending on the RPi Model, the SPI buses work differently. Information covered in here is focused on RPi4
RPi’s before 4: Only 1 true SPI controller (SPI0) and two SPI mini (SPI1 / SPI2)
RPI 4: 5 SPI masters (SPI0, SPI3, SPI4, SPI5, SPI6) and two SPI mini (SPI1 / SPI2)
SPI2 is not on the 40 pin header
CS is automatically detected by the Kernel. Use cs_pin: rpi:None otherwise strange things will happen and your dog will get abducted by aliens
RPi has multiple SPI buses, so best thing is to assign each device on an own bus
dtparam=spi=off #turn off default SPI to use multiple buses
I never had the need to chain multiple SPI on a RPi. I always used dedicated buses. Not sure how the CS auto-detection will behave when you have multiple devices on one bus.
Be brave and try it. Feedback if and how it is working would be appreciated.
Sorry, this would have to be answered by a developer. Just my experience and I think some reports are somewhere here as well. My wild guess is that SPI1 is a “mini SPI” port and whatever this means, Klipper does not like it.
SPI1 is an auxiliary peripheral that’s referred to as mini SPI. According to the BCM2835 documentation, using higher clock speeds on SPI1 requires additional CPU time compared to SPI0, caused by smaller FIFOs and no DMA support. It doesn’t support Mode1 or Mode3.