/* Start CC3000, must be called after EXT_DRIVER and * SPI_DRIVER are initialized **/ static void initCC3000Hw(void) { chprintf((BaseSequentialStream *)&SERIAL_DRIVER, "wlan_init ..."); cc3000ChibiosWlanInit(&CC3K_SPI_DRIVER, &chCC3SpiConfig, &CC3K_EXT_DRIVER, &chExtConfig, 0,0,0, ccprint); chprintf((BaseSequentialStream *)&SERIAL_DRIVER,"done!\r\n"); chprintf((BaseSequentialStream *)&SERIAL_DRIVER,"wlan_start ..."); wlan_start(0); chprintf((BaseSequentialStream *)&SERIAL_DRIVER,"done!\r\n"); }
static void initialiseCC3000(void) { #ifdef STM32L1XX_MD /* SPI Config */ cc3000SpiConfig.end_cb = NULL; cc3000SpiConfig.ssport = CHIBIOS_CC3000_NSS_PORT; cc3000SpiConfig.sspad = CHIBIOS_CC3000_NSS_PAD; #if 1 cc3000SpiConfig.cr1 = SPI_CR1_CPHA | /* 2nd clock transition first data capture edge */ (SPI_CR1_BR_1 | SPI_CR1_BR_0 ); /* BR: 011 - 2 MHz */ /* Setup SPI pins */ palSetPad(CHIBIOS_CC3000_NSS_PORT, CHIBIOS_CC3000_NSS_PAD); palSetPadMode(CHIBIOS_CC3000_NSS_PORT, CHIBIOS_CC3000_NSS_PAD, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_LOWEST); /* 400 kHz */ palSetPadMode(CHIBIOS_CC3000_SPI_PORT, CHIBIOS_CC3000_SCK_PAD, PAL_MODE_ALTERNATE(5) | /* SPI */ PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_MID2); /* 10 MHz */ palSetPadMode(CHIBIOS_CC3000_SPI_PORT, CHIBIOS_CC3000_MISO_PAD, PAL_MODE_ALTERNATE(5)); /* SPI */ palSetPadMode(CHIBIOS_CC3000_SPI_PORT, CHIBIOS_CC3000_MOSI_PAD, PAL_MODE_ALTERNATE(5) | /* SPI */ PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_MID2); /* 10 MHz */ #else #if 0 cc3000SpiConfig.cr1 = SPI_CR1_CPHA | /* 2nd clock transition first data capture edge */ (SPI_CR1_BR_0); /* BR: 001 - 8 MHz */ #endif cc3000SpiConfig.cr1 = SPI_CR1_CPHA | /* 2nd clock transition first data capture edge */ (SPI_CR1_BR_1 | SPI_CR1_BR_0 ); /* BR: 011 - 2 MHz */ /* Setup SPI pins */ palSetPad(CHIBIOS_CC3000_PORT, CHIBIOS_CC3000_NSS_PAD); palSetPadMode(CHIBIOS_CC3000_PORT, CHIBIOS_CC3000_NSS_PAD, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); palSetPadMode(CHIBIOS_CC3000_PORT, CHIBIOS_CC3000_SCK_PAD, PAL_MODE_ALTERNATE(5) | /* SPI */ PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); palSetPadMode(CHIBIOS_CC3000_PORT, CHIBIOS_CC3000_MISO_PAD, PAL_MODE_ALTERNATE(5)); palSetPadMode(CHIBIOS_CC3000_PORT, CHIBIOS_CC3000_MOSI_PAD, PAL_MODE_ALTERNATE(5) | /* SPI */ PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_MID2); #endif /* Setup IRQ pin */ palSetPadMode(CHIBIOS_CC3000_IRQ_PORT, CHIBIOS_CC3000_IRQ_PAD, PAL_MODE_INPUT); /* Setup WLAN EN pin. With the pin low, we sleep here to make sure CC3000 is off. */ palClearPad(CHIBIOS_CC3000_WLAN_EN_PORT, CHIBIOS_CC3000_WLAN_EN_PAD); palSetPadMode(CHIBIOS_CC3000_WLAN_EN_PORT, CHIBIOS_CC3000_WLAN_EN_PAD, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_LOWEST); /* 400 kHz */ #endif /* STM32L1XX_MD */ chMtxInit(&cc3000ApiMutex); extObjectInit(&CC3000_EXT_DRIVER); spiObjectInit(&CC3000_SPI_DRIVER); chThdSleep(MS2ST(500)); cc3000ChibiosWlanInit(&CC3000_SPI_DRIVER, &cc3000SpiConfig, &CC3000_EXT_DRIVER, &cc3000ExtConfig, 0,0,0, debugPrint); }