SPI - Design help for Interfacing with a large number of SPI slaves

Hi all, I am trying to develop a system in which I can communicate with 30+ SPI slaves. The slaves are BMP280 pressure sensors. I currently have a working system with 16 SPI slaves, in which I use SIPO shift registers to control the slave select lines of each sensor (reducing the I/O requirements of the master). One key feature is that I would like to send a 'command' from the master to all the slaves synchronously. To do this I 'disable' the shift register outputs, using the 'enable' pin, and have a pull-down resistor on each of the slave select lines, ensuring they go to Ground.

This system works in practice, however, in my mind seems quite clunky and not particularly scalable ( i.e. for 64 sensors would need 64 resistors....) So I was just wondering if anyone had any advice/suggestions on a different way to produce this system to reduce the amount of hardware required, whilst still keeping the same functionality??

Many Thanks,


Couldn't you just use the SIPO shift register itself to select all slaves by loading it with zeros to set all outputs low?
Do you have a link to the shift register?

Can you use an IO expander like this one? http://au.mouser.com/new/NXP-Semiconductors/nxp-PCAL6416A-io-expander/ or TCA9555, they seems to be very flexible and you coukd easily control a single CS or all at the same time.

The only issue is that those expanders normally have a reset state as Input so you need to make sure you set all as Output high straight after boot. You may be able to find one that has a pull-up enabled as default.

ehm… can you not simply send 0x00 to all your shift registers prior of sending your command? Than you dont need any resistors at all