Macros | |
#define | SPI_WPMR_WPKEY_PASSWD SPI_WPMR_WPKEY((uint32_t) 0x535049) |
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... | |
void | spi_disable_clock (Spi *p_spi) |
Disable SPI clock. More... | |
void | spi_enable_clock (Spi *p_spi) |
Enable SPI clock. More... | |
uint32_t | spi_get_writeprotect_status (Spi *p_spi) |
Indicate write protect status. 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... | |
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... | |
void | spi_set_peripheral_chip_select_value (Spi *p_spi, uint32_t ul_value) |
Set Peripheral Chip Select (PCS) value. 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... | |
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... | |
See Quickstart guide for SAM SPI driver.
The SPI circuit is a synchronous serial data link that provides communication with external devices in Master or Slave mode. Connection to Peripheral DMA Controller channel capabilities optimizes data transfers.
#define SPI_WPMR_WPKEY_PASSWD SPI_WPMR_WPKEY((uint32_t) 0x535049) |
int16_t spi_calc_baudrate_div | ( | const uint32_t | baudrate, |
uint32_t | mck | ||
) |
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).
p_spi | Pointer to an SPI instance. |
ul_pcs_ch | Peripheral Chip Select channel (0~3). |
ul_cs_behavior | Behavior of the Chip Select after transfer. |
void spi_disable_clock | ( | Spi * | p_spi | ) |
void spi_enable_clock | ( | Spi * | p_spi | ) |
uint32_t spi_get_writeprotect_status | ( | Spi * | p_spi | ) |
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.
p_spi | Pointer to an SPI instance. |
data | Pointer to the location where to store the received data word. |
p_pcs | Pointer to fill Peripheral Chip Select Value. |
SPI_OK | on Success. |
SPI_ERROR_TIMEOUT | on Time-out. |
int16_t spi_set_baudrate_div | ( | Spi * | p_spi, |
uint32_t | ul_pcs_ch, | ||
uint8_t | uc_baudrate_divider | ||
) |
void spi_set_bits_per_transfer | ( | Spi * | p_spi, |
uint32_t | ul_pcs_ch, | ||
uint32_t | ul_bits | ||
) |
void spi_set_clock_phase | ( | Spi * | p_spi, |
uint32_t | ul_pcs_ch, | ||
uint32_t | ul_phase | ||
) |
void spi_set_clock_polarity | ( | Spi * | p_spi, |
uint32_t | ul_pcs_ch, | ||
uint32_t | ul_polarity | ||
) |
void spi_set_delay_between_chip_select | ( | Spi * | p_spi, |
uint32_t | ul_delay | ||
) |
void spi_set_peripheral_chip_select_value | ( | Spi * | p_spi, |
uint32_t | ul_value | ||
) |
Set Peripheral Chip Select (PCS) value.
p_spi | Pointer to an SPI instance. |
ul_value | Peripheral Chip Select value. If PCS decode mode is not used, use spi_get_pcs to build the value to use. On reset the decode mode is not enabled. The decode mode can be enabled/disabled by follow functions: spi_enable_peripheral_select_decode, spi_disable_peripheral_select_decode. |
void spi_set_transfer_delay | ( | Spi * | p_spi, |
uint32_t | ul_pcs_ch, | ||
uint8_t | uc_dlybs, | ||
uint8_t | uc_dlybct | ||
) |
void spi_set_writeprotect | ( | Spi * | p_spi, |
uint32_t | ul_enable | ||
) |
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.
p_spi | Pointer to an SPI instance. |
us_data | The data to transmit. |
uc_pcs | Peripheral Chip Select Value while SPI works in peripheral select mode, otherwise it's meaningless. |
uc_last | Indicate whether this data is the last one while SPI is working in variable peripheral select mode. |
SPI_OK | on Success. |
SPI_ERROR_TIMEOUT | on Time-out. |