Weak pull down for SPI

digital-communicationspulldownspi

I am using Arduino(does not matter) and 8 x 12 bit-ADCs to read some values. I created a prototype which consists of a Shift Register(SR) and all outputs of SR are connected to individual ADC's chip-select pin. During boot, I set all output of SR as HIGH.

I select the ADC by pulling the specific output of the SR as LOW and then talk to the ADC. As soon as my communication is finished, I again set all output of SR as HIGH. This is all working.

During some testing, I found that if all SPI (ADCs) are pulled HIGH (none should be talking) and if I read MISO, I was getting some random data. I realized that MISO was floating and added a 100K pull-down (weak pulldown!) which sorted this out. After this, if I listened the MISO while all ADCs were HIGH, all I get is 0s (Yey!).

My question is that does it make sense to pull down MOSI and CLOCK as well? Will it create any problem?

Best Answer

You shouldn't need to pull down the MOSI or Clk lines.

Master Out Slave In is an output from your controller, as is the Clk line. Unless you do something that turns those pins to inputs, they should be just fine without either pull-down or pull-up resistors.

On the other hand, Master In Slave Out is an input to the controller. When none of your ADC chips are selected, that line does float. It needs the resistor that you added.