|
However, if you want, you could use the
SPI Bus outside the PCB at low speeds, only that this is not practical:
the SPI Bus requires 3 or 4 lines, which are a bit too many, when
compared to 1 or 2 lines needed to communicate, efficiently, with field
devices outside the PCB. Anyway,
on the PCB the SPI Bus is very good, because we can practically attach
to the Bus as many IC chips (or devices) as we want. Please excuse me
for not providing a picture of the SPI Bus, but rest assured that you do
not need one: the SPI Bus is so simple that you will understand
everything in words.
The next question is: “What is this SPI
Bus good for?” Besides from exchanging data between various IC chips,
the SPI Bus is a method of multiplying microcontroller’s pins. In other
words, if you have a tiny 8 pins microcontroller, you could control with
that little monster few hundreds of digital Inputs and Outputs. This is
impressive, and I am certain that many doubt my words; let’s explain
this.
The SPI Bus contains three lines, and
they can be on any I/O controller pins; these lines are: Clock, Data-In,
and Data-Out. In addition, each IC connected to the SPI Bus needs an
individual Enable line. Things work like this: suppose that we have four
devices, A, B, C, and D, all wired to the SPI Bus, and the Bus itself is
wired to seven controller pins--this is 3 Bus lines plus the 4 Enable
ones. When we want to send a message to device C, we enable its Enable
line first, than we send the message serially, one bit at a time. In the
same time devices A, B, and D do exactly nothing, because they are not
enabled.
The beauty with the SPI Bus is that it
is Synchronous, meaning that when the controller sends the message to
one IC it is also able to receive data from that IC, in the same time.
This particular aspect of the SPI protocol is very well suited for
microcontroller-to-microcontroller communications.
Now, we have seen that a small 8 pins
microcontroller can control 4 devices (ICs) using 7 pins. Taking into
account that one device of type A, B, C, and D could have eight or
sixteen I/O ports this is still far from the hundreds Inputs and Outputs
I promised to you. The second beautiful thing about SPI is, one device
IC can be serialized with many more. For example, we could have B1, B2,
B3, B4, B5, and so on. All of them are serialized together, and they
require only 4 microcontroller pins to make them work: the Enable line
is common to all of them. Now it is clear, I hope, that, indeed, we can
have hundreds of I/O lines on a small 8 pins controller.
Further from this general presentation
of the SPI Bus, you should be aware that almost all ICs implement the
SIP protocol in a particular way. For detailed and practical
applications I suggest that you visit my home site at Corollary
Theorems. There you are going to discover a good tutorial book about
working with hardware, firmware, and software design, in general, and
about few practical implementations of the SPI Bus, in particular.
Many microcontrollers have built-in SPI
Bus hardware modules, but I was never interested too much about using
them. What I do, I always design--on the PCB and for one
microcontroller--one, two or more custom SPI Busses, because my custom
implementations are far more flexible. Besides, practical implementation
of a custom SPI Bus it is really simple--trust me with this one! |