AVR MEGARF SPI Slave example.
Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries.
#include <conf_spi_slave_example.h>
#include <asf.h>
Macros | |
#define | DATA_BUFFER_SIZE 0x04 |
#define | SLAVE_RD_CMD 0x9F |
#define | SPI_MISO IOPORT_CREATE_PIN(PORTB, 3) |
#define | SPI_MOSI IOPORT_CREATE_PIN(PORTB, 2) |
#define | SPI_SCK IOPORT_CREATE_PIN(PORTB, 1) |
#define | SPI_SS IOPORT_CREATE_PIN(PORTB, 0) |
Functions | |
int | main (void) |
Main function. More... | |
static void | spi_interrupt_callback (void) |
Interrupt callback for SPI interrupt. More... | |
static void | spi_slave_init (volatile void *spi, uint8_t mode) |
Initialize the SPI in slave mode and enable the spi interrupt. More... | |
static bool | spi_slave_transfer (void) |
SPI slave tranfers data to Usart SPI master. More... | |
static bool | spi_usart_master_transfer (void) |
Usart configured as SPI master transfers data to SPI slave. More... | |
Variables | |
uint8_t | count = 0 |
uint8_t | data_master_rx [DATA_BUFFER_SIZE] |
uint8_t | data_master_tx [DATA_BUFFER_SIZE] = {0x11, 0x22, 0x33, 0x44} |
uint8_t | data_slave_rx [DATA_BUFFER_SIZE] |
uint8_t | data_slave_tx [DATA_BUFFER_SIZE] = {0x55, 0x66, 0x77, 0x88} |
bool | data_transfer = false |
struct usart_spi_device | USART_SPI_DEVICE_EXAMPLE |
#define DATA_BUFFER_SIZE 0x04 |
Referenced by spi_slave_transfer(), and spi_usart_master_transfer().
#define SLAVE_RD_CMD 0x9F |
Referenced by spi_interrupt_callback(), and spi_slave_transfer().
#define SPI_MISO IOPORT_CREATE_PIN(PORTB, 3) |
Referenced by spi_slave_init().
#define SPI_MOSI IOPORT_CREATE_PIN(PORTB, 2) |
Referenced by spi_slave_init().
#define SPI_SCK IOPORT_CREATE_PIN(PORTB, 1) |
Referenced by spi_slave_init().
#define SPI_SS IOPORT_CREATE_PIN(PORTB, 0) |
Referenced by spi_slave_init().
|
static |
Interrupt callback for SPI interrupt.
none |
References count, data, data_slave_rx, data_slave_tx, data_transfer, SLAVE_RD_CMD, spi_get(), and spi_put().
Referenced by spi_slave_init().
|
static |
Initialize the SPI in slave mode and enable the spi interrupt.
References gpio_configure_pin, IOPORT_DIR_INPUT, IOPORT_DIR_OUTPUT, IOPORT_INIT_HIGH, PRSPI_bm, spi_enable_interrupt(), spi_enable_slave_mode(), spi_interrupt_callback(), SPI_MISO, SPI_MOSI, SPI_SCK, spi_set_clock_mode(), spi_set_interrupt_callback(), SPI_SS, and sysclk_enable_module().
Referenced by main().
|
static |
SPI slave tranfers data to Usart SPI master.
References count, DATA_BUFFER_SIZE, data_master_rx, data_master_tx, data_slave_tx, SLAVE_RD_CMD, usart_spi_deselect_device(), usart_spi_read_packet(), usart_spi_select_device(), and usart_spi_write_packet().
Referenced by main().
|
static |
Usart configured as SPI master transfers data to SPI slave.
References DATA_BUFFER_SIZE, data_master_tx, data_slave_rx, usart_spi_deselect_device(), usart_spi_select_device(), and usart_spi_write_packet().
Referenced by main().
uint8_t count = 0 |
Referenced by ak8975_get_data(), app_task(), bma020_get_accel(), bma150_get_accel(), bma180_get_accel(), bma220_get_accel(), bma222_get_accel(), bma250_get_accel(), hmc5883l_device_id(), hmc5883l_get_data(), hmc5883l_selftest(), imu3000_get_rotation(), imu3000_get_temperature(), ISR(), itg3200_get_rotation(), itg3200_get_temperature(), kxtf9_get_accel(), peer_req_send_task(), Receive_Message(), sfh5712_get_light(), sfh7770_get_light(), sfh7770_get_proximity(), spi_interrupt_callback(), and spi_slave_transfer().
uint8_t data_master_rx[DATA_BUFFER_SIZE] |
Referenced by spi_slave_transfer().
uint8_t data_master_tx[DATA_BUFFER_SIZE] = {0x11, 0x22, 0x33, 0x44} |
Referenced by spi_slave_transfer(), and spi_usart_master_transfer().
uint8_t data_slave_rx[DATA_BUFFER_SIZE] |
Referenced by spi_interrupt_callback(), and spi_usart_master_transfer().
uint8_t data_slave_tx[DATA_BUFFER_SIZE] = {0x55, 0x66, 0x77, 0x88} |
Referenced by spi_interrupt_callback(), and spi_slave_transfer().
bool data_transfer = false |
Referenced by spi_interrupt_callback().
struct usart_spi_device USART_SPI_DEVICE_EXAMPLE |