void spi_set_speed( enum speed_setting speed ) { if ( speed == INTERFACE_SLOW ) { setSSPclock(pSPI, 400000); } else { setSSPclock(pSPI, 25000000); } }
/********************************************************************//** * @brief Initializes the SSPx peripheral according to the specified * parameters in the SSP_ConfigStruct. * @param[in] SSPx SSP peripheral selected, should be: * - LPC_SSP0: SSP0 peripheral * - LPC_SSP1: SSP1 peripheral * @param[in] SSP_ConfigStruct Pointer to a SSP_CFG_Type structure * that contains the configuration information for the * specified SSP peripheral. * @return None *********************************************************************/ void SSP_Init(LPC_SSP_TypeDef *SSPx, SSP_CFG_Type *SSP_ConfigStruct) { uint32_t tmp; CHECK_PARAM(PARAM_SSPx(SSPx)); if(SSPx == LPC_SSP0) { /* Set up clock and power for SSP0 module */ CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCSSP0, ENABLE); } else if(SSPx == LPC_SSP1) { /* Set up clock and power for SSP1 module */ CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCSSP1, ENABLE); } else { return; } /* Configure SSP, interrupt is disable, LoopBack mode is disable, * SSP is disable, Slave output is disable as default */ tmp = ((SSP_ConfigStruct->CPHA) | (SSP_ConfigStruct->CPOL) \ | (SSP_ConfigStruct->FrameFormat) | (SSP_ConfigStruct->Databit)) & SSP_CR0_BITMASK; // write back to SSP control register SSPx->CR0 = tmp; tmp = SSP_ConfigStruct->Mode & SSP_CR1_BITMASK; // Write back to CR1 SSPx->CR1 = tmp; // Set clock rate for SSP peripheral setSSPclock(SSPx, SSP_ConfigStruct->ClockRate); }