.. _spi:

=====
 SPI
=====

The Serial Peripheral Interface Bus (SPI) is a serial data transfer
protocol useful for interacting with a wide variety of hardware
peripherals.

The Maple has two SPI ports. The first has NSS on D10, MOSI on
D11, MISO on D12, and SCK on D13. The second has NSS on D31, SCK on
D32, MISO on D33, and MOSI on D34.

The public libmaple API for managing the SPI ports is the
:ref:`HardwareSpi <lang-hardwarespi>` class.

Recommended Reading
-------------------

* `Wikipedia Article on Serial Peripheral Interface Bus (SPI)
  <http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus>`_
* `Arduino reference on SPI
  <http://www.arduino.cc/playground/Code/Spi>`_
* `Hardcore SPI on Arduino <http://klk64.com/arduino-spi/>`_ by kik64
* STMicro documentation for STM32F103RB microcontroller:

  * `Datasheet <http://www.st.com/stonline/products/literature/ds/13587.pdf>`_ (pdf)
  * `Reference Manual <http://www.st.com/stonline/products/literature/rm/13902.pdf>`_ (pdf)