Serial Peripheral Interface (SPI) driver for SAM. More...
#include "compiler.h"
Go to the source code of this file.
Macros | |
#define | spi_get_pcs(chip_sel_id) ((~(1u<<(chip_sel_id)))&0xF) |
Generate Peripheral Chip Select Value from Chip Select ID. More... | |
#define | SPI_TIMEOUT 15000 |
Typedefs | |
typedef enum spi_cs_behavior | spi_cs_behavior_t |
Enumerations | |
enum | spi_cs_behavior { SPI_CS_KEEP_LOW = SPI_CSR_CSAAT, SPI_CS_RISE_NO_TX = 0, SPI_CS_RISE_FORCED = SPI_CSR_CSNAAT } |
enum | spi_status_t { SPI_ERROR = -1, SPI_OK = 0, SPI_ERROR_TIMEOUT = 1, SPI_ERROR_ARGUMENT, SPI_ERROR_OVERRUN, SPI_ERROR_MODE_FAULT, SPI_ERROR_OVERRUN_AND_MODE_FAULT } |
Functions | |
int16_t | spi_calc_baudrate_div (const uint32_t baudrate, uint32_t mck) |
Calculate the baudrate divider. More... | |
void | spi_configure_cs_behavior (Spi *p_spi, uint32_t ul_pcs_ch, uint32_t ul_cs_behavior) |
Configure CS behavior for SPI transfer (spi_cs_behavior_t). More... | |
static void | spi_disable (Spi *p_spi) |
Disable SPI. More... | |
void | spi_disable_clock (Spi *p_spi) |
Disable SPI clock. More... | |
static void | spi_disable_interrupt (Spi *p_spi, uint32_t ul_sources) |
Disable SPI interrupts. More... | |
static void | spi_disable_loopback (Spi *p_spi) |
Disable loopback mode. More... | |
static void | spi_disable_mode_fault_detect (Spi *p_spi) |
Disable Mode Fault Detection. More... | |
static void | spi_disable_peripheral_select_decode (Spi *p_spi) |
Disable Peripheral Select Decode. More... | |
static void | spi_disable_tx_on_rx_empty (Spi *p_spi) |
Disable waiting RX_EMPTY before transfer starts. More... | |
static void | spi_enable (Spi *p_spi) |
Enable SPI. More... | |
void | spi_enable_clock (Spi *p_spi) |
Enable SPI clock. More... | |
static void | spi_enable_interrupt (Spi *p_spi, uint32_t ul_sources) |
Enable SPI interrupts. More... | |
static void | spi_enable_loopback (Spi *p_spi) |
Enable loopback mode. More... | |
static void | spi_enable_mode_fault_detect (Spi *p_spi) |
Enable Mode Fault Detection. More... | |
static void | spi_enable_peripheral_select_decode (Spi *p_spi) |
Enable Peripheral Select Decode. More... | |
static void | spi_enable_tx_on_rx_empty (Spi *p_spi) |
Enable waiting RX_EMPTY before transfer starts. More... | |
static uint16_t | spi_get (Spi *p_spi) |
Get one data to a SPI peripheral. More... | |
static uint32_t | spi_get_mode (Spi *p_spi) |
Get SPI work mode. More... | |
static uint32_t | spi_get_mode_fault_detect_setting (Spi *p_spi) |
Check if mode fault detection is enabled. More... | |
static uint32_t | spi_get_peripheral_select_decode_setting (Spi *p_spi) |
Get Peripheral Select Decode mode. More... | |
static uint32_t | spi_get_peripheral_select_mode (Spi *p_spi) |
Get Peripheral Select mode. More... | |
static uint32_t | spi_get_tx_on_rx_empty_setting (Spi *p_spi) |
Check if SPI waits RX_EMPTY before transfer starts. More... | |
uint32_t | spi_get_writeprotect_status (Spi *p_spi) |
Indicate write protect status. More... | |
static uint32_t | spi_is_enabled (Spi *p_spi) |
Test if the SPI is enabled. More... | |
static uint32_t | spi_is_rx_full (Spi *p_spi) |
Check if the SPI contains a received character. More... | |
static uint32_t | spi_is_rx_ready (Spi *p_spi) |
Check if all receptions are ready. More... | |
static uint32_t | spi_is_tx_empty (Spi *p_spi) |
Check if all transmissions are complete. More... | |
static uint32_t | spi_is_tx_ready (Spi *p_spi) |
Check if all transmissions are ready. More... | |
static void | spi_put (Spi *p_spi, uint16_t data) |
Put one data to a SPI peripheral. More... | |
spi_status_t | spi_read (Spi *p_spi, uint16_t *us_data, uint8_t *p_pcs) |
Read the received data and it's peripheral chip select value. While SPI works in fixed peripheral select mode, the peripheral chip select value is meaningless. More... | |
static uint32_t | spi_read_interrupt_mask (Spi *p_spi) |
Read SPI interrupt mask. More... | |
static uint32_t | spi_read_status (Spi *p_spi) |
Read status register. More... | |
static void | spi_reset (Spi *p_spi) |
Reset SPI and set it to Slave mode. More... | |
int16_t | spi_set_baudrate_div (Spi *p_spi, uint32_t ul_pcs_ch, uint8_t uc_baudrate_divider) |
Set Serial Clock Baud Rate divider value (SCBR). More... | |
void | spi_set_bits_per_transfer (Spi *p_spi, uint32_t ul_pcs_ch, uint32_t ul_bits) |
Set number of bits per transfer. More... | |
void | spi_set_clock_phase (Spi *p_spi, uint32_t ul_pcs_ch, uint32_t ul_phase) |
Set Data Capture Phase. More... | |
void | spi_set_clock_polarity (Spi *p_spi, uint32_t ul_pcs_ch, uint32_t ul_polarity) |
Set clock default state. More... | |
void | spi_set_delay_between_chip_select (Spi *p_spi, uint32_t ul_delay) |
Set delay between chip selects (in number of MCK clocks). If DLYBCS <= 6, 6 MCK clocks will be inserted by default. More... | |
static void | spi_set_fixed_peripheral_select (Spi *p_spi) |
Set Fixed Peripheral Select. Peripheral Chip Select is controlled by SPI_MR. More... | |
static void | spi_set_lastxfer (Spi *p_spi) |
Issue a LASTXFER command. The next transfer is the last transfer and after that CS is de-asserted. More... | |
static void | spi_set_master_mode (Spi *p_spi) |
Set SPI to Master mode. More... | |
void | spi_set_peripheral_chip_select_value (Spi *p_spi, uint32_t ul_value) |
Set Peripheral Chip Select (PCS) value. More... | |
static void | spi_set_slave_mode (Spi *p_spi) |
Set SPI to Slave mode. More... | |
void | spi_set_transfer_delay (Spi *p_spi, uint32_t ul_pcs_ch, uint8_t uc_dlybs, uint8_t uc_dlybct) |
Configure timing for SPI transfer. More... | |
static void | spi_set_variable_peripheral_select (Spi *p_spi) |
Set Variable Peripheral Select. Peripheral Chip Select can be controlled by SPI_TDR. More... | |
void | spi_set_writeprotect (Spi *p_spi, uint32_t ul_enable) |
Enable or disable write protection of SPI registers. More... | |
spi_status_t | spi_write (Spi *p_spi, uint16_t us_data, uint8_t uc_pcs, uint8_t uc_last) |
Write the transmitted data with specified peripheral chip select value. More... | |
Serial Peripheral Interface (SPI) driver for SAM.
Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries.
Definition in file drivers/spi/spi.h.
#define spi_get_pcs | ( | chip_sel_id | ) | ((~(1u<<(chip_sel_id)))&0xF) |
Generate Peripheral Chip Select Value from Chip Select ID.
chip_sel_id | The chip select number used |
Definition at line 81 of file drivers/spi/spi.h.
#define SPI_TIMEOUT 15000 |
Time-out value (number of attempts).
Definition at line 51 of file drivers/spi/spi.h.
typedef enum spi_cs_behavior spi_cs_behavior_t |
SPI Chip Select behavior modes while transferring.
enum spi_cs_behavior |
SPI Chip Select behavior modes while transferring.
Definition at line 66 of file drivers/spi/spi.h.
enum spi_status_t |
Status codes used by the SPI driver.
Enumerator | |
---|---|
SPI_ERROR | |
SPI_OK | |
SPI_ERROR_TIMEOUT | |
SPI_ERROR_ARGUMENT | |
SPI_ERROR_OVERRUN | |
SPI_ERROR_MODE_FAULT | |
SPI_ERROR_OVERRUN_AND_MODE_FAULT |
Definition at line 54 of file drivers/spi/spi.h.
|
inlinestatic |
Disable SPI.
p_spi | Pointer to an SPI instance. |
Definition at line 111 of file drivers/spi/spi.h.
|
inlinestatic |
Disable SPI interrupts.
p_spi | Pointer to an SPI instance. |
ul_sources | Interrupts to be disabled. |
Definition at line 472 of file drivers/spi/spi.h.
|
inlinestatic |
Disable loopback mode.
p_spi | Pointer to an SPI instance. |
Definition at line 324 of file drivers/spi/spi.h.
|
inlinestatic |
Disable Mode Fault Detection.
p_spi | Pointer to an SPI instance. |
Definition at line 252 of file drivers/spi/spi.h.
|
inlinestatic |
Disable Peripheral Select Decode.
p_spi | Pointer to an SPI instance. |
Definition at line 216 of file drivers/spi/spi.h.
|
inlinestatic |
Disable waiting RX_EMPTY before transfer starts.
p_spi | Pointer to an SPI instance. |
Definition at line 288 of file drivers/spi/spi.h.
|
inlinestatic |
Enable SPI.
p_spi | Pointer to an SPI instance. |
Definition at line 98 of file drivers/spi/spi.h.
|
inlinestatic |
Enable SPI interrupts.
p_spi | Pointer to an SPI instance. |
ul_sources | Interrupts to be enabled. |
Definition at line 461 of file drivers/spi/spi.h.
|
inlinestatic |
Enable loopback mode.
p_spi | Pointer to an SPI instance. |
Definition at line 314 of file drivers/spi/spi.h.
|
inlinestatic |
Enable Mode Fault Detection.
p_spi | Pointer to an SPI instance. |
Definition at line 242 of file drivers/spi/spi.h.
|
inlinestatic |
Enable Peripheral Select Decode.
p_spi | Pointer to an SPI instance. |
Definition at line 206 of file drivers/spi/spi.h.
|
inlinestatic |
Enable waiting RX_EMPTY before transfer starts.
p_spi | Pointer to an SPI instance. |
Definition at line 278 of file drivers/spi/spi.h.
|
inlinestatic |
Get one data to a SPI peripheral.
p_spi | Base address of the SPI instance. |
Definition at line 383 of file drivers/spi/spi.h.
|
inlinestatic |
Get SPI work mode.
p_spi | Pointer to an SPI instance. |
Definition at line 154 of file drivers/spi/spi.h.
|
inlinestatic |
Check if mode fault detection is enabled.
p_spi | Pointer to an SPI instance. |
Definition at line 264 of file drivers/spi/spi.h.
|
inlinestatic |
Get Peripheral Select Decode mode.
p_spi | Pointer to an SPI instance. |
Definition at line 228 of file drivers/spi/spi.h.
|
inlinestatic |
Get Peripheral Select mode.
p_spi | Pointer to an SPI instance. |
Definition at line 192 of file drivers/spi/spi.h.
|
inlinestatic |
Check if SPI waits RX_EMPTY before transfer starts.
p_spi | Pointer to an SPI instance. |
Definition at line 300 of file drivers/spi/spi.h.
|
inlinestatic |
Test if the SPI is enabled.
p_spi | Pointer to an SPI instance. |
Definition at line 356 of file drivers/spi/spi.h.
|
inlinestatic |
Check if the SPI contains a received character.
p_spi | Pointer to an SPI instance. |
Definition at line 429 of file drivers/spi/spi.h.
|
inlinestatic |
Check if all receptions are ready.
p_spi | Pointer to an SPI instance. |
Definition at line 445 of file drivers/spi/spi.h.
|
inlinestatic |
Check if all transmissions are complete.
p_spi | Pointer to an SPI instance. |
1 | if transmissions are complete. |
0 | if transmissions are not complete. |
Definition at line 396 of file drivers/spi/spi.h.
|
inlinestatic |
Check if all transmissions are ready.
p_spi | Pointer to an SPI instance. |
1 | if transmissions are complete. |
0 | if transmissions are not complete. |
Definition at line 413 of file drivers/spi/spi.h.
|
inlinestatic |
Put one data to a SPI peripheral.
p_spi | Base address of the SPI instance. |
data | The data byte to be loaded |
Definition at line 372 of file drivers/spi/spi.h.
|
inlinestatic |
Read SPI interrupt mask.
p_spi | Pointer to an SPI instance. |
Definition at line 484 of file drivers/spi/spi.h.
|
inlinestatic |
Read status register.
p_spi | Pointer to an SPI instance. |
Definition at line 344 of file drivers/spi/spi.h.
|
inlinestatic |
Reset SPI and set it to Slave mode.
p_spi | Pointer to an SPI instance. |
Definition at line 88 of file drivers/spi/spi.h.
|
inlinestatic |
Set Fixed Peripheral Select. Peripheral Chip Select is controlled by SPI_MR.
p_spi | Pointer to an SPI instance. |
Definition at line 180 of file drivers/spi/spi.h.
|
inlinestatic |
Issue a LASTXFER command. The next transfer is the last transfer and after that CS is de-asserted.
p_spi | Pointer to an SPI instance. |
Definition at line 122 of file drivers/spi/spi.h.
|
inlinestatic |
Set SPI to Master mode.
p_spi | Pointer to an SPI instance. |
Definition at line 132 of file drivers/spi/spi.h.
|
inlinestatic |
Set SPI to Slave mode.
p_spi | Pointer to an SPI instance. |
Definition at line 142 of file drivers/spi/spi.h.
|
inlinestatic |
Set Variable Peripheral Select. Peripheral Chip Select can be controlled by SPI_TDR.
p_spi | Pointer to an SPI instance. |
Definition at line 169 of file drivers/spi/spi.h.