Hello!
For I2C protocol, there is pull up required because its open drain configuration.
But for SPI protocol why pull up not required?
The idea with this resistor is that any of the masters / slaves can pull any line
(SDA or SCL) low. and the resistors pull them high.
I don't know where you are writing from, but have you ever stepped in a bus in US?
Maybe not all the buses, maybe not all the states, but in some buses, asking for stop
is made with a unique rope which goes around inside of the whole bus. On end of the
rope is firmly anchored, one is linked to a bell (or a switch that activates a bell).
If anybody pulls the rope, it activates the bell / switch.
That's the same idea for I2C. As you can have more than 1 slave on the bus, and also
more than one master in some implementation, doing this push/pull would mean that in
some cases, one of the terminals of the bus defines the level and another one wants
to take the mike ant talk. In this case, it would result in a short circuit.
With resistor, all the terminals on a bus are equal, any terminal can ask for the mike
and talk at any time.
On the other hand, SPI is a one to one system which uses 3 or 4 wires.
Clock and MOSI are always output by the master and therefore can be made with a push-pull
stage. Similarily MISO is always defined by the slave.
The master to multislaves is made using chip select signals, which ensures that 2
slaves will never talk at the same time.
Dora.