Microchip® Advanced Software Framework

spi_slave_example.c File Reference

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
#define SLAVE_RD_CMD   0x9F
#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 void spi_interrupt_callback ( void  )
static

Interrupt callback for SPI interrupt.

Parameters
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 void spi_slave_init ( volatile void *  spi,
uint8_t  mode 
)
static
static bool spi_slave_transfer ( void  )
static
static bool spi_usart_master_transfer ( void  )
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 data_master_rx[DATA_BUFFER_SIZE]

Referenced by spi_slave_transfer().

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

Referenced by spi_interrupt_callback().

struct usart_spi_device USART_SPI_DEVICE_EXAMPLE
Initial value:
= {
.id = USART_SPI_DEVICE_EXAMPLE_ID
}