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.