please dont rip this site

Serial Peripheral Interface (SPI)

The "Serial Peripheral Interface" defines a 4-wire communication bus. Traditionally the 4 wires are named:

Many peripheral chips use a SPI interface. MultiMediaCard (MMC) uses a SPI interface.

If a microcontroller only needs to talk to 1 SPI peripheral, the CS pin on that slave may be grounded unless the slave uses the CS rise or fall to trigger internal actions. e.g. some A2D chips will start a conversion on each CS fall. When CS is not used, the end of one command is immediatly followed by the start of the next. CS can be "faked" by adding an RC network from the clock pin. This will generate CS when the clock is active and drop it when the clock stops.

If a microcontroller needs to talk to multiple SPI peripherals, there are 2 ways to set things up: "cascaded slaves" or "independent slaves".

"cascaded slaves" or "daisy-chained slaves": All the SCLKs are connected together. All the CS pins are connected together. The data flows out the microcontroller, through each peripheral in turn, and back to the microcontroller:

[uP MOSI] --> [MOSI device2 MISO] --> [MOSI device2 MISO] --> ... --> [MOSI deviceN MISO] --> [MISO uP].

"independent slaves": All the SCLKs are connected together. All the MISOs are connected together. All the MOSIs are connected together. The CS pin from each peripheral must be connected to a seperate pin on the microcontroller.

With a lot of SPI peripherals, a lot of pins on the microcontroller can be tied up in CS selection in a "independent slave" setup. The "daisy-chained slave" setup uses a lot fewer pins. (Alternatively, you could switch to devices that support a different protocol such as I2C that does device selection using address bits on the data line, rather than CS pins.)

(There's a nice picture of "cascaded slaves" vs. "independent slaves" at


SPI based I/O expanders.

Microchip PIC specific SPI

SPI Bug in LTC2400 analog to digital converter from Linear Technology



I doubt it is possible to connect a PS/2 keyboard to a SPI bus. Have you read "The PS/2 Mouse/Keyboard Protocol" by Adam Chapweske ? If you had, you would know that the *both* the clock *and* the data line are driven by *both* the PC *and* the keyboard (at different times, of course). That sounds to me much more like a I2C bus than a SPI bus. Check /techref/microchip/i2c.htm for information on programming a PIC with the I2C protocol. Does that help? -- David Cary


See also:

file: /Techref/io/serial/spis.htm, 7KB, , updated: 2017/5/8 13:08, local time: 2024/7/21 22:29,

 ©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions?
Please DO link to this page! Digg it! / MAKE!

<A HREF=""> Serial Peripheral Interface</A>

After you find an appropriate page, you are invited to your to this massmind site! (posts will be visible only to you before review) Just type a nice message (short messages are blocked as spam) in the box and press the Post button. (HTML welcomed, but not the <A tag: Instead, use the link box to link to another page. A tutorial is available Members can login to post directly, become page editors, and be credited for their posts.

Link? Put it here: 
if you want a response, please enter your email address: 
Attn spammers: All posts are reviewed before being made visible to anyone other than the poster.
Did you find what you needed?


Welcome to!

Site supported by
sales, advertizing,
& kind contributors
just like you!

Please don't rip/copy
(here's why

Copies of the site on CD
are available at minimal cost.

Welcome to!