19.8.1.1.2 Code
The following must be added to the user application:
A sample buffer to send via SPI.
Number of entries in the sample buffer.staticuint8_t buffer[BUF_LENGTH] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13};
#define BUF_LENGTH 20
GPIO pin to use as Slave Select. #define SLAVE_SELECT_PIN EXT1_PIN_SPI_SS_0
A globally available software device instance struct to store the SPI driver state while it is in use. A globally available peripheral slave software device instance struct.structspi_module spi_master_instance;
A function for configuring the SPI.structspi_slave_inst slave;
Add to user application main().voidconfigure_spi_master(void){structspi_config config_spi_master;structspi_slave_inst_config slave_dev_config;/* Configure and initialize software device instance of peripheral slave */spi_slave_inst_get_config_defaults(&slave_dev_config);slave_dev_config.ss_pin = SLAVE_SELECT_PIN;spi_attach_slave(&slave, &slave_dev_config);/* Configure, initialize and enable SERCOM SPI module */spi_get_config_defaults(&config_spi_master);config_spi_master.mux_setting = EXT1_SPI_SERCOM_MUX_SETTING;/* Configure pad 0 for data in */config_spi_master.pinmux_pad0 = EXT1_SPI_SERCOM_PINMUX_PAD0;/* Configure pad 1 as unused */config_spi_master.pinmux_pad1 = PINMUX_UNUSED;/* Configure pad 2 for data out */config_spi_master.pinmux_pad2 = EXT1_SPI_SERCOM_PINMUX_PAD2;/* Configure pad 3 for SCK */config_spi_master.pinmux_pad3 = EXT1_SPI_SERCOM_PINMUX_PAD3;spi_init(&spi_master_instance, EXT1_SPI_MODULE, &config_spi_master);spi_enable(&spi_master_instance);}
system_init();configure_spi_master();
