/** * \brief Configures spi in spi_mode with respect to state */ static void _ConfigureSpi( uint8_t state ) { uint32_t mode = SPI_MR_MSTR ; uint32_t csr0 ; /* spi in slave mode */ if ( state == STATE_UM_SS ) { mode &= (uint32_t) (~(SPI_MR_MSTR)) ; } csr0 = SPI_CSR_BITS_8_BIT | SPI_CSR_DLYBS(0xFF) ; /* spi clock */ if ( state == STATE_US_SM ) { csr0 |= ((BOARD_MCK/USART_SPI_CLK) << 8 ) ; } /* configure SPI mode */ SPI_Configure( SPI, ID_SPI, mode ) ; NVIC_EnableIRQ( SPI_IRQn ) ; /* configure SPI csr0*/ SPI_ConfigureNPCS( SPI, 0, csr0 ) ; SPI_Enable( SPI ) ; }
/** * \brief Initialization of the SPI for communication with ADS7843 component. */ extern void ADS7843_Initialize( void ) { volatile uint32_t uDummy; /* Configure pins */ PIO_Configure(pinsSPI, PIO_LISTSIZE(pinsSPI)); PIO_Configure(pinBusy, PIO_LISTSIZE(pinBusy)); SPI_Configure(BOARD_TSC_SPI_BASE, BOARD_TSC_SPI_ID, SPI_MR_MSTR | SPI_MR_MODFDIS | SPI_PCS(BOARD_TSC_NPCS) /* Value of the SPI configuration register. */ ); SPI_ConfigureNPCS(BOARD_TSC_SPI_BASE, BOARD_TSC_NPCS, SPI_CSR_NCPHA | SPI_CSR_DLYBS(DELAY_BEFORE_SPCK) | SPI_CSR_DLYBCT(DELAY_BETWEEN_CONS_COM) | SPI_CSR_SCBR(0xC8) ); SPI_Enable(BOARD_TSC_SPI_BASE); for (uDummy=0; uDummy<100000; uDummy++); uDummy = REG_SPI_SR; uDummy = REG_SPI_RDR; SendCommand(CMD_ENABLE_PENIRQ); }
void ledsInit(void){ uint8_t i; //init SPI SPI_Configure(SPI0, ID_SPI0, SPI_MR_MSTR | SPI_MR_MODFDIS | SPI_MR_PCS(0)); SPI_ConfigureNPCS(SPI0, 0 , SPI_CSR_NCPHA | SPI_CSR_BITS_12_BIT | SPI_CSR_SCBR(3) | SPI_CSR_DLYBS(2) | SPI_CSR_DLYBCT(0)); //30MHz spi speed SPI_Enable(SPI0); SPI0->SPI_IDR = 0xFFFFFFFF; NVIC_EnableIRQ(SPI0_IRQn); //init pins: SPI gpioSetFun(MISO, GPIO_FUNC_A); gpioSetFun(MOSI, GPIO_FUNC_A); gpioSetFun(SCLK, GPIO_FUNC_A); //init pins: debug LED gpioSetFun(DBGLED, GPIO_FUNC_GPIO); gpioSetDir(DBGLED, 0); gpioSetVal(DBGLED, 0); //init pins: latch gpioSetFun(XLAT, GPIO_FUNC_GPIO); gpioSetDir(XLAT, 0); gpioSetVal(XLAT, 0); //init pins: blanking for(i = 0; i < sizeof(blanks); i++){ gpioSetFun(blanks[i], GPIO_FUNC_GPIO); gpioSetDir(blanks[i], 0); gpioSetVal(blanks[i], 1); } periodicAdd(ledUpdate, 0, 4); }