Browse Source

px4fmuv4pro:Init GPIO_VDD_3V3_SENSORS_EN off at reset

Insure a 0.0 voltage initial condition on VDD_3V3_SENSORS
  By starting the GPIO_VDD_3V3_SENSORS_EN, low and deferring
  the GPIO init of the slave selects and drdy signals until
  board_app_initialize. We get ~ 180 ms of power off time
  with 0.00 voltage applied to the sensors.
sbg
David Sidrane 8 years ago committed by Lorenz Meier
parent
commit
195468bf06
  1. 2
      src/drivers/boards/px4fmu-v4pro/board_config.h
  2. 21
      src/drivers/boards/px4fmu-v4pro/px4fmu_init.c

2
src/drivers/boards/px4fmu-v4pro/board_config.h

@ -235,7 +235,7 @@ __BEGIN_DECLS @@ -235,7 +235,7 @@ __BEGIN_DECLS
/* Power supply control and monitoring GPIOs */
#define GPIO_VDD_BRICK_VALID (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN5)
#define GPIO_VDD_BRICK2_VALID (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN5)
#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_3V3_PERIPH_EN (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN5)
#define GPIO_VDD_5V_PERIPH_EN (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN10)
#define GPIO_VDD_5V_HIPOWER_EN (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTF|GPIO_PIN4)

21
src/drivers/boards/px4fmu-v4pro/px4fmu_init.c

@ -172,6 +172,9 @@ stm32_boardinitialize(void) @@ -172,6 +172,9 @@ stm32_boardinitialize(void)
/* configure LEDs */
board_autoled_initialize();
/* Start with Power off */
stm32_configgpio(GPIO_VDD_3V3_SENSORS_EN);
/* configure ADC pins */
stm32_configgpio(GPIO_ADC1_IN2); /* BATT_VOLTAGE_SENS */
stm32_configgpio(GPIO_ADC1_IN3); /* BATT_CURRENT_SENS */
@ -181,7 +184,6 @@ stm32_boardinitialize(void) @@ -181,7 +184,6 @@ stm32_boardinitialize(void)
/* configure power supply control/sense pins */
stm32_configgpio(GPIO_VDD_3V3_PERIPH_EN);
stm32_configgpio(GPIO_VDD_3V3_SENSORS_EN);
stm32_configgpio(GPIO_VDD_5V_PERIPH_EN);
stm32_configgpio(GPIO_VDD_5V_HIPOWER_EN);
@ -207,8 +209,12 @@ stm32_boardinitialize(void) @@ -207,8 +209,12 @@ stm32_boardinitialize(void)
stm32_configgpio(GPIO_GPIO4_OUTPUT);
stm32_configgpio(GPIO_GPIO5_OUTPUT);
/* 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
*/
stm32_usbinitialize();
@ -262,6 +268,15 @@ __EXPORT int board_app_initialize(uintptr_t arg) @@ -262,6 +268,15 @@ __EXPORT int board_app_initialize(uintptr_t arg)
# error platform is dependent on c++ both CONFIG_HAVE_CXX and CONFIG_HAVE_CXXINITIALIZE must be defined.
#endif
/* Bring up the Sensor power */
stm32_gpiowrite(GPIO_VDD_3V3_SENSORS_EN, 1);
/* Now it is ok to drvie the pins high
* so configure SPI CPIO */
stm32_spiinitialize();
/* configure the high-resolution time/callout interface */
hrt_init();

Loading…
Cancel
Save