From b7189012dc0c69fbb055c9170156e216588530fd Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Tue, 19 Dec 2017 10:37:02 -0500 Subject: [PATCH] Revert "Fix for HobbyKing boards." This reverts commit 75b93b0728d57c642641c354dc99390a6ac43ee8. --- src/drivers/boards/px4fmu-v2/board_config.h | 2 +- src/drivers/boards/px4fmu-v2/px4fmu_init.c | 25 ++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/drivers/boards/px4fmu-v2/board_config.h b/src/drivers/boards/px4fmu-v2/board_config.h index 1b19f245af..baa676ab66 100644 --- a/src/drivers/boards/px4fmu-v2/board_config.h +++ b/src/drivers/boards/px4fmu-v2/board_config.h @@ -398,7 +398,7 @@ #define GPIO_VDD_BRICK_VALID (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN5) #define GPIO_VDD_SERVO_VALID (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN7) #define GPIO_VDD_USB_VALID (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN0) -#define GPIO_VDD_3V3_SENSORS_EN (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN3) +#define GPIO_VDD_3V3_SENSORS_EN (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN3) #define GPIO_VDD_5V_HIPOWER_OC (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTE|GPIO_PIN10) #define GPIO_VDD_5V_PERIPH_OC (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTE|GPIO_PIN15) diff --git a/src/drivers/boards/px4fmu-v2/px4fmu_init.c b/src/drivers/boards/px4fmu-v2/px4fmu_init.c index 5dab22cbe9..76bcb73258 100644 --- a/src/drivers/boards/px4fmu-v2/px4fmu_init.c +++ b/src/drivers/boards/px4fmu-v2/px4fmu_init.c @@ -324,6 +324,10 @@ stm32_boardinitialize(void) /* configure LEDs */ board_autoled_initialize(); + /* Start with the Sensor voltage off */ + + stm32_configgpio(GPIO_VDD_3V3_SENSORS_EN); + /* configure ADC pins */ stm32_configgpio(GPIO_ADC1_IN2); /* BATT_VOLTAGE_SENS */ @@ -335,7 +339,6 @@ stm32_boardinitialize(void) /* configure power supply control/sense pins */ stm32_configgpio(GPIO_VDD_5V_PERIPH_EN); - stm32_configgpio(GPIO_VDD_3V3_SENSORS_EN); stm32_configgpio(GPIO_VDD_BRICK_VALID); stm32_configgpio(GPIO_VDD_SERVO_VALID); stm32_configgpio(GPIO_VDD_USB_VALID); @@ -343,8 +346,9 @@ stm32_boardinitialize(void) stm32_configgpio(GPIO_VDD_5V_PERIPH_OC); - /* configure SPI interfaces */ - stm32_spiinitialize(); + /* configure SPI interfaces is deferred to board_app_initialize + * to delay the sensor power up with out adding a delay + */ } @@ -380,6 +384,7 @@ static struct sdio_dev_s *sdio; __EXPORT int board_app_initialize(uintptr_t arg) { + #if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE) /* run C++ ctors before we go any further */ @@ -417,7 +422,21 @@ __EXPORT int board_app_initialize(uintptr_t arg) #endif // BOARD_HAS_SIMPLE_HW_VERSIONING + /* Bring up the Sensor power */ + + stm32_gpiowrite(GPIO_VDD_3V3_SENSORS_EN, 1); + + /* Ensure the power is on 1 ms before we drive the GPIO pins */ + + usleep(1000); + + /* Now it is ok to drive the pins high so configure SPI GPIO */ + + stm32_spiinitialize(); + + /* configure the high-resolution time/callout interface */ + hrt_init(); param_init();