/* * Initialise the SPI interface to MASTER or SLAVE based on the stacking jumper * */ void stacking_init(bool master) { if (master){ spi_slave_initialize(); } else { spi_master_initialize(); } return; }
/** * \brief Application entry point for SPI example. * * \return Unused (ANSI-C compatibility). */ int main(void) { uint8_t uc_key; /* Initialize the SAM system. */ sysclk_init(); board_init(); /* Initialize the console UART. */ configure_console(); /* Output example information. */ puts(STRING_HEADER); /* Configure SPI interrupts for slave only. */ NVIC_ClearPendingIRQ(SPI_IRQn); NVIC_DisableIRQ(SPI_IRQn); NVIC_SetPriority(SPI_IRQn, 0); NVIC_EnableIRQ(SPI_IRQn); spi_slave_initialize(); spi_xdmac_configure(SPI0); /* Display menu. */ display_menu(); while (1) { scanf("%c", (char *)&uc_key); switch (uc_key) { case 'h': display_menu(); break; case 't': spi_disable_xdmac(); NVIC_ClearPendingIRQ(SPI_IRQn); NVIC_DisableIRQ(SPI_IRQn); NVIC_SetPriority(SPI_IRQn, 0); NVIC_EnableIRQ(SPI_IRQn); spi_master_go(); break; default: /* Set configuration #n. */ if ((uc_key >= '0') && (uc_key <= ('0' + NUM_SPCK_CONFIGURATIONS - 1))) { spi_set_clock_configuration(uc_key - '0'); } break; } } }