void init_platform( void ) { button_init_t init; MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP); init.gpio = EasyLink_BUTTON; init.pressed_func = PlatformEasyLinkButtonClickedCallback; init.long_pressed_func = PlatformEasyLinkButtonLongPressedCallback; init.long_pressed_timeout = 5000; button_init( IOBUTTON_EASYLINK, init ); #ifdef USE_MiCOKit_EXT dc_motor_init( ); dc_motor_set( 0 ); rgb_led_init(); rgb_led_open(0, 0, 0); #endif }
void init_platform( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); // MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); //MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP); // Initialise EasyLink buttons MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP ); mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL); MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL ); //MicoFlashInitialize( MICO_SPI_FLASH ); #ifdef USE_MiCOKit_EXT dc_motor_init( ); dc_motor_set( 0 ); rgb_led_init(); rgb_led_open(0, 0, 0); #endif }
static void PinInitForUsart(void) { MicoGpioInitialize(CONTROLLERBUS_PIN_MISO, INPUT_HIGH_IMPEDANCE); MicoGpioInitialize(CONTROLLERBUS_PIN_MOSI, INPUT_HIGH_IMPEDANCE); MicoGpioInitialize(CONTROLLERBUS_PIN_SCK, INPUT_HIGH_IMPEDANCE); MicoGpioInitialize(CONTROLLERBUS_PIN_NSS, INPUT_HIGH_IMPEDANCE); }
OSStatus host_enable_oob_interrupt( void ) { /* Set GPIO_B[1:0] to input. One of them will be re-purposed as OOB interrupt */ MicoGpioInitialize( (mico_gpio_t)WL_GPIO0, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioInitialize( (mico_gpio_t)WL_GPIO1, INPUT_HIGH_IMPEDANCE ); //MicoGpioEnableIRQ( (mico_gpio_t)WL_GPIO1, IRQ_TRIGGER_RISING_EDGE, sdio_oob_irq_handler, 0 ); return kNoErr; }
void init_platform_bootloader( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_HIGH_IMPEDANCE); }
OSStatus host_platform_deinit( void ) { MicoGpioInitialize((mico_gpio_t)WL_RESET, OUTPUT_PUSH_PULL); host_platform_reset_wifi( true ); /* Stop wifi chip in reset */ MicoGpioInitialize((mico_gpio_t)WL_REG, OUTPUT_PUSH_PULL); host_platform_power_wifi( false ); /* Stop wifi chip with regulators off */ platform_reset_wlan_powersave_clock( ); return kNoErr; }
void rgb_led_init(void) { #ifdef USE_RGB_LED_DRIVER_P9813 MicoGpioInitialize( (mico_gpio_t)P9813_CIN, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioInitialize( (mico_gpio_t)P9813_DIN, OUTPUT_OPEN_DRAIN_NO_PULL ); #elif USE_RGB_LED_DRIVER_PWM rgb_led_log("Unimplemented"); #else #error LED driver function is not defined in platform.h #endif }
void init_platform_bootloader( void ) { OSStatus err = kNoErr; MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP); }
void init_platform_bootloader( void ) { MicoGpioInitialize( MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputHigh( MICO_SYS_LED ); MicoGpioInitialize( MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( MICO_RF_LED ); MicoGpioInitialize(BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize(MFG_SEL, INPUT_PULL_UP); #if defined ( USE_MICO_SPI_FLASH ) MicoFlashInitialize( MICO_SPI_FLASH ); #endif }
void init_platform( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP); // Initialise EasyLink buttons MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP ); mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL); MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL ); }
void init_platform( void ) { MicoGpioInitialize( MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputHigh( MICO_SYS_LED ); MicoGpioInitialize( MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( MICO_RF_LED ); // // Initialise EasyLink buttons MicoGpioInitialize( EasyLink_BUTTON, INPUT_PULL_UP ); mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL); MicoGpioEnableIRQ( EasyLink_BUTTON, IRQ_TRIGGER_FALLING_EDGE, _button_EL_irq_handler, NULL ); #if defined ( USE_MICO_SPI_FLASH ) MicoFlashInitialize( MICO_SPI_FLASH ); #endif }
/*------------------------------- user interfaces ----------------------------*/ void rgb_led_init(void) { #ifndef RGB_LED_USE_I2C MicoGpioInitialize( (mico_gpio_t)RGB_LED_CIN, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioInitialize( (mico_gpio_t)RGB_LED_DIN, OUTPUT_OPEN_DRAIN_NO_PULL ); #else // just use i2c sck && sda to send data to control p9813 OSStatus err = kUnknownErr; err = MicoI2cInitialize(&p9813_i2c_device); //require_noerr_action( err, exit, bme280_log("ERROR: MicoI2cInitialize err = %d.", err) ); #endif }
static OSStatus platform_reset_wlan_powersave_clock( void ) { /* Tie the pin to ground */ MicoGpioInitialize( (mico_gpio_t) MICO_GPIO_WLAN_POWERSAVE_CLOCK, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t) MICO_GPIO_WLAN_POWERSAVE_CLOCK ); return kNoErr; }
void init_platform_bootloader( void ) { MicoGpioInitialize( MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputHigh( MICO_SYS_LED ); MicoGpioInitialize( MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( MICO_RF_LED ); MicoGpioInitialize(BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize(MFG_SEL, INPUT_PULL_UP); #ifdef USE_MiCOKit_EXT MicoGpioInitialize( Arduino_D9, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( Arduino_D9 ); #endif }
void init_platform( void ) { button_init_t init; MicoGpioInitialize( MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputHigh( MICO_SYS_LED ); MicoGpioInitialize( MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( MICO_RF_LED ); //Initialise EasyLink buttons init.gpio = EasyLink_BUTTON; init.pressed_func = PlatformEasyLinkButtonClickedCallback; init.long_pressed_func = PlatformEasyLinkButtonLongPressedCallback; init.long_pressed_timeout = 5000; button_init( IOBUTTON_EASYLINK, init ); }
void init_platform( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoSysLed(false); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_PUSH_PULL ); MicoRfLed(false); // Initialise EasyLink buttons //MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP ); //mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL); //MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_FALLING_EDGE, _button_EL_irq_handler, NULL ); // // // Initialise Standby/wakeup switcher // MicoGpioInitialize( Standby_SEL, INPUT_PULL_UP ); // MicoGpioEnableIRQ( Standby_SEL , IRQ_TRIGGER_FALLING_EDGE, _button_STANDBY_irq_handler, NULL); }
void init_platform( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); // Initialise EasyLink buttons MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_HIGH_IMPEDANCE ); mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL); MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL ); #ifdef USE_MiCOKit_EXT dc_motor_init( ); dc_motor_set( 0 ); #endif }
//初始化VS10XX的IO口 void VS_Init(void) { #ifdef USE_MICO_SPI2 if ( kNoErr != MicoSpiInitialize( &mico_spi_VS10XX) ) { /*@-mustdefine@*/ /* Lint: failed - do not define platform peripheral */ return; /*@+mustdefine@*/ } #else MicoGpioInitialize((mico_gpio_t)VS_SO_PIN, INPUT_PULL_UP); MicoGpioInitialize( (mico_gpio_t)VS_SI_PIN, OUTPUT_PUSH_PULL ); MicoGpioInitialize( (mico_gpio_t)VS_SCK_PIN, OUTPUT_PUSH_PULL ); #endif MicoGpioInitialize((mico_gpio_t)VS_DQ_PIN, INPUT_PULL_UP); MicoGpioInitialize( (mico_gpio_t)VS_RST_PIN, OUTPUT_PUSH_PULL ); MicoGpioInitialize( (mico_gpio_t)VS_XCS_PIN, OUTPUT_PUSH_PULL ); MicoGpioInitialize( (mico_gpio_t)VS_XDCS_PIN, OUTPUT_PUSH_PULL ); return; }
void init_platform_bootloader( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_HIGH_IMPEDANCE); #ifdef USE_MiCOKit_EXT dc_motor_init( ); dc_motor_set( 0 ); rgb_led_init(); rgb_led_open(0, 0, 0); #endif }
//按键初始化函数 void KEY_Init( mico_gpio_irq_handler_t handler) { MicoGpioInitialize((mico_gpio_t)KEY_PIN, INPUT_HIGH_IMPEDANCE); if (handler != NULL) { MicoGpioEnableIRQ( (mico_gpio_t)KEY_PIN, IRQ_TRIGGER_BOTH_EDGES, handler, NULL ); } }
void init_platform( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); // Initialise EasyLink buttons MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP ); mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL); MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL ); // Initialise Standby/wakeup switcher MicoGpioInitialize( (mico_gpio_t)Standby_SEL, INPUT_PULL_UP ); MicoGpioEnableIRQ( (mico_gpio_t)Standby_SEL , IRQ_TRIGGER_FALLING_EDGE, _button_STANDBY_irq_handler, NULL); MicoFlashInitialize( MICO_SPI_FLASH ); }
//i2c.setup(id,pinSDA, pinSCL) static int i2c_setup( lua_State* L ) { unsigned id = luaL_checkinteger( L, 1 ); unsigned sda = luaL_checkinteger( L, 2 ); unsigned scl = luaL_checkinteger( L, 3 ); if (id !=0) return luaL_error( L, "id should assigend 0" ); MOD_CHECK_ID( gpio, sda ); MOD_CHECK_ID( gpio, scl ); pinSDA = wifimcu_gpio_map[sda]; pinSCL = wifimcu_gpio_map[scl]; MicoGpioFinalize((mico_gpio_t)pinSDA); MicoGpioInitialize((mico_gpio_t)pinSDA,(mico_gpio_config_t)OUTPUT_PUSH_PULL); MicoGpioOutputHigh( (mico_gpio_t)pinSDA); MicoGpioFinalize((mico_gpio_t)pinSCL); MicoGpioInitialize((mico_gpio_t)pinSCL,(mico_gpio_config_t)OUTPUT_PUSH_PULL); MicoGpioOutputHigh( (mico_gpio_t)pinSCL); return 0; }
OSStatus mico_platform_init( void ) { platform_log( "Platform initialised" ); // Initialise EasyLink buttons MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP ); mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL); MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL ); return kNoErr; }
void button_init( int index, button_init_t init) { context[index].gpio = init.gpio; context[index].start_time = 0; context[index].timeout = init.long_pressed_timeout; context[index].pressed_func = init.pressed_func; context[index].long_pressed_func = init.long_pressed_func; MicoGpioInitialize( init.gpio, INPUT_PULL_UP ); mico_init_timer( &context[index]._user_button_timer, init.long_pressed_timeout, button_timeout_handler_array[index], &context[index] ); MicoGpioEnableIRQ( init.gpio, IRQ_TRIGGER_FALLING_EDGE, button_irq_handler_array[index], &context[index] ); }
bool ControllerBusInit(void) { OSStatus err; // f411 reset pin initialize MicoGpioInitialize(F411_RESET_PIN, OUTPUT_OPEN_DRAIN_PULL_UP); // V2 PCB, spi pin reused for uart, can be remove at V3 PCB PinInitForUsart(); err = user_uartInit(); if(err != kNoErr) { AaSysLogPrint(LOGLEVEL_ERR, "mico uart initialize failed"); return false; } // start the uart receive thread to handle controller bus data err = mico_rtos_create_thread(&bus_recv_handle, MICO_APPLICATION_PRIORITY, "CBusProtoHandler", ControllerBusProtocolHandler, CONTROLLERBUS_STACK_SIZE_RINGBUFFER_THREAD, NULL); if(err != kNoErr) { AaSysLogPrint(LOGLEVEL_ERR, "create controller bus protocol handler thread failed"); return false; } else { AaSysLogPrint(LOGLEVEL_INF, "create controller bus protocol handler thread success"); } // start the uart send thread to handle request message err = mico_rtos_create_thread(&bus_send_handle, MICO_APPLICATION_PRIORITY, "BusRequestSend", ControllerBusMsgHandler, CONTROLLERBUS_STACK_SIZE_RINGBUFFER_THREAD, NULL); if(err != kNoErr) { AaSysLogPrint(LOGLEVEL_ERR, "create controller bus message handler thread failed"); return false; } else { AaSysLogPrint(LOGLEVEL_INF, "create controller bus message handler thread success"); } AaSysLogPrint(LOGLEVEL_INF, "controller bus initialize success"); return true; }
void host_platform_enable_high_speed_sdio( void ) { // SDIO_InitTypeDef sdio_init_structure; // sdio_init_structure.SDIO_ClockDiv = (uint8_t) 0; /* 0 = 24MHz if SDIO clock = 48MHz */ // sdio_init_structure.SDIO_ClockEdge = SDIO_ClockEdge_Rising; // sdio_init_structure.SDIO_ClockBypass = SDIO_ClockBypass_Disable; // sdio_init_structure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable; //#ifndef SDIO_1_BIT // sdio_init_structure.SDIO_BusWide = SDIO_BusWide_4b; //#else // sdio_init_structure.SDIO_BusWide = SDIO_BusWide_1b; //#endif // sdio_init_structure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable; // SDIO_DeInit( ); // SDIO_Init( &sdio_init_structure ); // SDIO_SetPowerState( SDIO_PowerState_ON ); // SDIO_ClockCmd( ENABLE ); // sdio_enable_bus_irq( ); MicoGpioInitialize( (mico_gpio_t)SDIO_INT, INPUT_HIGH_IMPEDANCE ); MicoGpioEnableIRQ( (mico_gpio_t)SDIO_INT, IRQ_TRIGGER_FALLING_EDGE, sdio_irq_handler, 0 ); }
OSStatus MicoSpiFinalize( const mico_spi_device_t* spi ) { GPIO_InitTypeDef gpio_init_structure; MicoMcuPowerSaveConfig(false); /* De-init and disable SPI */ SPI_Cmd( spi_mapping[ spi->port ].spi_regs, DISABLE ); SPI_I2S_DeInit( spi_mapping[ spi->port ].spi_regs ); /* Disable SPI peripheral clock */ spi_mapping[spi->port].peripheral_clock_func( spi_mapping[spi->port].peripheral_clock_reg, DISABLE ); /* Reset all pins to input floating state */ gpio_init_structure.GPIO_Mode = GPIO_Mode_IN; // Input gpio_init_structure.GPIO_PuPd = GPIO_PuPd_NOPULL; // Floating (No-pull) gpio_init_structure.GPIO_OType = GPIO_OType_PP; // Arbitrary. Only applicable for output gpio_init_structure.GPIO_Speed = GPIO_Speed_100MHz; gpio_init_structure.GPIO_Pin = ((uint32_t) (1 << spi_mapping[spi->port].pin_clock->number)) | ((uint32_t) (1 << spi_mapping[spi->port].pin_miso->number )) | ((uint32_t) (1 << spi_mapping[spi->port].pin_mosi->number )); GPIO_Init( spi_mapping[spi->port].pin_clock->bank, &gpio_init_structure ); /* Reset CS pin to input floating state */ MicoGpioInitialize( spi->chip_select, INPUT_HIGH_IMPEDANCE ); if ( spi == current_spi_device ) { current_spi_device = NULL; } MicoMcuPowerSaveConfig(true); return kNoErr; }
void user_key1_init(void) { MicoGpioInitialize( (mico_gpio_t)USER_KEY1, INPUT_PULL_UP ); mico_init_timer(&_user_key1_timer, user_key1_long_press_timeout, _user_key1_timeout_handler, NULL); MicoGpioEnableIRQ( (mico_gpio_t)USER_KEY1, IRQ_TRIGGER_BOTH_EDGES, _user_key1_irq_handler, NULL ); }
OSStatus MicoSpiInitialize( const mico_spi_device_t* spi ) { GPIO_InitTypeDef gpio_init_structure; OSStatus result; SPI_InitTypeDef spi_init; check_string( spi != NULL, "Bad args"); MicoMcuPowerSaveConfig(false); /* Init SPI GPIOs */ gpio_init_structure.GPIO_Mode = GPIO_Mode_AF; gpio_init_structure.GPIO_OType = GPIO_OType_PP; gpio_init_structure.GPIO_Speed = GPIO_Speed_100MHz; gpio_init_structure.GPIO_Pin = ((uint32_t) (1 << spi_mapping[spi->port].pin_clock->number)) | ((uint32_t) (1 << spi_mapping[spi->port].pin_miso->number )) | ((uint32_t) (1 << spi_mapping[spi->port].pin_mosi->number )); GPIO_Init( spi_mapping[spi->port].pin_clock->bank, &gpio_init_structure ); /* Init the chip select GPIO */ MicoGpioInitialize(spi->chip_select, OUTPUT_PUSH_PULL); MicoGpioOutputHigh(spi->chip_select); GPIO_PinAFConfig( spi_mapping[spi->port].pin_clock->bank, spi_mapping[spi->port].pin_clock->number, spi_mapping[spi->port].gpio_af ); GPIO_PinAFConfig( spi_mapping[spi->port].pin_miso->bank, spi_mapping[spi->port].pin_miso->number, spi_mapping[spi->port].gpio_af ); GPIO_PinAFConfig( spi_mapping[spi->port].pin_mosi->bank, spi_mapping[spi->port].pin_mosi->number, spi_mapping[spi->port].gpio_af ); /* Configure baudrate */ result = wiced_spi_configure_baudrate( spi->speed, &spi_init.SPI_BaudRatePrescaler ); if ( result != kNoErr ) { return result; } /* Configure data-width */ if ( spi->bits == 8 ) { spi_init.SPI_DataSize = SPI_DataSize_8b; } else if ( spi->bits == 16 ) { if ( spi->mode & SPI_USE_DMA ) { /* 16 bit mode is not supported for a DMA */ return kGeneralErr; } spi_init.SPI_DataSize = SPI_DataSize_16b; } else { /* Requested mode is not supported */ return kOptionErr; } /* Configure MSB or LSB */ if ( spi->mode & SPI_MSB_FIRST ) { spi_init.SPI_FirstBit = SPI_FirstBit_MSB; } else { spi_init.SPI_FirstBit = SPI_FirstBit_LSB; } /* Configure mode CPHA and CPOL */ if ( spi->mode & SPI_CLOCK_IDLE_HIGH ) { spi_init.SPI_CPOL = SPI_CPOL_High; } else { spi_init.SPI_CPOL = SPI_CPOL_Low; } if ( spi->mode & SPI_CLOCK_RISING_EDGE ) { spi_init.SPI_CPHA = ( spi->mode & SPI_CLOCK_IDLE_HIGH )? SPI_CPHA_2Edge : SPI_CPHA_1Edge; } else { spi_init.SPI_CPHA = ( spi->mode & SPI_CLOCK_IDLE_HIGH )? SPI_CPHA_1Edge : SPI_CPHA_2Edge; } spi_init.SPI_Direction = SPI_Direction_2Lines_FullDuplex; spi_init.SPI_Mode = SPI_Mode_Master; spi_init.SPI_NSS = SPI_NSS_Soft; SPI_CalculateCRC( spi_mapping[spi->port].spi_regs, DISABLE ); /* Enable SPI peripheral clock */ spi_mapping[spi->port].peripheral_clock_func( spi_mapping[spi->port].peripheral_clock_reg, ENABLE ); /* Init and enable SPI */ SPI_Init( spi_mapping[spi->port].spi_regs, &spi_init ); SPI_Cmd ( spi_mapping[spi->port].spi_regs, ENABLE ); MicoMcuPowerSaveConfig(true); current_spi_device = (mico_spi_device_t*)spi; return kNoErr; }
void rgb_led_init(void) { MicoGpioInitialize( (mico_gpio_t)P9813_PIN_CIN, OUTPUT_PUSH_PULL ); MicoGpioInitialize( (mico_gpio_t)P9813_PIN_DIN, OUTPUT_PUSH_PULL ); }