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.