Serial Peripheral Interface (SPI) PDC example for SAM.
Copyright (c) 2013-2018 Microchip Technology Inc. and its subsidiaries.
Macros | |
#define | COMM_BUFFER_SIZE 64 |
#define | NUM_SPCK_CONFIGURATIONS 4 |
#define | SPI_CHIP_SEL 0 |
#define | SPI_CLK_PHASE 0 |
#define | SPI_CLK_POLARITY 0 |
#define | SPI_DLYBCT 0x10 |
#define | SPI_DLYBS 0x40 |
#define | STRING_EOL "\r" |
#define | STRING_HEADER |
#define | UART_BAUDRATE 115200 |
Functions | |
static void | configure_console (void) |
Configure the Console UART. More... | |
static void | display_menu (void) |
Display the user menu on the terminal. More... | |
int | main (void) |
Application entry point for SPI PDC example. More... | |
void | SPI_Handler (void) |
Interrupt handler for the SPI slave. More... | |
static void | spi_master_go (void) |
Start SPI transfer test. More... | |
static void | spi_master_initialize (void) |
Initialize SPI as master. More... | |
static void | spi_master_transfer (void *p_tbuf, uint32_t tsize, void *p_rbuf, uint32_t rsize) |
Perform SPI master transfer. More... | |
static void | spi_set_clock_configuration (uint8_t configuration) |
Set the specified SPI clock configuration. More... | |
static void | spi_slave_initialize (void) |
Initialize SPI as slave. More... | |
static void | spi_slave_transfer (void *p_tbuf, uint32_t tsize, void *p_rbuf, uint32_t rsize) |
Set SPI slave transfer. More... | |
Variables | |
Pdc * | g_p_spim_pdc |
Pdc * | g_p_spis_pdc |
static uint8_t | gs_uc_spi_m_rbuffer [COMM_BUFFER_SIZE] |
static uint8_t | gs_uc_spi_m_tbuffer [COMM_BUFFER_SIZE] |
static uint8_t | gs_uc_spi_s_rbuffer [COMM_BUFFER_SIZE] |
static uint8_t | gs_uc_spi_s_tbuffer [COMM_BUFFER_SIZE] |
static const uint32_t | gs_ul_clock_configurations [] |
static uint32_t | gs_ul_spi_clock = 500000 |
#define COMM_BUFFER_SIZE 64 |
Referenced by SPI_Handler(), spi_master_go(), spi_master_initialize(), and spi_slave_initialize().
#define NUM_SPCK_CONFIGURATIONS 4 |
Referenced by display_menu(), and main().
#define SPI_CHIP_SEL 0 |
Referenced by spi_master_initialize(), spi_set_clock_configuration(), and spi_slave_initialize().
#define SPI_CLK_PHASE 0 |
Referenced by spi_master_initialize(), and spi_slave_initialize().
#define SPI_CLK_POLARITY 0 |
Referenced by spi_master_initialize(), and spi_slave_initialize().
#define SPI_DLYBCT 0x10 |
Referenced by spi_master_initialize().
#define SPI_DLYBS 0x40 |
Referenced by spi_master_initialize().
#define STRING_EOL "\r" |
#define STRING_HEADER |
Referenced by main().
#define UART_BAUDRATE 115200 |
|
static |
Configure the Console UART.
References uart_rs232_options::baudrate, CONF_UART, CONF_UART_BAUDRATE, CONF_UART_CHAR_LENGTH, CONF_UART_PARITY, CONF_UART_STOP_BITS, stdio_serial_init(), and sysclk_enable_peripheral_clock().
Referenced by main().
|
static |
int main | ( | void | ) |
Application entry point for SPI PDC example.
References board_init(), configure_console(), display_menu(), NUM_SPCK_CONFIGURATIONS, spi_master_go(), spi_set_clock_configuration(), spi_slave_initialize(), STRING_HEADER, and sysclk_init().
void SPI_Handler | ( | void | ) |
Interrupt handler for the SPI slave.
References COMM_BUFFER_SIZE, spi_read_status(), spi_slave_transfer(), and status.
|
static |
Start SPI transfer test.
References COMM_BUFFER_SIZE, spi_master_initialize(), and spi_master_transfer().
Referenced by main().
|
static |
Initialize SPI as master.
References COMM_BUFFER_SIZE, pdc_disable_transfer(), pmc_enable_periph_clk(), SPI_CHIP_SEL, SPI_CLK_PHASE, SPI_CLK_POLARITY, spi_disable(), spi_disable_mode_fault_detect(), SPI_DLYBCT, SPI_DLYBS, spi_enable(), spi_reset(), spi_set_baudrate_div(), spi_set_bits_per_transfer(), spi_set_clock_phase(), spi_set_clock_polarity(), spi_set_lastxfer(), spi_set_master_mode(), spi_set_peripheral_chip_select_value(), spi_set_transfer_delay(), and sysclk_get_peripheral_hz().
Referenced by spi_master_go().
|
static |
Perform SPI master transfer.
pbuf | Pointer to buffer to transfer. |
size | Size of the buffer. |
References NULL, pdc_disable_transfer(), pdc_enable_transfer(), pdc_rx_init(), pdc_tx_init(), spi_read_status(), pdc_packet::ul_addr, and pdc_packet::ul_size.
Referenced by spi_master_go().
|
static |
Set the specified SPI clock configuration.
configuration | Index of the configuration to set. |
References SPI_CHIP_SEL, spi_set_baudrate_div(), and sysclk_get_peripheral_hz().
Referenced by main().
|
static |
Initialize SPI as slave.
References COMM_BUFFER_SIZE, pdc_disable_transfer(), pmc_enable_periph_clk(), SPI_CHIP_SEL, SPI_CLK_PHASE, SPI_CLK_POLARITY, spi_disable(), spi_disable_mode_fault_detect(), spi_enable(), spi_reset(), spi_set_bits_per_transfer(), spi_set_clock_phase(), spi_set_clock_polarity(), spi_set_peripheral_chip_select_value(), spi_set_slave_mode(), and spi_slave_transfer().
Referenced by main().
|
static |
Set SPI slave transfer.
p_buf | Pointer to buffer to transfer. |
size | Size of the buffer. |
References NULL, pdc_enable_transfer(), pdc_rx_init(), pdc_tx_init(), spi_enable_interrupt(), pdc_packet::ul_addr, and pdc_packet::ul_size.
Referenced by SPI_Handler(), and spi_slave_initialize().
Pdc* g_p_spim_pdc |
Referenced by nm_bus_init().
Pdc * g_p_spis_pdc |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |