Module Description
Driver for the hardware SPI port available on most 8-bit AVR microcontroller models. This module provides an easy to use driver for the setup and transfer of data over the AVR's SPI port.
- Note
- This file should not be included directly. It is automatically included as needed by the SPI driver dispatch header located in LUFA/Drivers/Peripheral/SPI.h.
Example Usage
The following snippet is an example of how this module may be used within a typical application.
#define SPI_MODE_MASTER (1 << MSTR) |
SPI mode mask for SPI_Init(). Indicates that the SPI interface should be initialized into master mode.
#define SPI_MODE_SLAVE (0 << MSTR) |
SPI mode mask for SPI_Init(). Indicates that the SPI interface should be initialized into slave mode.
#define SPI_ORDER_LSB_FIRST (1 << DORD) |
SPI data order mask for SPI_Init(). Indicates that data should be shifted out LSB first.
#define SPI_ORDER_MSB_FIRST (0 << DORD) |
SPI data order mask for SPI_Init(). Indicates that data should be shifted out MSB first.
#define SPI_SAMPLE_LEADING (0 << CPHA) |
SPI data sample mode mask for SPI_Init(). Indicates that the data should sampled on the leading edge.
#define SPI_SAMPLE_TRAILING (1 << CPHA) |
SPI data sample mode mask for SPI_Init(). Indicates that the data should be sampled on the trailing edge.
#define SPI_SCK_LEAD_FALLING (1 << CPOL) |
SPI clock polarity mask for SPI_Init(). Indicates that the SCK should lead on the falling edge.
#define SPI_SCK_LEAD_RISING (0 << CPOL) |
SPI clock polarity mask for SPI_Init(). Indicates that the SCK should lead on the rising edge.
#define SPI_SPEED_FCPU_DIV_128 ((1 << SPR1) | (1 << SPR0)) |
SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 128.
#define SPI_SPEED_FCPU_DIV_16 (1 << SPR0) |
SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 16.
#define SPI_SPEED_FCPU_DIV_2 SPI_USE_DOUBLESPEED |
SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 2.
#define SPI_SPEED_FCPU_DIV_32 (SPI_USE_DOUBLESPEED | (1 << SPR1)) |
SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 32.
#define SPI_SPEED_FCPU_DIV_4 0 |
SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 4.
#define SPI_SPEED_FCPU_DIV_64 (SPI_USE_DOUBLESPEED | (1 << SPR1) | (1 << SPR0)) |
SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 64.
#define SPI_SPEED_FCPU_DIV_8 (SPI_USE_DOUBLESPEED | (1 << SPR0)) |
SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 8.
static void SPI_Disable |
( |
void |
| ) |
|
|
inlinestatic |
Turns off the SPI driver, disabling and returning used hardware to their default configuration.
static uint8_t SPI_GetCurrentMode |
( |
void |
| ) |
|
|
inlinestatic |
Retrieves the currently selected SPI mode, once the SPI interface has been configured.
- Returns
- SPI_MODE_MASTER if the interface is currently in SPI Master mode, SPI_MODE_SLAVE otherwise
static void SPI_Init |
( |
const uint8_t |
SPIOptions | ) |
|
|
inlinestatic |
Initializes the SPI subsystem, ready for transfers. Must be called before calling any other SPI routines.
- Parameters
-
[in] | SPIOptions | SPI Options, a mask consisting of one of each of the SPI_SPEED_* , SPI_SCK_* , SPI_SAMPLE_* , SPI_ORDER_* and SPI_MODE_* masks. |
static uint8_t SPI_ReceiveByte |
( |
void |
| ) |
|
|
inlinestatic |
Sends a dummy byte through the SPI interface, blocking until the transfer is complete. The response byte from the attached SPI device is returned.
- Returns
- The response byte from the attached SPI device.
static void SPI_SendByte |
( |
const uint8_t |
Byte | ) |
|
|
inlinestatic |
Sends a byte through the SPI interface, blocking until the transfer is complete. The response byte sent to from the attached SPI device is ignored.
- Parameters
-
[in] | Byte | Byte to send through the SPI interface. |
static uint8_t SPI_TransferByte |
( |
const uint8_t |
Byte | ) |
|
|
inlinestatic |
Sends and receives a byte through the SPI interface, blocking until the transfer is complete.
- Parameters
-
[in] | Byte | Byte to send through the SPI interface. |
- Returns
- Response byte from the attached SPI device.